How the weekly pulse gets sent
The instant alert is for the bad moment. The weekly pulse is for the calm overview — the Monday-morning email that tells you how the week actually went, even if nothing ever crossed an alert threshold. It’s short on purpose: three blocks an owner can read in thirty seconds. This post walks through what goes in each block, how the pulse is built almost entirely from plain arithmetic over the stored scores, and the single Bedrock call that turns those numbers into one human sentence.
Key takeaways
- Three blocks: the mood trend, the standout mentions, and what changed since last week.
- Built almost entirely from plain arithmetic over the stored scores — no model on the numbers.
- One Bedrock Haiku 4.5 call writes the human summary line at the top.
- EventBridge Scheduler fires it every Monday morning; SES sends the email.
- The pulse always goes out, even on a quiet week — absence of an alert is information too.
Three blocks in the pulse
Block 1: the mood trend
The first block is the one most owners read and stop. It’s the week’s average mood as a single number, the direction compared to last week (up, down, or flat), and a tiny text sparkline — seven small marks, one per day, showing the daily average so the shape of the week is visible at a glance. A week that started fine and dipped on Thursday looks different from a week that was steadily low, and the sparkline shows that without anyone reading a single mention.
None of this needs a model. It’s the same rolling-average math from Part 3, run once over the week’s rows in the sm-scores table. Plain Python reads the scores, groups them by day, averages each day, and compares the week’s overall figure to the one stored last Monday. The numbers are exact and reproducible, which is exactly what you want from the headline a business decision might lean on.
Block 2: the standout mentions
Numbers tell you the shape; the standout block tells you the why. Python sorts the week’s scores and pulls two mentions: the single most positive and the single most negative. Each is shown with its source, its score, its one-line reason from the reader, and a link to the original. The best one is there because good news is worth seeing — a glowing review is a quote you might want to use, and a sign of what’s working. The worst one is there so that even on a week that never tripped an instant alert, the lowest point still gets a set of eyes on it.
Two mentions, not twenty. The pulse isn’t a feed of everything — that’s what the stored data is for if someone wants to dig. The block deliberately surfaces just the extremes, because those are the two an owner can actually act on in the thirty seconds they’ll give the email.
Block 3: what changed
The third block is the comparison block, and it’s why last week’s figures are stored. Python compares this week to last: more or fewer mentions overall, the average up or down by how much, and which source moved the most. “Review mentions up 40% this week, mostly positive; comment mood down slightly, driven by one post.” This block turns a single snapshot into a direction. A flat average can hide a source quietly climbing while another slips; the per-source deltas surface that.
This is the block that makes the pulse worth reading every week rather than once. The trend number alone can sit in the same place for a month while the underlying mix shifts; “what changed” is where that shift shows up. And like the other two blocks, it’s pure arithmetic — subtract last week’s stored summary from this week’s computed one.
The one model call, and the send
At the top of the email sits one plain-English sentence: “A solid week — mood ticked up, your delivery fixes are showing in the reviews, and the one rough comment was an isolated billing question.” That sentence is the only place the pulse uses a model. The reporter hands the three assembled blocks to a single Bedrock Haiku 4.5 call and asks for one honest summary line — no spin, no padding, just what the numbers say in words. It’s the cheap path doing a small writing job, and it never invents a figure, because the figures are already fixed by the blocks above it.
Then the layout is assembled and SES sends it to the configured recipients. EventBridge Scheduler fires the whole run every Monday morning. Crucially, the pulse goes out even on a dead-quiet week with no alerts and no drama — because “nothing happened” is itself a thing an owner wants confirmed, not a silence they have to wonder about. This week’s figures are written to the summary store, and next Monday the cycle compares against them.
Next post: the cost breakdown. The whole monitor — collecting, reading, alerting, and this weekly pulse — runs in coffee-money territory at SMB volume; Part 6 shows exactly where the dollars go.
All posts