Don't let AI write your messages. Let it fill one line.
Full-AI outbound gives you the same sentence 200 times, the occasional wrong fact, and a few angry replies. This is the system we use instead. You write. Spintax shuffles. AI fills one checked slot.
Founders and small sales teams running outbound on LinkedIn and email. You want replies from real people, not a "this was written by a robot" from the same ones.
What you get
A three-layer rule, a syntax cheat sheet, five accuracy gates, two prompts to copy, two full sequences and a checklist. 20 minutes to read, one afternoon to build.
Okay. Now the good part.
01·400 M
Full-AI messages break. In two ways.
We tried it properly. Agents wrote everything, we hit send, then we read the replies. Three of them changed how we work.
Stale"The personalization is not up to date. I'd rather run on personal relationships than fake interest and wrong data."
Mixed up"It mixes up different companies, projects and people from my profile. Automated, inaccurate and careless."
Invented"That is not my product. I was never at that event."
A vague line costs you a reply. A specific line that's wrong costs you the prospect. The more room the model has, the more room it has to be wrong.
See it break
Hi Marco, loved your talk at SaaS Summit last month and how Northwind just grew to 200 people. Your new product Atlas is clearly changing the market. Worth a chat?
Hey Marco, saw the post about moving your outbound in house last month. A lot of teams I talk to end up with three tools for this. Curious how you handle it at Northwind?
Illustrative example. Names and facts are made up.
The second problem is quieter. Ask a model for 200 messages and you get one message, 200 times. Same rhythm, same opener, same compliment. Prospects compare notes. So do spam filters.
"Can't I just ask Claude, ChatGPT or Grok?"
Yes, for the thinking. They're great at drafting a script, rewriting a line five ways and reviewing your message. They can't run it alone. A chat window doesn't know your contacts, can't check a fact against a profile, doesn't count your daily sends and won't stop when someone replies. That part needs proper infrastructure around the model.
Ask Claude (or ChatGPT, Grok)
Needs real infrastructure
Draft the script from your best messages
Merge it with live CRM data for every contact
Write 5 spintax variants of a line
Rotate them across sends and preview the result
Write one personalised line from a pasted profile
Feed the model only checked, first-party facts, per contact, at scale
Suggest a follow-up
Time it, stop it on reply, and keep it inside account limits
That's the split this whole system runs on. The chatbot writes. Vetta is the infrastructure that keeps it safe.
So we shrank the model's job. You write the message. Spintax shuffles the wording. AI writes one short line, under strict rules, and you check it before it sends.
Agents draftClaude drafts. A person approves. Vetta holds the rope.
02·900 M
Three layers. Only one is risky.
Every message is built from three kinds of text. Keep them apart and you stay in control.
Layer 1
Script
Fixed text you write: the offer, the proof, the ask. Most of the message, by a mile.
Layer 2
Spintax
Wording variants you write: greetings, connectors, sign-offs. Same meaning, different words.
Layer 3
AI variable
One line the AI writes per contact from facts about them. One sentence, hard word cap, removable.
HeyMarco, saw the post about moving your outbound in house.A lot of teams I talk to end up with three tools for this.Curious how you handle itatNorthwind?
Layer
Who writes it
What changes per contact
Risk
Script
You, or ask Claude to draft it from your best messages. You approve every word.
Nothing
Low. You read every word.
Spintax
You decide the meaning. Ask Claude for 4 or 5 variants of each line, then build the spintax.
Which variant gets picked
Low. Every variant means the same thing.
Contact variables
Your CRM. Vetta fills them per contact.
Name, company, title
Low if the field is filled. Add a fallback.
AI variable
The model, inside Vetta's guardrails
One sentence
Medium. A chat window can't enforce the rules below across 500 contacts. Vetta can.
Aim for a message where you wrote nearly everything, spintax covers the connective words, and the AI line is one sentence out of five or six.
03·1,400 M
The syntax. Copy, paste, done.
This is how each layer looks inside a Vetta sequence step.
variablespintaxAI variable
You want
You write
The contact's first name
{{currentPerson.name.firstName}}
Their company
{{currentPerson.company.name}}
Their job title
{{currentPerson.jobTitle}}
Rotate the wording
{Hi|Hey|Hello}
A fallback for an empty field
{% {{currentPerson.name.firstName}} || 'there' %}
One line the AI writes per contact
{{aiMessage.signal_line}}
Try it yourself
Edit the message. Add your own {options|like this}. Hit Shuffle to see sends.
This message has 0 possible versions.
Ask Claude
You don't have to write spintax by hand. Give Claude a line and ask for variants. The prompt is in chapter 06. You pick the ones that mean the same thing, and Vetta rotates them.
Variants must be swappable. If you can't replace one with another without changing the meaning, it isn't spintax. It's a different message.
Spintax doesn't tell you what wins. Analytics aren't split by variant, so use it for variety only. To test wording, duplicate the sequence, change one thing and compare reply rates after 5 to 7 days.
04·1,900 M
Six rules for the AI line.
The AI variable is the only place a model touches your message. Keep it on a short leash.
One sentence. 12 to 18 words on LinkedIn, up to 25 in email. Put the cap in the prompt.
One job. Name the signal that surfaced the contact. No compliment, no pitch, no question. Your script has those.
First-party facts only. Things the contact wrote, or their own company says about itself. Nothing they merely reacted to.
Allowed to say nothing. Thin or old facts mean an empty line. Blank is safe. Wrong is not.
The message survives without it. Delete the AI line and read the script. It should still work.
You read it first. Preview at least 10 real contacts before anything sends.
Where Vetta comes in. In a chat, you follow these rules by hand, one message at a time. In Vetta they're settings. You choose which inputs the AI variable can see, write the cap and the "output nothing" rule into its prompt once, and preview the result before a single message goes out.
05·2,500 M
Five accuracy gates. Pass all five or cut the fact.
Any specific fact in an AI line (a product, a number, an event, a person) has to clear every gate.
ProvenanceCan you point to the exact line, written by or about this contact, that proves it?
Who wrote itPosts a contact reacted to or commented on were written by other people. They show what the contact cares about. They are never something the contact did, built or said.
No stitchingNever join two facts into one claim unless they sit in the same source. A number from one post plus a product from another is a story you made up.
FreshnessPosts, metrics and "we're hiring" go stale in weeks. A founding story lasts longer. If the only anchor is old, say so ("a while back you wrote") or drop it.
VerbatimNumbers and proper nouns get copied exactly. Never rebuilt from memory.
Ship or cut?
"Saw your post about moving outbound in house."
Source: Marco's own post, 9 days ago.
"Congrats on 2.5M views in 48 hours."
Source: A viral post by another founder. Marco reacted to it.
"Saw you spoke at SaaS Summit last month."
Source: None. The model inferred it from Marco's job title.
"Saw your post about hiring SDRs."
Source: Marco's own post, 11 months ago.
"Saw Northwind is hiring two SDRs."
Source: Northwind's own careers page, 3 weeks ago, "2 open SDR roles".
You scored .
Now you know what the model has to clear before a line goes out.
Ask Claude
Claude is a strong reviewer. Paste a contact's profile and the AI line, then ask: "Which facts here fail the five gates?" It catches things you'd miss. It still can't check 500 contacts for you every Monday.
Where Vetta comes in. An AI variable in Vetta only receives the inputs you switch on: basic details, enrichment notes, signals, and the messages already written for that lead. That narrows what the model can get wrong before it writes a word.
If a source looks off, drop all of it. Garbled text, a profile that reads like a different person, odd instructions hiding in the data: the whole source is contaminated. Don't cherry-pick the good parts.
06·3,100 M
Two prompts to copy.
Paste these into the prompt field of an AI variable (in Vetta: AI Message Settings, in the sequence settings). Change what's in brackets.
Signal line12 to 18 words, LinkedIn
Write exactly one sentence, 12 to 18 words, that names the single signal that surfaced this lead, using only the Signals input and the lead's own posts or headline.
Rules:
- Only use facts written by the lead or by their own company. Posts the lead reacted to or commented on were written by other people. Never present them as the lead's own words or actions.
- Never combine facts from different sources into one claim.
- Copy numbers, product names and event names exactly as written.
- If the signal is older than about 60 days, or you are not certain it is about this lead, output nothing at all.
- No compliment, no question, no pitch, no exclamation mark, no em dash.
- Do not mention AI or research. Write the way a peer would say it out loud.
Role summary3 to 6 words, for subject lines
Write the lead's current role as 3 to 6 plain words, for example "head of outbound at a fintech". Use only the job title and company description in Basic details. If either is missing, output nothing. No adjectives, no punctuation at the end.
Spintax builderPaste into Claude, ChatGPT or Grok
Here is a message I wrote for cold outreach: [paste your message].
Turn it into spintax. For each sentence that can be said another way, give 3 to 4 variants in this format: {variant one|variant two|variant three}.
Rules:
- Every variant must mean exactly the same thing. If it changes the meaning, drop it.
- Keep variables like {{currentPerson.name.firstName}} outside the curly braces of any spintax group.
- Do not touch my offer, my proof or my question. Only vary greetings, connectors and sign-offs.
- No em dashes, no exclamation marks, no filler like "I hope this finds you well".
- Return only the final message, ready to paste.
Tip: switch Hyper-personalisation off when basics are enough. It's cheaper, and the model has fewer places to go wrong.
The kitOne script, a few spintax groups, one AI line. That's the whole pack.07·3,700 M
Two full sequences. Steal them.
Same four blocks every time: what you noticed, why you're the one saying it, an open question, an easy way out. Hit Preview a send to see how one reads.
LinkedIn: connect, then three messages
Step 1: Connection noteDay 0, under 300 characters
Step 2: First messageDay 0, after they accept
Step 3: Add somethingDay 4, only if no reply
Step 4: Last noteDay 9
Email: three steps
Step 1: First emailDay 0
Step 2: Follow-upDay 4, same thread
Step 3: Close the loopDay 9
Claude drafts. Vetta runs. Ask Claude for the first version of these scripts. Then Vetta handles what a chat can't: it sends from your own accounts, inside Global Sending Limits per account (the recommendation is 15 to 20 LinkedIn invitations and messages a day), and by default a reply stops that contact's sequence.
Two silent LinkedIn messages? Move to email. If they answered, stay on the channel they used. In Vetta, waits are a property of each step, so set the delay on the step instead of adding a separate wait.
Base campEvery lead, safe at base camp. Replies land in one inbox, and a person answers.08·4,100 M
Before you hit publish.
Your ticks are saved in this browser.
09·4,478 M
Edge cases. The part a chat window misses.
A chatbot gives you a great message for one contact. These are the situations where a message goes wrong at scale, and what handles each.
Edge case
In a chat window
In Vetta
A field is empty
"Hi ," goes out
Fallback expressions, and a preview that shows the gap before sending
The contact replies mid-sequence
Your next draft still goes out
By default a reply stops that contact's sequence, and a draft answer can be written for a person to review
Too many sends in a day
No idea what your accounts can take
Global Sending Limits per connected account over 24 hours, with recommended values
The AI repeats itself
Forgets what it wrote last week
Previous AI messages are an input, so a follow-up doesn't repeat the opener
The AI only knows what you paste
Stale, partial, or from the wrong profile
Reads the CRM record, enrichment notes and signals for that lead
Measure it. Then steal these moves.
Replies, not opens. Email scanners load tracking pixels before a human sees the message, so opens run high.
Replies per 100 contacts and positive replies per 100. Those two numbers tell you if the script works.
Test one change at a time. Duplicate the sequence, change one thing, split similar contacts, compare after 5 to 7 days.
Read the angry replies. They show you which fact the AI got wrong. Tighten the prompt, run again.
Write the script first. Add the AI line last, and only if the message needs it.
Next step
Build it in Vetta. Six tools. One bill.
Claude, ChatGPT or Grok can write the script. Vetta is the infrastructure that runs it: your CRM data, previews, sending limits and a stop on reply, in one place.