Skip to main content
Tantra

AI personalization for email and calendar

Tantra rewrites your email and calendar copy per recipient using their website. Turn it on per step or campaign, with template fallback.

intermediate6 min readUpdated

Open in Tantra

These open the app in a new tab. You may be asked to sign in.

Overview#

AI personalization rewrites your copy for each recipient using a text snapshot of that recipient's public website. Instead of one template that every prospect receives word for word, each person gets copy that references their own business. This article explains what personalization produces for each engine, how to turn it on, and what happens when it cannot run.

Personalization is opt-in. It is off unless you enable it, and it always has a template to fall back to.

How it works#

When personalization is enabled, Tantra fetches a text snapshot of the recipient's public website, then sends that snapshot and your template to an AI model. The model rewrites your copy so it fits that prospect while keeping your structure and any merge fields. See How website scraping feeds personalization for how the snapshot is gathered.

If your default provider is a ChatGPT or Claude sign-in, the model reads the recipient's website itself instead of receiving a snapshot. Switch on Use external crawler (Beta) on the LLM Providers page if you want Tantra's snapshot used for those providers too.

The two engines produce different output.

Cold email produces a personalized subject line and a personalized HTML body. Tantra asks the model for both in a single step, so the subject and the body are built on the same detail from the website. If the reply does not come back in the expected format, Tantra retries with a separate subject step and body step. Your merge fields are preserved exactly. The result is one tailored email for that recipient.

Calendar campaigns produce a personalized plain-text invitation description. Tantra runs a single step that rewrites the invite description, keeping your headings, bullet points, links, dates, and time zones, and adding a reference to the prospect's business where one genuinely fits.

Personalization uses the LLM provider you set as your default. See Connect your own LLM provider. If no provider is available, the message falls back to your template.

When personalization falls back to the template#

Personalization is designed to never block a send. Tantra uses your plain template instead when any of these is true.

  • Personalization is turned off for that step or campaign.
  • The recipient uses a personal webmail address, such as Gmail or Yahoo, so there is no business website to read.
  • No website can be found or the website snapshot fails.
  • No default LLM provider is available.
  • The AI call fails after its retry.

In every one of these cases the recipient still receives your template copy, with merge fields and spintax resolved as usual.

Before you start#

  • Have a template written for the step or campaign. It is both your starting point and your fallback.
  • Connect an LLM provider and set it as your default if you want to control the model and prompt. See Connect your own LLM provider.
  • Understand that personalization only helps for contacts with a business website or business email domain.

Step-by-step: personalize a cold email step#

  1. Open the cold email campaign builder and go to the sequence step.
  2. Switch the step mode from Predefined template to AI-personalized.
  3. Write the template subject and body. The AI keeps this structure and your merge fields.
  4. Optionally open the AI panel to keep or change the template fallback and to add a prompt override for extra guidance.
  5. Use Test against a contact to preview the personalized subject and body for a real contact before you launch.

Step editor panel reading AI personalization is on for this step, with the fall back to template switch on, an Extra instructions for the AI box, and Test email or domain and Contact name fields with a Test against a contact button

Step-by-step: personalize a calendar campaign#

  1. Open the smart calendar campaign builder.
  2. Enable personalized events and keep AI personalization on for the campaign.
  3. Provide the invitation template. The AI keeps its structure and rewrites the copy per recipient.
  4. Launch. Tantra scrapes and personalizes as it processes the campaign.

Screens and controls#

  • Cold email step: a mode toggle between Predefined template and AI-personalized, an AI panel with a fallback toggle and a prompt override, and Test against a contact.
  • Smart calendar builder: options to use personalized events and AI personalization for the campaign.
  • LLM Providers page: choose the default provider used for all personalization.

What happens next#

Personalization runs when Tantra prepares each message, not while you edit. It is asynchronous.

For cold email, Tantra personalizes a recipient's step shortly before that step is due to send. For calendar campaigns, it personalizes as the campaign processes its batches. Because a model is called per recipient, this takes time and happens in the background.

You do not watch personalized copy render live in the app. To see output before launch, use Test against a contact on an AI email step, or the Test settings preview on your provider page. See Connect your own LLM provider.

Choosing a model: our test results#

On 2026-09-23 we ran every ChatGPT and Claude model offered to our test account on the LLM Providers page through the same personalization step a real cold email send uses. Each model had to rewrite one B2B product-demo email for a single prospect, a large electronics distributor, by reading that company's public website itself. The email template contained an opener placeholder and two bracketed option lists for the model to fill in. The model also received a detailed custom system prompt of about 6,300 characters and about 3,900 characters of extra instructions. Each model ran 3 or 4 times.

A run met every rule when all of these were true:

  • It returned an email in the requested one-call format.
  • It kept the offer, the customer names and the single closing question.
  • It left no bracketed placeholder and none of its own drafting notes in the body.
  • It stayed at or under 120 words, the limit set in the system prompt.
  • It used no dash and no word from the system prompt's banned list.

Which models appear in your own list depends on your ChatGPT or Claude plan. Models are ranked within each provider by the share of runs that met every rule, then by median time. Median time covers every run. The token and word medians cover only the runs that returned an email, because a run that returned nothing leaves no token record. Tokens read includes the website content and the prompt. Tokens written includes the model's own reasoning. With a ChatGPT or Claude sign-in, both count against your plan's usage limits, not a per-token bill.

ChatGPT sign-in#

RankModelRunsEmails returnedMet every ruleMedian timeMedian tokens readMedian tokens writtenMedian wordsNotes
1gpt-6-luna443 of 46 s13,7882021071 run over 120 words
2gpt-6-sol443 of 414 s28,9683581061 run left a bracketed placeholder in the body; 1 run over 120 words
3gpt-5.6-luna332 of 311 s19,5254371111 run over 120 words
4gpt-6-astra332 of 314 s19,330232931 run missed the one-call format and needed 3 calls
5gpt-5.6-sol332 of 329 s37,4646671011 run left a bracketed placeholder in the body
6gpt-5.5331 of 312 s15,2795101331 run left a bracketed placeholder in the body; 2 runs over 120 words
7gpt-5.6-terra330 of 312 s16,9484861233 runs over 120 words

Claude sign-in#

RankModelRunsEmails returnedMet every ruleMedian timeMedian tokens readMedian tokens writtenMedian wordsNotes
1Claude Opus 5.5333 of 322 s29,1852,086105None
2Claude Opus 4.5333 of 328 s21,7821,043112None
3Claude Opus 5332 of 324 s35,6342,1301171 run over 120 words
4Claude Opus 4.7332 of 328 s29,9841,8851141 run over 120 words
5Claude Opus 4.6332 of 330 s47,0008221151 run put the model's drafting notes in the body
6Claude Fable 5.1321 of 339 s63,5862,8691231 run returned no email; 1 run over 120 words
7Claude Fable 5311 of 340 s29,1742,9011192 runs returned no email
8Claude Opus 4.8321 of 341 s29,1572,0081181 run returned no email; 1 run over 120 words
9Claude Haiku 4.5330 of 322 s21,8711,4951433 runs returned the template unchanged, placeholders included
10Claude Sonnet 4.5330 of 333 s21,8631,0271433 runs returned the template unchanged, placeholders included
11Claude Sonnet 5300 of 340 sNot recordedNot recordedNo email3 runs returned no email
12Claude Sonnet 4.6300 of 359 sNot recordedNot recordedNo email3 runs returned no email

What the results mean#

  • gpt-6-luna carries the Recommended Priority 1 badge for ChatGPT. It met every rule as often as any GPT-6 model while using the fewest tokens and the least time, so your plan's usage lasts longest. gpt-6-sol carries Priority 2. It named specific products more often, but it read about twice as many tokens.
  • Claude Opus 5.5 carries the Recommended Priority 1 badge for Claude, and Claude Opus 4.5 carries Priority 2. They were the only Claude models that met every rule in all three runs.
  • Runs that returned no email. In the Claude Sonnet 5 run we traced, the model used up Tantra's reply length limit on its own reasoning before writing the email. That run still used about 64,000 tokens of plan usage. The other empty replies returned the same error. A campaign send treats this as temporary and retries, then falls back to your template, so each retry uses plan usage again.
  • Claude Haiku 4.5 and Claude Sonnet 4.5 returned the template unchanged in every run. The system prompt tells the model to keep the placeholder when it finds no usable detail, and these two models took that path each time.
  • Bracketed option lists are risky in a template. When a model keeps one, it can reach the recipient as written. Tell the model in your system prompt to replace every bracketed list with a single option, or leave option lists out of the template.

These results come from one prospect, one template and one prompt. Another website or prompt can rank the models differently, so preview your own template with Test against a contact before you launch.

Best practices#

  • Write a strong template first. The AI improves a good template far more than it rescues a weak one.
  • Keep merge fields in the template. The AI is instructed to preserve them.
  • Use the prompt override on a cold email step to steer tone or add a specific angle.
  • Preview with a test contact before launching so you know what recipients will get.
  • Leave template fallback enabled so contacts without a usable website still receive your copy.
  • Start with a model that carries a Recommended badge. See Choosing a model: our test results.

Common mistakes#

  • Expecting personalization for contacts on personal webmail. Those fall back to the template by design.
  • Assuming personalization runs without a default provider. Without one, messages use the template.
  • Removing merge fields and relying on the AI to add names. Keep the fields so values are always filled.
  • Not previewing before launch, then being surprised by the tone.

Troubleshooting#

SymptomCauseFix
Some recipients got the plain templateThey had no business website, or the snapshot or AI call failedThis is the intended fallback. Add website data for those contacts if you want them personalized
No recipients are personalizedPersonalization is off, or no default provider is availableTurn the step or campaign on and set a default provider
Preview or send shows generic copyThe website snapshot had no useful company informationThe AI avoids inventing facts. Add a better website or accept the template copy
A merge field is missing after personalizationRare, if the field was not in the templateKeep merge fields in the template so they are preserved

FAQ#

What does personalization produce for email versus calendar?#

Cold email gets a personalized subject and HTML body. Calendar campaigns get a personalized plain-text invitation description.

Is personalization on by default?#

No. You enable it per cold email step or per calendar campaign.

What happens if a contact has no website?#

Tantra falls back to your template. Personal webmail contacts always fall back, since there is no business site to read.

Do I need my own AI provider?#

Yes. Every AI feature runs on your default LLM provider: campaign personalization, reply classification, and the template editor's generate and enhance buttons. Without one, campaigns fall back to your template.

Can I see the personalized copy before sending?#

Yes. Use Test against a contact on an AI email step, or Test settings on your provider page.

Will the AI invent facts about a prospect?#

It is instructed not to. When the website has no useful information, it keeps your template copy instead of guessing.

The wording the model follows comes from the shared System Prompts panel, which has a separate prompt for calendar invitations and for cold email. See Connect your own LLM provider.

Was this article helpful?

Related articles