Stop fact checking cold email research by hand
You send a note saying a founder launched a subscription app this summer. She launched it two years ago. She deletes your email, and from that day on your team rereads every line before anything ships
We had that exact problem with our own outreach at Autonomous Technologies, a Shopify systems agency. So we built a research process where code checks every fact before a person sees the note. Between 18 and 20 September 2026 it researched 30 companies, taking a median of 11 minutes each. Along the way, it stopped 193 of 1,850 quotes that failed a live recheck.
| What we counted | Figure | Period |
|---|---|---|
| Real companies researched | 30, and 29 reached a passing copy gate | 18 to 20 Sep 2026 |
| Quotes re-fetched and checked | 1,850, of which 193 failed (about 10%) | 18 to 20 Sep 2026 |
| Research time per company | median 11 minutes; 27 minutes for the full pass | 18 to 20 Sep 2026 |
| Automated tests passing | 832 of 832 | run 23 Sep 2026 |
Research you can't check is research you'll end up redoing
Everyone's seen the cold email with the "personalised" first line. It sounds sure of itself. Ask where the fact came from, though, and nobody knows. So someone rereads every line against the store before it goes out, and there goes the time you saved.
Our first version, on 3 September, already rechecked every quote. It still had a hole. Nothing confirmed that a paragraph said what its quotes said, so a perfectly real quote could sit right next to a made up number. We plugged that with a second read, scheduled by hand. Meanwhile, seven stages were wired together manually and ten sourcing scripts shared no code at all. Not pretty.
The rule underneath all of it hasn't changed since day one. A claim is one fact about a company, saved as a web address plus a quote of at least 40 characters, copied word for word. A recheck means downloading that page again later and searching it for the exact quote. The research step isn't allowed to mark its own homework. Only the verify step can do that, and only by rechecking.
A quote that no longer matches the page is marked unverified and left alone. The system never trims it until it fits, because that would be the system agreeing with itself.
Six stages, two of which only exist to say no
The pipeline takes one company at a time through six stages:
- Source finds the company and the right person to contact.
- Research collects what the founder says in public, what customers say, recent news and the tools the store runs.
- Verify rechecks every quote.
- Synthesize turns whatever claims survive into a short brief: the company's situation, its pressures, ranked angles and what we still don't know.
- Write drafts a short note.
- The gate, our final automated check, can refuse that note outright.
Verify is plain code. There's no judgment in it. It fetches each page once per run, cleans up the text so it can be compared, and asks one question: is the quote still there? Market trends always get rechecked. The only facts that skip the fetch come from mechanical page checks, like which scripts a store loads.
The gate compares the writing to its sources. Any number in the note has to show up in a quote the note cites, and every paragraph needs at least one sentence backed by one of those quotes. We tested it on 19 September 2026 across 17 researched companies. With the notes left alone, it held none of them. Then we slipped an invented figure into each note, and it caught all 17. We tried again with a plausible paragraph about a different industry, and it caught 16 of 17.
If a person rejects a claim, any copy that cites it goes stale. Stale copy cannot be approved and cannot be loaded, even if it was approved yesterday.
What we built, and who owns each step
Rizwan, our founder, built the engine between 3 and 20 September 2026, and he's the author of record on every commit. Those six stages are made up of 21 smaller parts. At each one, plain code decides pass or fail, so nothing rides on a guess.
The newest stage went in on 20 September. It picks one angle from the verified ones and writes no copy. When it can't choose with confidence, the company waits for a person rather than getting a best guess.
Hira runs our outreach. For each company, she gets a company brief and a LinkedIn brief. Rizwan approves or rejects individual claims and signs off on the note before it's loaded, then Hira takes it from there. The engine never sends a thing by itself.

| What we measured | Before 19 Sep 2026 | From 20 Sep 2026 |
|---|---|---|
| Check that a paragraph matches its quotes | a second read, scheduled by hand | the gate, on every write and every load |
| Choosing the angle for a note | the writer's own pick | a separate choice step that holds for a person when unsure |
| Structure | 7 hand-wired stages, 10 unshared scripts | 21 parts, 43 schemas, 832 passing tests |
| Running cost per company | USD 5 to 8, runbook, 3 Sep 2026; USD 4 to 8, runbook, 18 Sep 2026 | not yet measured [CORRECTED: was "USD 4 to 8, runbook, 18 Sep 2026"] |
| Replies and booked calls | not published | not published |
What we'd change, and who this is actually for
Every source that can fail should say so, loudly, from day one. Before we added a fallback, running out of search credits produced runs with zero claims and not a single error. We'd also log cost per company from the start. Today that figure comes from measuring by hand, not from the run records.
Some claims will never pass. Reddit blocks our fetches, so anything sourced there drops out at verify, true or not. We're fine with that. If you can't show a stranger where a fact came from, it isn't worth sending.
This is for you if your team burns hours rechecking research before it goes out. It works for anyone sending research or reports to people who'll check them, whether that's prospects, clients or a board. If you want more emails out this week, look elsewhere. This makes fewer, better claims, one company at a time.
Questions and answers
What does "a re-fetch still finds the quote" mean?
A re-fetch downloads each cited page again and searches it for the exact quote. If the quote is gone or the page will not load, Autonomous Technologies cannot use that claim in any email.
Who decides whether a claim is true?
Plain code decides, not the writer: the quote must still be on the page, and every number in the note must appear in a quote the note cites.
How long does one company take?
Across 30 companies from 18 to 20 September 2026, research took a median of 11 minutes per company. The full pass, from first page check to checked copy, took a median of 27 minutes.
Can it send email on its own?
No. The engine writes files, and a person at Autonomous Technologies approves the claims, the copy and what is sent.
Can you build this discipline into our reports or research?
Yes, anywhere a sentence must trace back to a page. Code holds the source check, so your people spend their time on judgment instead of re-reading.
