Part 6 of 7 · Content moderator series ~3 min read

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

Monthly cost at three daily-item volumes, broken out by component A vertical stacked-bar chart showing monthly cost in US dollars at three daily-item volumes. The leftmost bar represents 200 items a day and shows a total around $2.40, dominated by the everything-else slice (Lambda, DynamoDB, S3, SQS, EventBridge, CloudWatch) with a small slice for Bedrock and a tiny sliver for SES and for the fixed services. The middle bar represents 500 items a day and shows a total around $5, with the same shape — the everything-else slice grows roughly with item count because every item runs the rule pass, and the Bedrock slice grows because more items fall in the borderline middle. The rightmost bar represents 2,000 items a day and shows a total around $14, with everything-else still the largest slice and Bedrock a clearly visible band; SES and the fixed services stay small in absolute terms. Below the chart is a legend explaining the four sections of each bar: Bedrock (only on the borderline middle and the weekly digest), SES (digest emails and notify), AWS Budgets and Secrets Manager (small fixed amounts), and an everything-else bucket for Lambda runtime, DynamoDB on-demand, S3, SQS, EventBridge, and CloudWatch. A note at the bottom: the rule pass keeps the model bill small — most items never reach Bedrock at all. $0 $5 $10 $15 $20 200 / day ~$2.40 500 / day ~$5 2,000 / day ~$14 Bedrock (borderline middle + weekly digest) SES (digest emails + notify) AWS Budgets + Secrets Manager (fixed) Everything else (Lambda, DDB, S3, SQS, EventBridge, CloudWatch) The rule pass keeps the model bill small — most items never reach Bedrock at all.
Fig 6. Monthly cost at three daily-item volumes. Bedrock is a small but visible band because it fires only on the borderline middle and the weekly digest. The dominant cost is the everything-else bucket: the rule pass and storage that touch every item.

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