Deadline reminder
A serverless reminder that keeps a simple calendar of every recurring obligation your business has to meet — payroll runs, tax filings, license and permit renewals, insurance payments, compliance dates; reminds the right person early enough to act, with the right lead time for each type; escalates to the owner if one is about to be missed. The owner can mark it done, snooze, or ack-only right from the reminder. Seven posts on the same system — one diagram at a time — with an engineering reference at the end.
-
01
A deadline reminder on AWS for a few dollars a month
The whole system on one page — a deadline intake, a checker, and a sender, plus the four moves they share for every recurring obligation.
-
02
How a deadline gets on the calendar
Three lanes feed the calendar — the Drive sheet itself, an inbox-forwarding lane that parses notices into proposed rows for one-tap approval, and an hourly calendar import for events tagged
#deadline. -
03
How a deadline comes due
A daily check reads the calendar, computes days-to-due per deadline, compares against per-type lead-time chains in the rules doc, and picks one of four moves: clear, first reminder, follow-up, escalate. No model on the check.
-
04
How a deadline reminder reaches its owner
Owner resolution per deadline, quiet hours, holiday calendars, Slack DMs with full context, email fallback, and the four guardrails between the checker’s chosen move and the actual reminder landing.
-
05
How a deadline gets marked done
Three actions on the Done button: done (roll the next due date forward, fresh chain), snooze (delay without dismissing, capped at three per cycle), and ack-only (silence this cycle without rolling the date). Every action is logged.
-
06
What the deadline reminder costs
Pennies a month at SMB volume. The checker runs once a day, calls no models on the check, and only fires Bedrock on the inbox parsing lane and the monthly summary.
-
07
Engineering reference: the deadline reminder architecture
Same system, drawn purely for engineers. Service names, resource identifiers, region, Bedrock model IDs, Lambda inventory, IAM scopes, the SES inbound rule set, EventBridge Scheduler config, and the DynamoDB schemas.
Frequently asked questions
- What is a deadline reminder?
- A small serverless system that keeps a simple calendar of every recurring obligation your business has to meet — payroll runs, tax filings, license and permit renewals, insurance payments, and compliance dates. It reminds the person responsible early enough to act, with the right lead time for each type; escalates to the owner if a deadline is about to be missed; and confirms when each one is handled. This is about repeating obligations with owners and lead times, not one-off document expiry.
- How much does it cost to run?
- About $1.60/month at typical small-business volume (around 100 recurring deadlines). The fixed cost is essentially zero. The variable cost is dominated by the daily Lambda check that reads every deadline; Bedrock fires only on the inbox-forwarding lane and the monthly summary, so they’re small slivers. At 2,000 tracked deadlines the bill lands around $12.
- Which AWS services does it use?
- Lambda (Python 3.14, arm64) with Function URLs for the done-and-snooze endpoint, EventBridge Scheduler for the daily check and deferred-dispatch one-offs, DynamoDB on-demand, S3 (with versioning), SES inbound + outbound, Secrets Manager, CloudWatch Logs (7-day retention), AWS Budgets, and Bedrock (Claude Haiku 4.5 via Global cross-Region inference) for the inbox parsing and monthly summary. No API Gateway, no NAT Gateway, no always-on compute, no Knowledge Base.
- Where does the deadline calendar live?
- In a Google Sheet in a Drive folder. One row per recurring deadline with name, type, owner email, how often it repeats, the next due date, the lead time, and a link to any reference. A small
drive-syncLambda mirrors the sheet to S3 every 15 minutes; the system reads from S3 to keep Drive API calls predictable and to get S3 versioning for free. - Does the deadline reminder use AI?
- Sparingly. The daily check uses no AI — it’s plain Python that reads dates and decides on a move. Bedrock Haiku 4.5 fires only when somebody forwards a notice (a tax letter or a renewal form, parsed into a proposed deadline row for human approval) and once a month for the owner summary. Most of the system is deterministic by design.
- How does a reminder reach me without being noisy?
- Each type has its own lead-time chain in the rules doc — payroll gets 5/2/1 days, tax filings get 30/14/7/2, license renewals get 60/30/14/7. Reminders respect quiet hours (default 6pm–8am local) and the holiday calendar. A deadline marked done stops reminding until the next cycle. Ack-only stops this cycle without rolling the date. Snooze defers without dismissing; you get up to three snoozes per cycle before the system escalates anyway.
- What happens when I act on a reminder?
- Three buttons on every reminder: Done records that this cycle is handled; the system rolls the next due date forward by the repeat interval and starts a fresh chain. Snooze defers N days (default 3). Ack-only silences this cycle without rolling the date. Every action is recorded in the
dr-auditDynamoDB table with timestamp, deadline, action, by-user, and a before-and-after snapshot, so changes are reversible and the trail is auditable for years.