How the AI Sales Personalizer works, step by step

No black box. Here is the exact pipeline that turns a company URL into a 2-sentence personalized opener, with the prompt, the model, and the output validation laid out.

The 5-step pipeline (per URL)

Step 1. Browser fetches the target homepage via r.jina.ai (free CORS-friendly reader). 2 to 4 seconds.
Step 2. Cleaned HTML stripped to text. Scripts, styles, comments, and tags removed. Truncated to first 8,000 characters (where the signal density is highest).
Step 3. Cleaned text sent to Claude Sonnet 4.6 with a cached system prompt (the prompt is the same per session, so we use ephemeral prompt caching to drop input cost by 90%).
Step 4. Claude returns structured JSON with company name, summary, 3 pain points, opener, fit score, channel, and reasoning.
Step 5. Output validated, fit score clamped to 0 to 100, channel restricted to email/linkedin/phone. Rendered to the user.

The actual system prompt

This is exactly what Claude sees, no hidden steps:

You are a senior B2B SDR who writes high-converting cold openers.
Given a target company homepage and the seller product pitch,
produce a structured JSON object.

Seller product pitch:
{{your pitch}}

Tone for the opener: {{consultative | direct | warm | curious | witty}}

Rules:
- Never invent facts about the company. Only reference what is visible
  in the homepage content provided.
- The opener must be 2 sentences max, ready to paste into an email
  or LinkedIn DM.
- The opener must reference one specific, observable detail about
  the company.
- Do not use em-dashes or en-dashes. Use commas, periods, or
  restructure.
- fit_score: 0 = no fit, 100 = perfect fit, based on alignment between
  company signals and the pitch.
- channel: one of "email", "linkedin", "phone".

Output strictly this JSON shape, no commentary, no markdown:
{
  "company_name": string,
  "summary": string (1 to 2 sentences),
  "pain_points": [string, string, string],
  "opener": string (2 sentences max),
  "fit_score": number (0 to 100),
  "channel": "email" | "linkedin" | "phone",
  "reasoning": string (1 sentence on why this fit_score)
}

Why Claude Sonnet 4.6, not GPT-4

Three reasons:

What about hallucinations

Cold-outreach AI tools fail when they invent facts. ("I saw you recently launched product X" when no such launch happened.) The system prompt explicitly forbids inventing facts and requires every opener to reference something observable in the homepage content. If the page is thin, the AI defaults to generic but accurate openers rather than fabricated specifics.

Caveat: always skim a sample before sending at scale. The AI is good, not perfect. If you do 500 leads, set aside 20 minutes to spot-check 5 percent.

Privacy and data flow

Free DIY mode (this site): your Anthropic API key never leaves your browser. All requests go directly from your browser to api.anthropic.com using the official browser-mode header. We see no data.

Apify mode: your URL list and pitch go to the actor running in Apify's cloud. We use our own Anthropic key, you pay $0.15 per result. Results are stored in your private Apify dataset, accessible only to you.

Sheets mode: same as DIY (browser-side), with your key stored in your Google account's user properties (encrypted at rest).

Try free now Compare to other tools

Last updated 20 May 2026. Pipeline + prompt subject to revision as we iterate.
Home · Terms · Privacy · Refund