What the sentiment monitor costs
The monitor is one of the cheaper systems in this series. The collector polls a few feeds and queues new mentions. The reader makes one cheap model call per mention. The reporter does some arithmetic and sends an email. There’s no always-on server, no heavy infrastructure, and nothing that posts anything back. At typical SMB volume the bill is a couple of dollars a month, fixed cost essentially zero — and unlike most systems here, the one variable that matters is simply how many mentions you get.
Key takeaways
- Around $2.40/month at typical SMB volume (around 200 mentions a month).
- Fixed AWS cost is essentially zero. No always-on compute, no NAT Gateway, no API Gateway.
- The dominant cost is the per-mention mood read on Bedrock — a fraction of a cent each.
- Collecting, the trend math, the alerts, and the weekly pulse are all pennies.
- At 1,000 mentions the bill is around $5. At 2,000 it’s around $9.
Cost at three volumes
Where the dollars actually go
Bedrock (the bulk). One Haiku 4.5 call per mention to read its mood: a few hundred input tokens (the mention text) and a few tokens out (the score and reason), so a fraction of a cent each. At 200 mentions a month that’s a dollar or so; at 2,000 it’s a few dollars. Add the one weekly summary line — four or five calls a month — and Bedrock is still the single largest line, but it grows only as fast as your mention count does. This is the one cost that tracks volume directly, by design: the system pays to read exactly the mentions you actually get.
Lambda runtime. The poller every fifteen minutes, the reader pulling from the queue, the webhook handler, the reporter, and the weekly pulse. Each run is short — reading a feed, scoring a mention, sending an email. Pennies a month at all three volumes.
DynamoDB on-demand. Three small tables: sm-scores, sm-seen, sm-alerts. One write per scored mention, one de-duplication read per collected mention, and small reads for the trend and the alerts. Pennies a month.
SQS + S3. The mention queue and its dead-letter queue, plus the listening-export bucket and the stored config. A handful of messages and a few hundred KB. Effectively free at this scale.
EventBridge Scheduler. The 15-minute poll, the hourly housekeeping, the weekly pulse, and the occasional deferred-alert one-off. A few invocations an hour. Pennies.
SNS + SES. SNS sends the instant alerts (email, optional text); SES sends the weekly pulse. Both are a handful of messages a month for a typical SMB — alerts only fire on bad events, the pulse goes once a week. A few cents in total, dominated by any text messages you opt into.
What doesn’t cost money
- API Gateway. Replaced by a Lambda Function URL for the comment webhook.
- NAT Gateway. Nothing is in a VPC. No NAT, no $32/month minimum.
- Always-on compute. No EC2, no Fargate. Nothing runs between a poll and a mention arriving.
- A vector store. The monitor scores and trends — it doesn’t search past mentions by meaning. No embeddings, no S3 Vectors, no Knowledge Base.
- Anything that posts back. The monitor never replies, so there’s no outbound posting cost and no risk surface that comes with it.
How the cost scales
Bedrock grows roughly linearly with mention count, because it’s one call per mention. Lambda and DynamoDB grow linearly too, but from a much smaller base. SNS, SES, and the fixed services barely move — you don’t get more weekly pulses by having more mentions, and alerts fire on events, not volume. So the bill at 5,000 mentions a month is around $20; at 10,000 it’s around $40. Past those volumes the per-mention model still holds; you’d just look at batching several short mentions into one model call to trim the Bedrock line, which is an optimization rather than a redesign.
Set an AWS Budgets alarm at $15/month so anything unusual — a misconfigured feed that re-queues the same mentions, say — pages you before the bill matters. The monitor’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 and DLQ config, and EventBridge Scheduler config.
All posts