Part 6 of 7 · Booking assistant series ~3 min read

What the booking assistant costs

A coffee a month at typical SMB volume. The fixed cost is roughly nothing. The variable cost is dominated by how many requests need the AI parser — not the easy structured ones the web-form lane already handled.

Cost structure: three tiers A horizontal flow with three labelled tiers showing where the bill actually goes. From left to right: Tier 1, Always-free or near it — Lambda invocations, S3 storage at small volume, DynamoDB pay-per-request reads and writes for claim rows, CloudWatch log retention at 7 days, S3 vector index for service rules, EventBridge rules for reminders, Google Calendar API freebusy and events.insert (free at SMB volumes). Tier 2, Per-request pennies — Bedrock Haiku tokens for the parser when free-text path is used (typically a fraction of a cent per parsed request), SES outbound for confirmations and reminders (about $0.10 per 1000 emails), SES inbound for email-path requests (about $0.10 per 1000 emails). Tier 3, Optional — SMS reminders via SNS or a third-party SMS API (cents per message, only if you turn them on), Twilio number for an SMS lane (a few dollars a month), domain identity for SES outbound (free, one-time setup). A bottom note reads: a typical SMB at 200 booking requests a month lands well under five dollars total — usually under three. tier 1 Always-free or near it Lambda invocations ~ $0.00 S3 storage ~ $0.05 DynamoDB (claim table) ~ $0.05 CloudWatch (7-day) ~ $0.10 EventBridge schedules ~ $0.00 Google Calendar API tier 2 Per-request pennies Bedrock Haiku (parser) ~ $0.001 / request SES outbound $0.10 / 1000 emails SES inbound $0.10 / 1000 emails S3 vector queries ~ fraction of a cent tier 3 Optional SMS reminders cents/message, off by default SES domain identity free Workspace OAuth free Custom domain your registrar ~ 200 requests a month → under five dollars total, often under three.
Fig 6. Three tiers of cost. The bill scales smoothly with request volume; the floor is nearly zero.

The fixed cost is roughly nothing

Like the email assistant in the previous series, the booking assistant has no fixed monthly floor. There’s no per-seat licence to pay. If the form is quiet for a week, the bill for that week is basically zero. Lambda, S3, DynamoDB, EventBridge, and CloudWatch all sit in or near the always-free tier at the volumes the assistant uses, and the vector index for the service rules is small enough to round to a few cents a month.

Google Calendar’s freebusy and events.insert APIs are free at small-business volumes — the published quotas are far above any normal booking flow. There’s no separate calendar product to subscribe to.

The variable cost is per-request pennies

Three things scale with request volume:

  • SES inbound — only used by the email lane, about $0.10 per 1,000 emails received. (Pricing is technically per 256 KB chunk — a short text email is one chunk; a 700 KB attachment counts as three. Short booking enquiries fit in one chunk each.) The web-form lane doesn’t touch SES inbound at all.
  • SES outbound — about $0.10 per 1,000 emails sent. Each successful booking sends roughly three emails (confirmation + two reminders), so a hundred bookings is around three cents.
  • Bedrock Haiku tokens — only the email lane runs the parser, and only the parser uses the model. A 100-request month with 30% on the email lane lands at a few cents of model spend.

Add it up: most small businesses end up between $1 and $5 a month total. The assistant pays for itself the first weekend you don’t spend an hour playing email tag to confirm Saturday’s appointments.

Three traps you’re avoiding

  • Per-seat scheduling apps. Most “booking app” products charge $20–$50 per inbox or per location per month, no matter how few bookings you take. You’re trading a flat subscription for pay-per-use that mostly comes in pennies.
  • Running the parser on web-form requests. The fast-path lane skips the AI entirely when the form is filled in. A simple setup that doesn’t do this pays the model to read fields it could just have read directly; you don’t.
  • Caching freebusy in a separate database. The calendar is queried at request time. No drift, no two-sources-of-truth bugs, no reconciliation job.

When this stops being cheap

The math changes at high volume on the email lane. A busy operations inbox at thousands of free-text booking requests a month might land at $20–$40 in model spend — still cheaper than the per-seat products, but no longer coffee money. At that point, nudging more customers to the web form (which is also faster for them) takes the bill back down. The form is the cheapest path for both you and the customer.

For everyone below that — and that’s most small businesses — the bill is small enough that a $10 monthly AWS Budget alarm catches anything strange before you’d notice on the credit card.

In plain words

The fixed bill is nearly zero. The variable bill is cents per request, mostly only on the email lane. A typical small-business setup runs at coffee-money for the whole month. Set a budget alarm that fits your expected volume and the bill can’t surprise you.

All posts