If you are doing outbound right now, you probably have a list, a sequence and a nagging sense that your messages land in the same pile as everyone else's. Every company gets the same email on the same schedule, whether it just opened the exact role you could help with or has not changed in a year. Sending more does not fix that. Better timing does.
Signal-based outbound means contacting a company because something observable has just changed, such as a new hire, a job post, a funding round or a tool switch, instead of because it appears on a list. The signal gives you a real reason to write today, so you send fewer messages, at better moments, and the reader has a reason to reply.
This guide shows how to run signal based outbound yourself, starting with the tech stack and where the orchestration runs, then which signals to watch, how to verify and score them, the prompts that do the sorting, the message templates, the timing rules, the metrics and a seven-day plan. If you want the wider system around it, start with our guide to AI agents for lead generation, and read what an AI agent is if the term is new.
Disclosure: some tool links in this guide are referral links from our AI Stack page. If you sign up through them we may earn a commission at no extra cost to you. We list tools we use or have vetted, and you can run every step here with other tools.
Start here: the tech stack and where the orchestration runs
Signal-based outbound is a chain of jobs: detect, verify, score, write, send. The thing that runs the chain, hands each result to the next step and stops for your approval is the orchestrator. Choose it first, because it decides where your prompts live, how signals get in and how often the chain runs. There are four sensible choices, and they all use the same prompts and templates later in this guide.
Stack map: pick your orchestrator| Path | What it is | Pick it when | You need | Trade-off |
|---|---|---|---|---|
| A. Spreadsheet plus an AI assistant | The signal log lives in a sheet. You paste rows into an assistant such as Claude, run the prompts in this guide and paste the results back. | You are proving the method, or signals arrive at a trickle. | A spreadsheet and an assistant account. | Manual copy and paste, but no build time and you see every row. |
| B. Claude Code as the orchestrator | Claude Code is an agentic tool that reads your files, runs commands and connects to other tools through MCP. Per Anthropic's docs it runs in the terminal, IDE extensions, a desktop app and the browser. We run our own GTM workflows through it. | You are comfortable with files and a terminal (or have someone who is) and want verify, score and draft in one repeatable chain. | A Claude subscription or Anthropic Console account (per the docs), a project folder and the rules file below. | More setup than path A. Keep every send behind a human approval step. |
| C. A workflow engine | Make is the no-code automation layer we connect most client stacks with. n8n is an open-source workflow engine we run alongside Make to orchestrate outbound. | You want triggers (a new row, a schedule) and app-to-app connections without writing code. | An account, one flow per signal type and an AI model step. | Many small steps to maintain. Check each vendor's documentation for limits and pricing. |
| D. Ready-made orchestration | CampaignFlow Pro is our own campaign orchestration platform. Deepline provides enrichment, lead and account discovery and signal detection, run through a Claude Code skill. | You would rather not build the chain yourself. | A conversation with us or the vendor. | Less control over each step. Review the vendor's documentation first. |
Decision rules. If you are unsure, start with path A for the first week; the day-by-day plan at the end works with it. Move to path B or C when a manual step becomes the bottleneck in your KPI table. Many setups mix them: an orchestrator for the thinking steps (verify, score, draft) and a sending platform for delivery. Whatever you pick, a person approves drafts before anything is sent.
Anthropic's guidance on building agents is to use the simplest solution that works and add complexity only when it clearly improves results. That is why path A comes first. (Source: Anthropic, "Building effective agents", accessed 9 November 2026.)
The stack, layer by layer
The descriptions below follow how we describe each tool on our AI Stack page. Check each vendor's own documentation for current features, limits and pricing before you buy. You can do every step with the simplest option in the third column.
Stack map: tools by layer| Layer | Job in this guide | Simplest option | Tools we list |
|---|---|---|---|
| Orchestrate | Run the chain and stop for approval | Path A | Claude Code, Make, n8n, CampaignFlow Pro |
| AI model | Verify, score and draft with the prompts below | Any assistant you already use | Claude; Perplexity for fast cited research |
| Detect signals | Fill the signal log with dated, sourced events | Manual checks of careers and news pages | TheirStack (tech stack and job posting data), Apify and Phantom Buster (scrapers; check each source's terms), Deepline |
| Find and verify contacts | Get decision-maker emails that will not bounce | Manual lookup of 20 contacts | Findymail, Bouncify, ZeroBounce |
| Send email | Deliver touches 1 and 3 | Your normal mailbox for a first pilot | Instantly, Lemlist; Zapmail for inbox infrastructure |
| LinkedIn touch | Deliver touch 2 within the platform's rules | Manual notes | HeyReach, GetSales |
| Replies, CRM and booking | Track replies and book calls | A shared inbox plus a calendar link | Breakcold, Pipedrive, Cal.com |
| Log and approvals | The signal log and the "needs approval" list | A spreadsheet | Google Workspace |
A concrete setup with Claude Code
Here is the shape of path B. We have not run your accounts, so treat this as a template to adapt.
- Create a project folder with
icp.md(your ideal customer and exclusions),signals.md(your three signals, freshness windows and hypothesis sentences),signal_log.csv, atemplatesfolder (one message template per signal) andsuppression.csv. - Add a rules file named
CLAUDE.mdin the project root. Anthropic's docs say Claude Code reads it at the start of every session, so your rules apply every time. Use the starter below. - Package the weekly chain as a skill. Per the docs, skills package repeatable workflows. Yours is: verify new rows, score them, draft messages for the "send now" rows.
- Connect tools through MCP where a connector exists (for example a CRM or your document store), and use CSV files in and out where one does not. Check each vendor's documentation for connector support.
- Schedule the weekly pass. The docs describe cloud scheduled tasks that keep running when your computer is off. Start by running it by hand until you trust the output.
- Keep sending separate. The agent writes drafts to a file with the status "needs approval". A person approves, and your sending platform delivers.
# Signal-based outbound project rules
## Goal
Find companies that match our ideal customer and have a fresh, verified buying signal. Draft one short message per company for human approval. Never send anything.
## Files
- icp.md: ideal customer and exclusion rules
- signals.md: the three signals, freshness windows, hypothesis sentences, send-queue-drop rubric
- signal_log.csv: one row per signal (company, signal_type, summary, date, source_url, verified, decision)
- templates/: one message template per signal type
- suppression.csv: never contact these addresses or domains
- drafts.csv: output, status "needs approval"
## Rules
1. Use only facts found in the source text. If a fact is missing, write "unknown". Never guess dates.
2. Drop any signal older than its freshness window.
3. Score fit first, then signal, using the rubric in signals.md.
4. Check suppression.csv and the exclusions in icp.md before drafting.
5. Drafts: 90 words maximum, one verified fact, the inference phrased as a question, one ask, an opt-out line.
6. No private information. No claims about results or other customers.
7. Write drafts to drafts.csv with status "needs approval". Do not send.
## When I say "run the weekly pass"
1. Read signal_log.csv rows where verified is empty.
2. Verify each against its source text and write the result back.
3. Score the verified rows and set the decision.
4. For "send now" rows, draft with the matching template and write to drafts.csv.
5. Print a summary: counts per decision, rows dropped and why, and the 5 drafts I should read first.
A concrete setup with Make or n8n
Path C follows the same chain as a flow. Build one flow per signal type, or one flow that routes by signal type.
- Trigger: a new row in the signal log, or a daily schedule.
- Fetch: get the source page text. Check the site's terms first.
- AI step: run the verification prompt (Asset 3) and ask for JSON back.
- Filter: continue only when
supportedis "yes" andstill_currentis true. Send everything else to a "dropped" tab with the reason. - Score: a second AI step with the rubric (Asset 4), or a formula in the sheet.
- Route and draft: choose the template for the signal type, then run the message prompt (Asset 5).
- Approval: write drafts to a "needs approval" sheet. A person marks rows approved.
- Send: add approved rows to a campaign in your sending tool and set it to stop on reply or unsubscribe (Asset 7).
Does it work? It works when three things are true: the signal is real and recent, the company is a genuine fit for your offer, and your message connects the two in one honest sentence. We are not going to quote a reply-rate benchmark, because we have not found one we can source and verify, and any number you read without a methodology is marketing. Measure your own results with the KPI table below.
Signal-based outbound versus list-based outbound
List-based outbound starts with who: you buy or build a list of companies that match a profile and message all of them on a schedule. Signal-based outbound starts with when: you wait for evidence that a company has a reason to care now, then message only those companies. The profile (your ideal customer) still matters, because a signal never rescues a bad fit. The signal decides the timing and the first sentence.
| Question | List-based outbound | Signal-based outbound |
|---|---|---|
| What triggers a message? | The company matches your profile | The company matches your profile AND something changed |
| Volume | High, steady | Lower, uneven (depends on how many signals fire) |
| Opening line | Generic or invented personalisation | A real, checkable fact about the company |
| Main risk | Looking like spam | Acting on a stale or wrong signal, or sounding like surveillance |
| Work required | List building and copy | Signal selection, verification, timing rules and copy per signal |
| Best for | Large, well-defined markets | Considered B2B services where timing drives the decision |
The signal menu: what to watch and what each one means
A signal is only useful if you can say what it implies about the buyer's situation. Use this table to choose three signals to start with. Do not try to track all of them. Pick the ones that map most directly to the problem you solve.
Asset 1: Signal menu| Signal | Where you can see it | What it usually implies | Freshness window | Message angle |
|---|---|---|---|---|
| Hiring for a role you could replace or support | Company careers page, job boards | They have the problem and are paying to solve it a slow way | While the post is live | Offer a faster or cheaper alternative, or a bridge until the hire lands |
| New senior hire in the buyer's function | Public profile job changes, company news | A new leader reviews tools and vendors early in the role | First 90 days (we split it: 0 to 30 and 30 to 90 days) | Help with the first-quarter problems that role usually inherits |
| Funding announcement | Company press page, news coverage | New budget and pressure to show growth | Roughly the first few weeks after the announcement | Connect your offer to the growth plan they stated publicly |
| Expansion: new office, market or product | Company news, product pages | New process needs and capacity gaps | Weeks after the announcement | Offer to remove one specific bottleneck of the expansion |
| Tool or stack change | Product pages, public tech-stack data you are licensed to use | A migration or consolidation is in progress, usually with messy process | While the change is under way | Help them avoid the known failure mode of that migration |
| Leadership change or restructuring | Company news, public profiles | Priorities are being reset | Weeks, not months | Light touch: a relevant observation, no hard ask |
| Rapid team growth in sales or ops | Count of open roles on the careers page | Processes that worked for five people break at fifteen | While the roles are open | Fix the process before adding more headcount |
| Past client or past conversation goes quiet | Your own CRM | Old context and a reason to check in | Twelve months of silence is a common cut-off | What changed since you last spoke |
Two rules from our own setup. First, we write each signal as its own mini playbook with four parts: how it is detected, subject line options, an email body and a shorter LinkedIn version of the same message. One signal, one angle, one message. Second, we split time-based signals into windows (for example days 0 to 30 versus 30 to 90 for a new hire), because what a person needs in week two differs from what they need in month three.
How the workflow fits together
You do not need a free-roaming agent for this. Anthropic's engineering team separates workflows, where models and tools follow predefined code paths, from agents that decide their own steps, and recommends using the simplest solution that works. They also describe routing, where an input is classified and sent to a specialised follow-up task. Signal-based outbound is a clean fit for a routed workflow that your orchestrator (chosen above) runs: each raw signal is classified once, then sent down the path written for that signal type. (Source: Anthropic, "Building effective agents", accessed 9 November 2026.)
| Stage | Input | What happens | Output | Human check |
|---|---|---|---|---|
| 1. Detect | Your watch list of companies | You or a tool collects raw events | A signal log row: company, event, date, source link | Open 10 source links by hand |
| 2. Verify | Log row plus source text | A model confirms the event is real, recent and about this company | Verified yes or no, plus the event date | Review every "no" in week one |
| 3. Score | Verified signal plus fit data | A rubric scores fit and signal strength | Send now, queue, or drop | Review the "queue" bucket |
| 4. Route and write | Signal type | The message template for that signal is filled with the fact | Draft email and LinkedIn note | Approve the first 10 by hand |
| 5. Send and stop | Approved drafts | One message, one follow-up, then stop | Sent log with next-touch date | Weekly review of replies and complaints |
Step 1: Choose three signals and write the hypothesis
Input: your offer and your best three past customers. Action: for each signal in Asset 1, write one sentence that links it to your offer. If you cannot complete the sentence, drop the signal.
The sentence format is: "When a company signal, it probably has problem, which my offer solves by outcome." Example: "When a company posts a job for an operations coordinator, it probably has a manual process that slows delivery, which we solve by automating that process, so the hire is not the only option."
Use this prompt to pressure-test your choices.
Asset 2: Signal hypothesis promptYou are a B2B go-to-market analyst. Be sceptical. Do not flatter the idea.
My offer: <ONE_PARAGRAPH_OFFER>
My ideal customer: <ICP_ONE_PARAGRAPH>
Typical deal value: <DEAL_VALUE_RANGE>
Candidate signals: <PASTE_3_TO_5_SIGNALS_FROM_THE_MENU>
For each candidate signal:
1. Complete this sentence: "When a company [signal], it probably has [problem], which my offer solves by [outcome]."
2. Name one alternative explanation for the signal that would make it a FALSE positive for my offer.
3. Say how a person could verify the signal in under two minutes using public information only.
4. Rate the link between signal and my offer as strong, medium or weak, with a one-line reason.
Finish by recommending the three strongest signals to start with and the one I should NOT track yet, with reasons.
How to check it worked: every signal you keep has a verification method that takes under two minutes and a false-positive explanation you can screen for. If a signal is "weak", drop it for now.
Step 2: Build the watch list and the signal log
Input: 50 to 100 companies that already fit your ideal customer profile. Action: put them in a table and add the columns below. Output: a log that records each signal with proof.
- Company, website, contact name, job title, profile link
- Fit score (from your ideal customer rubric, see the lead generation guide)
- Signal type (from your three)
- Signal summary (one sentence, plain facts)
- Signal date
- Source link
- Verified (yes, no), Verified by (person or model)
- Decision (send now, queue, drop), Next touch date, Status
Source the signals from places you are allowed to use: the company's own site and press page, public job posts, news coverage, and your own CRM. Check the terms of any platform or data tool before you automate collection from it. Many platforms restrict scraping and automated activity in their terms, and breaking them can cost you the account.
In our setup we do not scale anything before a pilot. Run the whole table on 10 to 20 companies first, read every row, and estimate the cost of running the next 100 before you do. Re-run only the rows that failed, never the whole table.
Step 3: Verify the signal before you use it
The most expensive error in signal-based outbound is writing "congrats on the new role" to someone who changed jobs a year ago, or referencing a job post that was filled last month. Verification is a separate step with its own prompt.
Asset 3: Signal verification promptYou verify buying signals. Use ONLY the source text below. If the text does not support a claim, answer "unsupported". Never guess dates.
Today's date: <TODAY>
Company: <COMPANY>
Claimed signal type: <SIGNAL_TYPE>
Claimed signal: <ONE_SENTENCE_CLAIM>
Source text: <PASTE_SOURCE_TEXT>
Return JSON only:
{
"supported": "yes" | "no" | "unsupported",
"about_this_company": true or false,
"event_date": "YYYY-MM-DD or unknown",
"days_old": number or null,
"still_current": true or false,
"evidence_quote": "short exact quote from the source text",
"risk_of_false_positive": "one sentence"
}
Decision rules: if supported is not "yes", drop the row. If days_old is outside the freshness window for that signal (Asset 1), set the decision to "drop". If about_this_company is false (a similarly named company, a subsidiary, a parent), drop it.
Step 4: Score fit and signal, then decide send, queue or drop
Fit comes first. Signal strength second. A strong signal at a poor-fit company is a drop, not a send.
Asset 4: Send-queue-drop rubric| Criterion | Points | Evidence required |
|---|---|---|
| Fits the ideal customer (industry, size, region) | 0 to 3 | Wording from the company's own site |
| Contact owns the problem | 0 to 2 | Job title and scope |
| Signal is verified and inside its freshness window | 0 to 3 | Source link, date, quote |
| Signal links directly to your offer (strong, not medium) | 0 to 2 | Your hypothesis sentence from Step 1 |
- 8 to 10 points: send now.
- 5 to 7 points: queue. Re-check in a week. Either a second signal arrives or the first one expires.
- 0 to 4 points, or any exclusion hit: drop. Exclusions are existing clients, competitors, partners and anyone who has asked not to be contacted.
Two signals at one company are worth more than one strong signal alone, but only count a second signal if it is independent (a job post and a funding round, not two job posts for the same team).
Step 5: Write the message, one signal and one ask
Rules that keep a signal message from sounding like surveillance:
- Reference public, professional information only, and only the one fact that matters.
- State the fact plainly, then the inference as a question, not a certainty ("often means... is that the case for you?").
- Give a reason you are relevant in one sentence. No company history.
- One ask, low effort: a short call, or permission to send a two-line idea.
- Stay under about 90 words for the first email.
You write first-touch B2B outreach. Use ONLY the facts supplied. Do not invent anything about the company or the person.
Sender: <SENDER_NAME>, <SENDER_COMPANY>
Offer in one sentence: <OFFER>
Signal type: <SIGNAL_TYPE>
Verified signal fact: <FACT> (date: <DATE>)
Recipient: <FIRST_NAME>, <TITLE> at <COMPANY>
Template to follow: <PASTE_TEMPLATE_FOR_THIS_SIGNAL>
Rules:
- Maximum 90 words.
- Mention the fact once, in plain words, without flattery.
- Phrase the inference as a question.
- One ask only.
- No claims about results or other customers.
- No phrases such as "I hope this finds you well", "just following up", "game-changing".
Return: 3 subject lines (under 6 words each, lowercase), the email body, and a LinkedIn note of 40 words or fewer with the same idea.
Now the templates. Edit the wording until it sounds like you. These are fictional and use placeholders.
Asset 6: Three signal templatesTEMPLATE A: Hiring signal
Subject: <ROLE> role at <COMPANY>
<FIRST_NAME>,
Saw <COMPANY> is hiring a <ROLE>. Teams hiring for that role are often trying to fix <PROBLEM>, and a hire takes a while to pay off.
We help with <PROBLEM> by <ONE_LINE_METHOD>, either instead of the hire or until the person starts.
Is <PROBLEM> the reason for the role? Happy to share how we would approach it in 15 minutes.
<SENDER_NAME>
If this is not relevant, tell me and I will not follow up.
TEMPLATE B: New leader (days 0 to 30)
Subject: first weeks as <TITLE>
<FIRST_NAME>,
Noticed you joined <COMPANY> as <TITLE> recently. New leaders in that seat often inherit <COMMON_INHERITED_PROBLEM>.
We help with that by <ONE_LINE_METHOD>. No pitch deck, just a short outline of what we would look at first.
Want me to send the outline?
<SENDER_NAME>
If this is not relevant, tell me and I will not follow up.
TEMPLATE C: Funding or expansion
Subject: after the <EVENT>
<FIRST_NAME>,
Congratulations on <EVENT_IN_PLAIN_WORDS>. Growth like that usually puts pressure on <AREA>.
We help companies at that stage with <ONE_LINE_METHOD>. Is <AREA> on your list for the next quarter?
<SENDER_NAME>
If this is not relevant, tell me and I will not follow up.
Step 6: Set the timing and the stop rules
Signals decay. Send quickly, keep the cadence short and stop early.
Asset 7: Touch plan| Touch | When | Channel | Content | Stop if |
|---|---|---|---|---|
| 1 | Within 3 working days of verifying the signal | Signal template (Asset 6) | Reply, unsubscribe, bounce | |
| 2 | Day 3 to 4 after touch 1 | LinkedIn note or connection with a short message | Same idea, shorter | Any reply, or the signal is no longer current |
| 3 | Day 7 to 10 | One new, useful thing: a short checklist or an observation relevant to the signal | Any reply | |
| End | Day 14 | None | Mark "no response", set a re-check date of 60 to 90 days | Always |
If a second, independent signal appears after the sequence ends, you have a new reason to write. Start a fresh, shorter sequence that mentions only the new fact. Do not restart the old one.
Step 7: Handle replies and keep a suppression list
Every reply is classified and routed by a person within a working day. A model can draft the classification, but a human owns anything labelled interested or unsure.
Asset 8: Reply classification promptClassify this reply to a cold outreach message. Return JSON only:
{"label": "interested" | "not_now" | "not_relevant" | "wrong_person" | "unsubscribe" | "out_of_office" | "unsure",
"confidence": "high" | "medium" | "low",
"suggested_action": "one sentence",
"forward_to": "name or role mentioned, if any"}
Rules: any request to stop, remove or not contact is "unsubscribe" regardless of tone. If unclear, use "unsure".
Reply: <PASTE_REPLY>
Unsubscribe and "not relevant" go straight to the suppression list that every campaign checks before drafting anything. "Not now" gets a re-check date. "Wrong person" gets one polite reply asking who owns it, and the row is closed whatever the answer.
A worked example (illustrative)
This is a fictional example with invented names, shown to make the flow concrete. No real company or result is described.
Setup. Priya runs Northwind Analytics, a small consultancy that builds automated reporting for logistics firms. Her offer: "We replace manual weekly performance reports with automated dashboards in six weeks." Her ideal customer: logistics companies with 50 to 300 staff in the Gulf. Her three chosen signals: a job post for a reporting or data analyst, a new Head of Operations, a new depot or route announcement.
Step 1 output (hypothesis). "When a logistics company posts a job for a reporting analyst, it probably spends analyst hours building reports by hand, which we solve by automating the weekly reports, so the hire can do analysis instead." The model flags a false positive: the role may be a pure backfill. Priya adds a screen: the job description must mention reporting, spreadsheets or dashboards.
Step 2 output (log row). Company: Harbourline Freight (fictional). Signal type: reporting analyst job post. Source: careers page link. Signal date: 2026-11-03. Decision: pending.
Step 3 output (verification). Today is 2026-11-09. The model returns: supported yes, about this company true, event date 2026-11-03, days old 6, still current true, evidence quote "build and maintain weekly operations performance reports in spreadsheets". Risk of false positive: the post could be a replacement hire.
Step 4 output (score). Fit 3 (logistics, 120 staff, in region), owner of problem 2 (Head of Operations is the contact), signal 3 (verified, six days old), signal-to-offer link 2 (strong). Total 10, so: send now.
Step 5 output (draft, from Template A).
Subject: reporting analyst role at Harbourline
Karim,
Saw Harbourline is hiring a reporting analyst. Teams hiring for that role are often trying to fix weekly reports that eat analyst time, and a hire takes a while to pay off.
We help by automating those weekly reports, either instead of the hire or until the person starts.
Is the reporting load the reason for the role? Happy to share how we would approach it in 15 minutes.
Priya
If this is not relevant, tell me and I will not follow up.
Notice what is missing: no flattery, no "I came across your company", no statistic and no claim of past results. It names one fact, asks one question and makes it easy to say no.
Step 6 and 7 output. Touch 1 goes on 9 November. The reply, if any, is classified and routed to Priya. If the job post disappears before touch 2, touch 2 is cancelled because the signal is no longer current. That is the point of the freshness check.
Not spamming: the rules we hold ourselves to
- One verified reason per message. If you cannot state the reason in one sentence, do not send.
- Three touches maximum per signal, then stop.
- Cap daily volume well below what your tool allows, and grow it slowly.
- Honour opt-outs immediately and permanently across every campaign.
- No private information. Use only professional, public facts. If a fact would feel invasive if the reader saw how you found it, leave it out.
On email deliverability, Google's sender guidelines require all senders to meet the sender guidelines when emailing personal Gmail accounts, and set stricter requirements for bulk senders (those sending close to 5,000 or more messages a day to personal Gmail accounts): authenticated domains with SPF, DKIM and DMARC, spam rates kept below 0.30 percent in Postmaster Tools (with a recommendation to stay below 0.10 percent), and one-click unsubscribe for marketing messages. A signal-based programme sends far below that volume, but the principles are the right ones: authenticate your domain, keep complaints low and make opting out easy. (Sources: Google, "Email sender guidelines" and the sender guidelines FAQ, accessed 9 November 2026.)
Laws on cold email and outreach differ by country, and by whether the recipient is a person or a company. This is not legal advice. Check the rules for every market you contact, and ask a qualified adviser if you are unsure.
Decision rules and common mistakes
| Mistake | Why it hurts | Fix |
|---|---|---|
| Tracking ten signals at once | Too thin to learn from; copy becomes generic | Run three signals for four weeks before adding more |
| Writing the signal as the whole message ("saw you raised money") | Reads as automation; no reason to reply | Link the fact to a problem and ask one question |
| Stale signals | Instantly shows you did not look | Enforce the freshness window in Asset 3 |
| Sending to poor-fit companies because the signal is strong | Wastes volume and lowers reply rate | Score fit first, never override the rubric |
| Skipping verification | Embarrassing errors at scale | Verify with a source quote and read the "no" rows |
| Following up five times | Spam complaints; domain damage | Three touches, then stop and re-check in 60 to 90 days |
| Copying one template for every signal | Wrong angle for the situation | One short playbook per signal |
| No owner for replies | Interested leads go cold | Name a person and a response-time target |
Decision rule summary: if the signal is older than its window, drop it. If fit is low, drop it. If fit is high but the signal is weak, queue it. If two independent signals appear, move it to the front. If the reader replies "not relevant", suppress and close.
What to measure and how to read it
We deliberately give no target numbers here, because benchmarks vary widely by market, deal size and list quality. Set your own baseline in the first two weeks and compare each change against it.
Asset 9: KPI table| Metric | How to calculate | How to read it | If it looks wrong |
|---|---|---|---|
| Verified signal rate | Verified signals divided by logged signals | Low means your detection is noisy | Tighten how you collect signals; add the screen from Step 1 |
| Send rate | "Send now" rows divided by verified rows | Very low means your fit rubric is too tight or your watch list is wrong | Review 10 dropped rows by hand |
| Reply rate by signal type | Replies divided by delivered first touches, per signal | Compare signals with each other, not with outside benchmarks | Stop the weakest signal and rewrite its template |
| Positive reply rate | Interested replies divided by delivered first touches | The number that matters most | Review the angle and the ask |
| Time from signal to send | Hours between signal date and first touch | Shorter is better; signals decay | Automate the queue; reduce approval lag |
| Opt-out and complaint rate | Unsubscribes and complaints divided by delivered | Your early warning for spam problems | Cut volume, retarget, review the copy |
| Meetings booked per 100 sends | Calls divided by sends, times 100 | Your actual outcome measure | Check reply handling speed first |
Pre-launch QA checklist
- I wrote a hypothesis sentence for each of my three signals and each has a two-minute verification method.
- Every row in the pilot has a source link, a date and a verified flag.
- I opened at least 10 source links by hand and they matched the log.
- The freshness window is enforced and a stale test row was dropped correctly.
- The rubric ranks a strong-signal poor-fit company as "drop".
- I read 10 drafts aloud and none mention private or non-professional information.
- No draft contains a statistic, a result or a customer claim I cannot prove.
- Sending domain is authenticated and is not my main domain; every email has an opt-out line.
- The suppression list is connected to every campaign.
- A named person owns replies, with a response-time target.
- The cost of the next batch is estimated from the pilot.
Your first week, day by day
- Day 1: Write your offer and ideal customer paragraphs. Run Asset 2 and choose three signals.
- Day 2: Build the watch list of 50 companies and the signal log columns. Collect signals for 20 of them.
- Day 3: Run Asset 3 on all 20. Open 10 source links by hand. Fix the prompt where it disagreed with you.
- Day 4: Score with Asset 4. Pick the "send now" rows. Generate drafts with Asset 5 and edit them by hand.
- Day 5: Authenticate the sending domain, connect the suppression list and send touch 1 to 10 to 20 approved rows.
- Day 6: Set up Asset 8 for replies. Write your handover rule and the response-time target.
- Day 7: Fill in the KPI table. Decide which signal to keep, rewrite or drop, and size next week's batch from the cost you saw.
Frequently asked questions
What is signal-based outbound?
Signal-based outbound is a way of prospecting where you contact a company because something observable has changed, such as a new hire, a job post, a funding round or a tool switch. The signal supplies the timing and the opening line, while your ideal customer profile still decides who is worth contacting.
Does signal-based outbound work better than list-based outbound?
It depends on your market and execution, and we do not quote a benchmark because we have not found one we can source. The logic is sound: a timely, relevant message gives the reader a reason to answer. Measure reply and meeting rates per signal type against your own baseline before drawing conclusions.
Which buying signals should I start with?
Start with three that map directly to the problem you solve. Common first choices are a job post for a role your offer could replace or support, a new senior hire in the buyer's function, and an expansion or funding announcement. Write a one-sentence hypothesis for each and drop any you cannot complete.
How fresh does a signal need to be?
Fresh enough that the reader still cares. Hiring signals are only useful while the post is live, new-leader signals work best in the first 90 days of the role, and funding or expansion signals fade within weeks. Set a freshness window per signal type and drop anything outside it.
How do I use signals without sounding like surveillance?
Reference one public, professional fact, state it plainly, and phrase your inference as a question. Never mention personal information or anything the reader would find invasive if they saw how you found it. Keep the first email short, make one low-effort ask and include a clear way to opt out.
Which tool should I use to run signal-based outbound, Claude Code or something else?
Start with a spreadsheet and an AI assistant to prove the process. Move to Claude Code if you are comfortable with files and a terminal and want verify, score and draft in one repeatable chain, or to a workflow engine such as Make or n8n for visual app-to-app flows. Keep a person approving every send, whichever you choose.
Sources and further reading
- Anthropic, "Building effective agents" (workflows versus agents, routing, starting with the simplest solution). Accessed 9 November 2026.
- Anthropic, "Claude Code overview" (surfaces, MCP, CLAUDE.md, skills and scheduled tasks). Accessed 9 November 2026.
- Google, "Email sender guidelines" (authentication, spam rate and one-click unsubscribe for bulk senders). Accessed 9 November 2026.
- Google, "Email sender guidelines FAQ" (definition of a bulk sender; all senders should follow the guidelines). Accessed 9 November 2026.
- SFC AI Stack page (tool descriptions; some links are referral links).
- SFC internal prompt library, enrichment SOP and signal playbook structure (methods adapted and anonymised).
What to do next
Do Day 1 today: pick your three signals and write the hypothesis sentences. If you would rather have the system built and running in your own accounts, we build AI outbound agents that watch signals, verify them, score fit and draft outreach for your approval, and you can book a short call to talk through your pipeline. When replies start arriving, our guide to the AI appointment setter covers turning them into booked calls.
