What the review request sender costs
A system that costs more than the reviews it earns is a gadget. This post is the cost breakdown: every AWS service this design touches, what each adds up to at around 150 completed jobs a month, and why the total lands near $1.90 — plus what happens to the bill when the volume goes up tenfold.
Key takeaways
- About $1.90/month at roughly 150 completed jobs, and the fixed cost is almost nothing — nothing runs when no jobs are finishing.
- The biggest line is Bedrock: two small calls per job (one to grade, one to write), and even that is well under a pound.
- The only real fixed cost is Secrets Manager: two platform secrets at $0.40 each, billed whether or not a job comes in.
- At ten times the volume (around 1,500 completed jobs) the bill lands near $12 — it scales with use, not with idle time.
- SMS carrier fees vary by country and provider; the numbers here are a UK-leaning estimate, not a fixed AWS price list.
Where the money goes
The system is serverless end to end, so there’s no instance ticking over between jobs and no idle bill. You pay for a review request only when a job finishes. At a typical small-business volume — call it 150 completed jobs a month, each grading a signal and most of them sending one ask, with a few private-feedback diversions and escalations on top — here’s the whole bill, line by line.
| AWS service | What it does here | Monthly |
|---|---|---|
| Secrets Manager | Two platform secrets — webhook signing key, review/messaging API key ($0.40 each) | $0.80 |
| Bedrock (Claude Haiku 4.5) | Two small calls per job — grade the signal, compose the ask (~150 each) | $0.50 |
| SES | Most review asks and feedback links by email, plus escalation to your team | $0.20 |
| SNS (SMS) | Asks sent by text where that’s the customer’s channel (a country-varying estimate) | $0.20 |
| DynamoDB (on-demand) | Jobs, requests, customers mirror, opt-out, audit — small reads and writes | $0.10 |
| CloudWatch Logs | Function logs, 7-day retention | $0.05 |
| Lambda (Python 3.14, arm64) | Webhook, sender, escalator, sweep, sync | $0.02 |
| SQS + DLQ | Buffering between the webhook and the slower model and send calls | $0.02 |
| EventBridge Scheduler | One-off per-request send schedules, plus the safety-net sweep and sync | $0.01 |
| AWS Budgets | Cost alarm (first two budgets are free) | $0.00 |
| Total | ~150 completed jobs/month | $1.90 |
The shape of that bill is the point. The only line that costs money while the system sleeps is Secrets Manager — two secrets at $0.40 each, $0.80 a month no matter what, which is over a third of the total at this volume. Everything else is genuinely usage-priced and rounds to zero at idle. The line that does the most work is Bedrock, because this system thinks twice per job — once to grade the sentiment signal and once to write the ask — yet even two Haiku calls a job come to half a dollar a month. The messages themselves split across email (cheap) and the odd SMS (a few pence each), and all the machinery doing the real work of catching, scheduling, and routing together costs less than the Bedrock line alone.
The line that isn’t purely AWS
The SMS line deserves a caveat. AWS prices outbound SMS per message, and the exact rate depends on the destination country and the mobile carrier — a UK mobile is a few pence, other countries differ, and some routes add carrier surcharges. The $0.20 here assumes most asks go by email through SES (fractions of a cent) and only a minority go by text; if you send every ask by SMS this line rises, and if your review platform sends the message on your behalf it moves onto their invoice and off this table entirely. Either way it’s the same handful of pence per text, and it’s the one line worth watching as volume grows — which is exactly why the AWS Budgets alarm sits on top of the whole thing.
What ten times the volume costs
Push this to a busy business — 1,500 completed jobs a month, ten times the volume — and the bill lands near $12, not $19. It’s sub-linear because the fixed lines don’t move: Secrets Manager stays at $0.80, the schedules stay at a cent, and AWS Budgets stays free. What scales is the genuinely usage-priced work — about $5 of Bedrock for ten times the grade-and-compose calls, roughly $2 of email, another $2 or so of SMS, and a few dollars more spread across DynamoDB, logs, and Lambda. Even then, the two model calls per job dominate, and all the machinery in between stays close to free.
The honest way to read this: the AWS bill is rounding error against what a review is worth. A single extra five-star review for a valeter, a physio clinic, or a boiler engineer pulls in customers worth far more than $1.90 a month — and a single one-star quietly avoided is worth more still. Even at $12 a month for a busy shop, the system pays for itself the first time it turns a happy customer into a public review or catches an unhappy one before they reach for the stars — and every unhappy customer it diverts still gets a human ringing them back, with the whole story already gathered.
Design rules that shaped the cost
- Pay per completed job, not per hour. No always-on compute means no idle bill.
- Spend the model sparingly. Two Haiku calls per job — one to grade, one to phrase — and never to decide or to route.
- Cheap work stays cheap. Catching, scheduling, and routing are plain Lambda and DynamoDB, cents at this scale.
- Know your one fixed cost. Secrets Manager is the only line that bills while the system sleeps.
- Watch the messaging lines. SMS is the part whose price varies most, so the Budgets alarm sits right on top of it.