What the newsletter composer costs
The composer is one of the cheaper systems in this whole series. The weekly run reads a CSV from S3, counts a handful of items, makes one Bedrock call to write the issue, and sends one email per subscriber. The gathering and the daily checks are pennies. The two real line items are the weekly draft and the email send. At typical SMB volume, the bill is a couple of dollars a month, fixed cost essentially zero.
Key takeaways
- Around $2.80/month for one issue a week to a small list (a few hundred subscribers).
- Fixed AWS cost is essentially zero. No always-on compute, no NAT Gateway, no API Gateway.
- The weekly Bedrock draft is the single biggest line item — and it’s one call per issue.
- SES email sends scale with your list size, not with how clever the issue is.
- At one issue a week to a larger list the bill is around $6. At a daily issue it’s around $14.
Cost at three volumes
Where the dollars actually go
Bedrock (the draft). The single biggest line item, and still small. Once a week the composer makes one Sonnet 4.6 call to write the whole issue: the prompt is your voice doc plus a dozen short items (a few thousand input tokens), and the output is the finished issue (a thousand or so output tokens). That’s a few cents per issue. Add the cheaper Haiku 4.5 calls that tidy forwarded updates in Part 2 (a fraction of a cent each, a handful a month) and the monthly summary (one small call). Weekly, that’s pennies a month. A daily issue is seven times the drafts, which is why Bedrock is the tallest slice in the daily bar.
SES (the send). Outbound email is $0.10 per thousand messages. One issue to 500 subscribers is 500 messages — five cents. Four issues a month is twenty cents. The send cost scales with your list size and how often you send, not with anything clever. Even a 10,000-person list sent weekly is four dollars a month in SES. This is the slice that grows with a big list.
Lambda runtime. The weekly composer run, the hourly feed-sync, the every-15-minute drive-sync, the SES inbound parser for forwarded updates, and the Function URL handler for the buttons. None of them run long. The Lambda total lands well under a dollar at all three volumes.
DynamoDB on-demand. Three small tables: nc-items-state, nc-issues, nc-audit. A few reads and writes per run and per action. Pennies a month at any of these volumes.
S3 + Storage. The mirrored item CSV, the voice and rules docs, the stored drafts, and any raw forwarded MIME. A few hundred KB total at SMB volume. Effectively free.
EventBridge Scheduler. The weekly run, the hourly and 15-minute syncs, and the one-off cooling-off and quiet-hours rules. A handful of invocations a day. Pennies.
SES inbound. For the forwarding lane: $0.10 per thousand received messages. A few forwarded updates a month is a fraction of a cent.
What doesn’t cost money
- API Gateway. Replaced by Lambda Function URLs for the approve, edit, and skip endpoints.
- NAT Gateway. Nothing is in a VPC. No NAT, no $32/month minimum.
- Always-on compute. No EC2, no Fargate. The composer sleeps almost the entire week.
- A separate email platform. SES sends the issue directly — no per-seat newsletter tool subscription on top.
- A model on every item. The issue is one draft call, not one call per item. Item tidy-ups use the cheaper Haiku 4.5, and only on forwarded updates.
How the cost scales
Two things move the bill: how often you send, and how big your list is. Sending more often multiplies the Bedrock drafts; a bigger list multiplies the SES sends. Both scale linearly and both are cheap. A weekly issue to a few hundred people is under three dollars. A weekly issue to a few thousand is around six. A daily issue to a large list — which is more newsletter than most small businesses want to write — is around fourteen. Past that you’re in real publishing territory, and the cost is still dominated by sends, which any email platform charges for too.
Set an AWS Budgets alarm at $15/month so anything unusual pages you before the bill matters. The composer’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, SES rule set, and EventBridge Scheduler config.
All posts