Part 4 of 7 · Review responder series ~5 min read

How the responder picks a move

Once the extractors have done their work, the structured review goes to a small decision step that picks one of four moves. The boundaries between them are deliberately conservative: when in doubt, draft. When safety or legal language shows up, escalate, regardless of anything else. Auto-reply is reserved for the cases that genuinely don’t need you.

Key takeaways

  • Four moves, always: auto-reply, draft, escalate, ignore. There is no fifth.
  • Safety and legal keywords (food poisoning, injury, lawyer, refund-stalled) bypass scoring and escalate immediately, regardless of star rating.
  • Auto-reply is reserved for 4– or 5-star reviews with no specifics, no named staff, no themes flagged for review, and high confidence on all three extractors.
  • Anything that names a staff member or includes a specific complaint becomes a draft — the AI writes the reply, a human glances and sends.
  • The pick is enforced via Bedrock tool_use with four named tools, so the model can’t free-form a fifth option.

Four moves, one pick per review

Four moves, picked from the structured review A diagram with one input row at the top, a thin gate row in the middle, and four move columns at the bottom. The input row shows the structured review from the previous post — score, sentiment, themes, specifics, confidences. A short downward arrow leads into a gate strip labelled "Pick one — safety keywords override everything." Below the gate, four columns describe the four possible moves, left to right. Column one, "Auto-reply", is the smallest active group: fires when the score is four or five and the sentiment is positive, no named staff, no specific dollar or order numbers, no mismatch flag, and all extractor confidences are high; the composer writes a brief thanks reply and posts it through the platform API. Column two, "Draft", is the workhorse middle: fires on three-star or mixed reviews, on four-star with a specific complaint, on any review naming staff, on any review with specific dollar amounts or order numbers, on score-sentiment mismatches, and on any low confidence; the composer writes a reply and drops a package in your inbox or Slack. Column three, "Escalate", is the safety lane: fires on one or two stars, on any safety or legal keyword (food poisoning, injury, lawyer, harassment, refund-stalled), on negative reviews that name a current staff member; the same package as draft, marked urgent, plus an optional one-sentence holding reply queued so the customer sees something while a human takes over. Column four, "Ignore", is the cleanup lane: fires on reviews already replied to outside the system, on spam that slipped past intake, on empty rating-only reviews, on foreign-language reviews if you don’t support them; the responder logs visibility but posts nothing. A note at the bottom: the safety override is a hard gate — anything that hits a safety keyword goes to Escalate even if everything else looks fine. Structured review score · sentiment · themes · specifics · conf. Pick one — safety keywords override everything Auto-reply Fires when: • Score 4 or 5 • Sentiment positive • No named staff • No specific $ or order numbers • No mismatch flag • All confidences high Then: • Composer writes a brief thanks in voice • Post via platform API • Mark answered → reply posted Draft Fires when: • Score 3 or mixed • Score 4 + complaint • Names a staff member • Specific $ or order # • Score-text mismatch • Any low confidence Then: • Composer writes a reply in voice • Package goes to inbox or Slack • You approve in seconds → one-tap send Escalate Fires when: • Score 1 or 2 • Safety / legal keyword (food poisoning, injury, lawyer, harassment,…) • Negative review that names current staff Then: • Same package, urgent • Optional 1-sentence holding reply queued • Routes to a higher priority destination → human takes over Ignore Fires when: • Already replied outside the system • Spam past intake • Rating-only, empty text • Foreign-language (if not configured) Then: • Logged for visibility • Nothing posted • Themes still tallied → quiet shelve Safety override is a hard gate — any safety/legal keyword goes to Escalate, no matter what else looks fine.
Fig 4. Four moves, one pick per review. Auto-reply is the smallest active group; Draft is the workhorse; Escalate is the safety lane; Ignore is the quiet cleanup.

Auto-reply: the smallest active group

Auto-reply is reserved for the cases that genuinely don’t need you in the loop. Score four or five, sentiment positive, no named staff, no specific dollar amount or order number, no rating-text mismatch, and high confidence on every extractor. In a typical month at a typical small business, that’s less than half the reviews, often a third — and that’s on purpose. Most positive reviews still mention something specific (“Maria was wonderful”, “loved the new menu”), and specifics route to draft so a human gets the chance to thank a person by name in their own voice.

What does end up here is the “Great service! Will be back!” class — warm, generic, no specifics, no risk. The composer writes a brief one- or two-sentence thanks in your voice (covered in the next post), posts it via the platform API, and marks the review answered. You see a count, not a stack.

Draft: the workhorse middle

Most reviews you actually want a human voice on land here. Three stars and mixed sentiment, four stars with a specific complaint about something concrete, any review that names a current staff member (positive or negative), any review that mentions a specific dollar amount or an order number, any rating-text mismatch, and any low extractor confidence.

The difference from auto-reply is editorial control: the cloud has done the writing, but you read it and hit send. Each draft package contains the original review, the proposed reply, the matching policy excerpt the composer used, and a one-line reason it’s a draft (“mentions Sarah by name”, “score-text mismatch”, “refund amount”). The reason matters more than it sounds — reading “mentions a $ figure” before approving makes you look at the figure in the draft, instead of skim-approving.

The work this saves is the writing, not the deciding. A real reply takes a few minutes to compose; a draft takes a few seconds to glance over. The cumulative time across thirty reviews a month is the difference between “I’ll do it on Saturday” and “done in five minutes after lunch.”

Escalate: the safety lane

Escalate is the move that fires the moment the responder reads something serious. One- and two-star reviews always escalate, full stop. So does any review that hits a safety or legal keyword from the policies file — food poisoning, injury, lawyer, allergen, harassment, refund-stalled, threat, the list grows with experience. So does a negative review that names a current staff member, because that’s a workplace conversation as much as it is a review reply.

The escalate package looks like a draft package, but with three changes: it’s marked urgent, it routes to a higher-priority destination (a manager email or a dedicated “reviews-urgent” Slack channel), and it can optionally queue a one-sentence holding reply — “We’re sorry; we’d like to look into this. Please reply with your visit details or call <the policies-file phone number>” — that posts immediately so the customer doesn’t see silence while a human takes over. Whether the holding reply is on by default is a setting in the policies file; some industries (medical, legal) want the holding reply off entirely until a real person looks.

Ignore: the quiet cleanup

Ignore exists for the cases where the right move is no move. A review that already has a reply on it (from before the responder was set up, or because someone on your team replied directly through the platform’s native UI). A spam comment that slipped past the screen. A rating-only entry with no text the responder could meaningfully reply to. A review in a language you haven’t configured the responder for.

Ignored reviews still get logged, and their themes still get counted — one of them is just as valid a data point about service speed or food quality as a review the responder replied to. They just don’t produce an outbound message.

Why these four and not five

Every additional bucket is a new branch a human has to remember the meaning of. Four covers the meaningful behaviour: act now, help me act, bring me in, do nothing. The most common request for a fifth is “queue this for later,” which on inspection is always either a draft (the human will get to it) or an ignore (they’ll never get to it). Naming the difference forces a small honesty that helps the system.

The other rule that stays out of the move-picker on purpose is anything trying to optimise for SEO or platform algorithms. The responder’s job is to handle the reply correctly, not to game the listing’s ranking. If the platform rewards reply latency or reply length, that’s a downstream effect — doing the right thing first earns it anyway.

One thing the four-move shape doesn’t show: platform reach

Not every review platform lets a small-business owner post a reply through an API in 2026. Google Business Profile does, so the auto-reply move on Google reviews actually posts. Facebook deprecated their public reply path for page recommendations at the start of 2025, and Yelp’s reply API is only available to enterprise partners. So for Facebook and Yelp, the auto-reply move is automatically demoted to a draft regardless of how confident the responder is — the cloud has done the writing, but a human pastes it into the platform’s own app.

This is one per-source flag the dispatch column reads at the very end. The decision logic in this post stays exactly the same; what differs is the destination of the produced reply.

What this hands to the next post

Three of the four moves end with a reply being composed: auto-reply posts it, draft and escalate package it for human review with the reply already written. The next post is the composer itself — how a reply stays in your voice and only ever promises what the policies file actually allows.

All posts