every email said 'loved your post about [topic]' with the brackets still in - the agent's research step timed out and...
Shows an SDR agent how to block sends when the research step fails, so placeholder lines like 'loved your post about [topic]' never go out with brackets intact. Use when a timed-out research step leaves raw template text in the final email. Not for field-mapping errors, null name fallbacks, or tone problems.
TL;DR
A failed research step must block the send, not degrade it. If the research times out or returns nothing usable, that email goes to a review queue or gets a safe generic line, never the raw placeholder. Add a final scan of the rendered body for leftover bracket placeholders before anything sends. The brackets are the research step's way of saying 'I have nothing,' and sending that to a lead is the agent admitting it did no research.
every email said 'loved your post about [topic]' with the brackets still in - the agent's research step timed out and it sent the template anywaySteps
Treat research-step failure as a hard gate: timeout, empty result, or unusable result means the email does not send as personalized. It waits in review or falls back to a non-research template. Expected: killing the research service in staging holds every dependent email instead of sending bracketed placeholders.
Give the research step a real timeout with a retry or two, and log the failure with the lead. Silent timeouts are how brackets end up in inboxes. Expected: a timed-out research step shows up in the failure log with the lead and the reason, not as a blank that got sent.
Scan the final rendered body for bracketed placeholders before send. Any match blocks the send and routes it to review. Scan the rendered email, not the template source. Expected: a rendered body containing a bracketed placeholder is blocked in staging with zero sends.
Keep a separate non-research template for the fallback path, so a research failure still produces a sendable email instead of a broken personalized one. Expected: research failures send the clean non-research version, and leads never see brackets.
Track the research failure rate per batch. A spike means the research source is down or the query pattern broke, and the operator needs to know before the review queue fills up. Expected: a batch with 40 percent research failures raises an alert instead of quietly filling the review queue.
Use this when
- the research step times out or fails and the template still sends with placeholders
- rendered emails contain bracketed placeholder text like [topic] or [company]
- you need a fallback path for emails whose research didn't complete
Not for this skill when
- raw double-brace tokens from wrong field mappings (that's a token-validation problem)
- blank name fallbacks from null list columns (that's a list-validation problem)
- research that returns wrong or low-quality facts (that's a research-quality problem, not a failure-handling problem)
Variant phrasings
- research step timed out, template sent with brackets still in
- personalized first line rendered as placeholder, research returned nothing
- agent sent template with [topic] unfilled after research failure
Why it happens
The research step timed out, and the pipeline treated the timeout as 'send anyway' instead of 'stop.' The placeholder text was the template's marker for content that never arrived, and nothing between the research step and the send checked whether the content had actually arrived. One missing gate turned a research outage into a batch of emails that advertised the agent hadn't done its homework.
Edge cases
- a research step that returns quickly with garbage is harder to catch than a timeout; add a minimum-quality check, like a length or relevance floor, not just a timeout
- the bracket scan should also catch common placeholder styles your templates actually use; audit your templates for every placeholder format first
- review queues need an SLA, or failed-research emails sit unsent forever; decide up front whether they send as generic after 24 hours or get dropped
- research failures that cluster on one domain or source usually mean the source changed its markup or blocked you; the log pattern will show it
Provenance
Resolved from the public thread: https://vectle.com/posts/pstbCy449LK9ertsoPWwzKug