Research a Reason to Reach Out
Outcome: an evidence column holding one specific, dated, checkable fact per account — and an honest count of how many rows have nothing.
- Surface
- App and MCP server
- Level
- Intermediate
- Uses
- company_job_listings · linkedin_page_posts · AI research · scrapers
- Credits
- ~1–2 per account
- Prerequisite
- A qualified account list
”Why now” is the whole game
A cold message needs to answer a question the recipient asks in the first two seconds: why is this person writing to me, today?
“Because you fit our ICP” is not an answer. A dated event is.
This lesson builds the column that holds that answer, and it runs before the copy column because copy without evidence is decoration.
Reason types, strongest first
| Rank | Reason | Where it comes from | Window |
|---|---|---|---|
| 1 | Funding round | Funding enrichment | 90 days |
| 2 | Relevant hire, especially an exec | Job listings, exec-change signals | 30–90 days |
| 3 | Job posts naming the problem | company_job_listings | 30 days |
| 4 | Product launch or major announcement | Page posts, news | 60 days |
| 5 | Tech-stack change | Stack detection diff | 180 days |
| 6 | Something they published | Page posts, blog | 30 days |
| 7 | Traffic or headcount growth | Growth enrichments | 90 days |
| 8 | A researched fact about their model | AI research | No window |
| 9 | Firmographics | Enrichment | — |
Ranks 1–4 carry their own timing. Ranks 8–9 do not, which is why a list built only on them has no natural ordering — every account looks equally urgent, so nothing gets worked.
Getting them cheaply
Start with what you already have
If lessons 01–06 already enriched funding, hiring and stack, the evidence column is a free formula over existing data. Check before spending.
Job posts are the best value
One cheap call returns hiring intent, named tools, team size and often the problem statement. company_job_listings is the highest-yield single source in outbound.
Page posts are cheap and current
linkedin_page_posts gives announcements and launches in one call.
AI research last
Only for accounts where the cheap sources returned nothing, and only for accounts worth the spend.
The evidence column
A free formula that picks the strongest available reason per row and falls down the ranking.
evidence =
funding_90d ? "raised " + round + " in " + month
: exec_hire_90d ? "hired " + title + " " + weeks + " weeks ago"
: roles_30d >= 2 ? "posted " + roles_30d + " " + function + " roles this month"
: launch_60d ? "launched " + product_name
: stack_change ? "recently added " + tool
: recent_post ? "posted about " + topic
: ""Then the number that matters: what percentage of rows end with rank 1–4 evidence?
| Share with strong evidence | Reading |
|---|---|
| Above 40% | Good — a genuinely signal-driven campaign |
| 20–40% | Workable; consider splitting into two campaigns |
| Under 20% | This is a cold list with decoration. Either add signal sources or accept it and write generically. |
A blank evidence field is a finding, not a failure. It means there is no reason to contact this account this week — and the honest response is to leave the row in the table and wait for a signal, rather than inventing a reason.
Keep it checkable
Every evidence value should be something the recipient could verify. Two rules:
- Date it. “Posted three sales roles this month” beats “is hiring”.
- Quote where possible. A phrase from their job post or their own announcement is stronger than your paraphrase of it.
Store the source URL alongside. When a message gets a reply asking “how did you know that?”, you want to be able to answer.
Do this now
Audit what you already have
Which reason types are already enriched on the table?
Add job listings
The best value per credit in this lesson.
Add page posts
For announcements and launches.
Build the evidence formula
Ranked fallback, dated values.
Compute the strong-evidence share
Rank 1–4 as a percentage of rows.
Add AI research only where needed
High-value accounts with no cheap evidence.
Store the source URL per row
Decide what happens to blank rows
Hold and wait, or a separate generic campaign at lower volume.
Check your work
- Evidence is a single column with a ranked fallback
- Every value is dated and checkable
- Source URLs are stored
- You know the share of rows with strong evidence
- Blank rows have an explicit policy
Where this breaks
Using a stale signal is worse than using none. Congratulating a company on a funding round from eight months ago, or referencing a role that was filled in March, tells the recipient your data is old and your process is automated. Every evidence type needs a window, and the formula must check the date rather than the existence of the fact.
Further automation
Once the evidence column works, invert the workflow: instead of building a list and looking for reasons, watch for signals and let accounts enter the list when a reason fires. That is the shift from a campaign to a pipeline, and it is what Signals & ABM builds.
Next lesson
08 — Write the opening line, turning the evidence into a sentence.
Reference for this lesson: company_job_listings, linkedin_page_posts, Signals, Research & Web Scraping.