What the content moderator costs
The moderator is one of the cheaper systems in this whole series. Each item runs through a fast rule pass that calls no model, gets one record written, and most of the time stops right there. Only the borderline middle costs a Bedrock call, and Bedrock fires again just once a week for the digest. At typical SMB volume, the bill is a couple of dollars a month, fixed cost essentially zero.
Key takeaways
- Around $2.40/month at typical SMB volume (around 200 items a day).
- Fixed AWS cost is essentially zero. No always-on compute, no NAT Gateway, no API Gateway.
- The rule pass settles most items — no model calls on the easy ones.
- Bedrock fires only on the borderline middle and the weekly digest.
- At 500 items a day the bill is around $5. At 2,000 a day it’s around $14.
Cost at three volumes
Where the dollars actually go
Lambda runtime (the bulk). Every item runs the intake and the rule pass — clean the text, write one record, check the lists. That’s a few milliseconds each. The checker Lambda runs only for borderline items, the dispatch Lambda for held and flagged ones, the Function URL Lambda for each moderator action, and the digest Lambda once a week. Add it all up and at 200 items a day the Lambda total is well under a dollar; at 2,000 a day it’s a couple of dollars.
DynamoDB on-demand. Four small tables: cm-items, cm-queue, cm-audit, and the worked-examples store. One write per item plus a few reads per borderline item and per action. Pennies a month at SMB volume.
S3 + storage. The raw webhook payloads and the originals of edited items. A few hundred KB to a few MB at SMB volume. Effectively free.
SQS. The review queue plus its dead-letter backstop. The first million requests a month are free; an SMB stays well inside that. Pennies at most.
EventBridge. The verdict events and the weekly-digest schedule. A handful of events per held item. Pennies.
SES. Outbound for the digest emails and any email-fallback cards: $0.10 per thousand sent. A few cents a year at this scale.
Bedrock (only on the borderline middle). The rule pass settles most items with no model. Only the genuinely ambiguous ones reach Haiku 4.5: a few hundred input tokens (the item plus the rules and a few examples) and a short JSON verdict out, so a small fraction of a cent per call. The share of items that need the model is what drives this slice — tune the rule pass and the threshold and it moves. The weekly digest is one larger call summarizing the week’s holds, removals, and overturns; a couple of cents.
What doesn’t cost money
- API Gateway. Replaced by Lambda Function URLs for the inbound webhook and the action buttons.
- NAT Gateway. Nothing is in a VPC. No NAT, no $32/month minimum.
- Always-on compute. No EC2, no Fargate. Each Lambda runs only when an item or a click arrives.
- A model on every item. The rule pass handles the easy majority for free; Bedrock reads only the hard middle.
- A Knowledge Base. The house rules are a short doc fed straight into the prompt — no embeddings, no vector store needed.
How the cost scales
Lambda runtime and DynamoDB grow roughly with item count, because every item runs the rule pass and gets a record. Bedrock grows with the borderline count — a fraction of the total — so it rises more slowly than volume. SES and the fixed services barely move. So the bill at 5,000 items a day is around $35; at 10,000 a day it’s around $70. Past those volumes you’d tighten the rule pass so fewer items reach the model, but that’s a tuning knob, not a redesign.
Set an AWS Budgets alarm at $25/month so anything unusual — a spam flood, a runaway loop — pages you before the bill matters. The moderator’s normal-volume bill stays well under that ceiling.
Last post in the series: the engineering reference. Same system, drawn for engineers — service names, Lambda inventory, IAM scopes, DynamoDB schemas, the SQS review queue, and the EventBridge config.
All posts