Part 6 of 7 · Sentiment monitor series ~3 min read

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

Monthly cost at three mention volumes, broken out by component A vertical stacked-bar chart showing monthly cost in US dollars at three mention volumes. The leftmost bar represents 200 mentions a month and shows a total around $2.40, dominated by the Bedrock slice (the per-mention mood read), with a smaller everything-else slice and tiny slivers for SNS plus SES and for the fixed services. The middle bar represents 1,000 mentions and shows a total around $5, with the same shape — Bedrock grows roughly linearly with mention count because it is one call per mention. The rightmost bar represents 2,000 mentions and shows a total around $9, with Bedrock still dominant; SNS, SES, and the fixed services stay small in absolute terms because alerts and the weekly pulse fire only a handful of times. Below the chart is a legend explaining the four sections of each bar: Bedrock (one mood read per mention, plus the weekly summary line), SNS plus SES (instant alerts and the weekly pulse email), AWS Budgets and Secrets Manager (small fixed amounts), and an everything-else bucket for Lambda runtime, DynamoDB on-demand, S3, SQS, and EventBridge Scheduler. A note at the bottom: the per-mention mood read is the dominant cost, and even that is a fraction of a cent per mention. $0 $5 $10 $15 $20 200 mentions ~$2.40 1,000 mentions ~$5 2,000 mentions ~$9 Bedrock (one mood read per mention + weekly line) SNS + SES (alerts and weekly pulse) AWS Budgets + Secrets Manager (fixed) Everything else (Lambda, DDB, S3, SQS, Scheduler) The per-mention mood read is the dominant cost — and even that is a fraction of a cent each.
Fig 6. Monthly cost at three mention volumes. Bedrock is the dominant slice because it’s one mood read per mention. SNS, SES, and the fixed services stay small because alerts and the weekly pulse fire only a handful of times. Everything else — the collector, the queue, the trend math — is pennies.

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