twain-bench asks each model for the best cold email it can write for a company to a prospect, with no writing instructions, 1,000 times across 100 companies. AI judges score every email on 8 criteria. The article explains the method and the first findings.
12 models · 1,000 emails each · judged by 3 AI judges · updated 2026-10-16Best for
The strongest model on each thing a cold email has to get right, among the models shown.
- Finds the right hookFable 5.182.8 on personalization
- Sounds like a personFable 5.168.8 on voice
- Says it in fewer wordsGPT-6 Sol81.7 on concision
- Hardest to spot as AIGPT-6 Sol56.5 on ai tells
- Most likely to get a replyFable 5.131.3 on reply
- Sticks to the briefGPT-6 Astra99.9 on hallucination
- CheapestGemini 3.8 Flash$0.011 an email
Scores
All scores are 0 to 100, averaged over messages. Cost per message is the list price of the tokens used, without the provider's caching discounts. Click a column to sort.
| Fable 5.1Premium | 68.8 | 76.5 | 43.1 | 52.5 | 82.8 | 60.0 | 31.3 | 97.017.0 claims | $0.150 | 14.4s | 1000 |
| Opus 5.5Premium | 60.7 | 74.8 | 45.7 | 53.9 | 81.4 | 58.5 | 30.3 | 99.315.4 claims | $0.069 | 14.9s | 1000 |
| Grok 4.7Mid-range | 54.3 | 70.8 | 44.3 | 49.6 | 76.5 | 49.9 | 27.8 | 99.315.7 claims | $0.035 | 54.3s | 1000 |
| Sonnet 5.5Mid-range | 50.3 | 66.5 | 25.8 | 41.8 | 76.7 | 43.0 | 27.2 | 99.221.6 claims | $0.027 | 5.8s | 1000 |
| Fable 5Premium | 48.5 | 72.0 | 32.3 | 30.9 | 75.2 | 42.5 | 27.3 | 97.618.8 claims | $0.135 | 11.3s | 1000 |
| Kimi K3Mid-range | 47.7 | 71.3 | 35.4 | 30.4 | 77.3 | 43.2 | 26.6 | 97.117.5 claims | $0.026 | 14.0s | 1000 |
| GPT-6 AstraPremium | 44.7 | 77.4 | 80.1 | 50.9 | 74.2 | 50.2 | 28.0 | 99.98.8 claims | $0.076 | 11.9s | 1000 |
| GPT-6.1 SolBudget | 41.5 | 75.6 | 76.7 | 47.6 | 74.0 | 46.9 | 27.6 | 99.99.3 claims | $0.015 | 9.2s | 1000 |
| GPT-6 SolBudget | 40.5 | 76.8 | 81.7 | 56.5 | 72.4 | 38.8 | 26.8 | 99.98.2 claims | $0.016 | 8.1s | 1000 |
| DeepSeek V4 ProBudget | 31.0 | 65.9 | 38.8 | 36.0 | 65.5 | 32.8 | 24.4 | 98.716.0 claims | $0.019 | 33.4s | 1000 |
| Gemini 4 ArgonBudget | 28.7 | 69.5 | 30.7 | 26.3 | 78.5 | 40.3 | 27.1 | 97.117.4 claims | $0.016 | 5.8s | 1000 |
| Gemini 3.8 FlashBudget | 20.1 | 70.9 | 40.5 | 28.3 | 65.6 | 32.1 | 24.8 | 97.213.8 claims | $0.011 | 13.2s | 1000 |
Writing stats
Measured from the text, not judged: averages over each model's emails, or the share of emails, for the columns in %. The last columns, from "Template phrase" on, are measured over all of a model's emails together and show how much it repeats itself. They describe how a model writes and don't count toward any score. Click a column to sort.
| DeepSeek V4 Pro | 158 | 8.6 | 18.6 | 7.9 | 33.1 | 13.3 | 35 | 1.0 | 0.1 | 1.3 | 0% | 26% | 99% | 66% | 1.7% | 4.6% | 50% | 74% |
| Fable 5 | 219 | 10.2 | 21.2 | 11.0 | 39.3 | 13.1 | 51 | 1.0 | 0.1 | 3.9 | 0% | 66% | 99% | 89% | 4.5% | 5.9% | 45% | 69% |
| Fable 5.1 | 211 | 10.0 | 21.3 | 11.0 | 47.7 | 11.9 | 55 | 1.1 | 0.0 | 1.0 | 0% | 23% | 99% | 77% | 2.2% | 3.2% | 47% | 76% |
| Gemini 3.8 Flash | 169 | 7.0 | 24.6 | 7.7 | 15.3 | 17.2 | 40 | 1.0 | 0.0 | 1.4 | 0% | 35% | 100% | 95% | 4.1% | 5.1% | 49% | 75% |
| Gemini 4 Argon | 213 | 8.2 | 26.4 | 8.4 | 24.9 | 16.3 | 46 | 1.0 | 0.1 | 2.0 | 0% | 49% | 100% | 90% | 2.8% | 4.9% | 47% | 73% |
| GPT-6 Astra | 107 | 6.0 | 18.1 | 5.6 | 31.3 | 13.4 | 37 | 1.5 | 0.0 | 0.9 | 0% | 0% | 98% | 42% | 1.1% | 4.8% | 53% | 75% |
| GPT-6 Sol | 99 | 5.5 | 18.0 | 5.6 | 36.0 | 12.7 | 45 | 1.5 | 0.0 | 0.4 | 0% | 0% | 98% | 85% | 2.1% | 4.1% | 52% | 74% |
| GPT-6.1 Sol | 110 | 6.1 | 18.2 | 5.6 | 30.2 | 13.6 | 36 | 1.5 | 0.0 | 1.0 | 0% | 0% | 98% | 47% | 0.8% | 4.9% | 52% | 74% |
| Grok 4.7 | 176 | 9.4 | 19.0 | 8.7 | 46.3 | 11.5 | 44 | 0.8 | 0.0 | 1.0 | 0% | 0% | 100% | 35% | 0.6% | 4.1% | 47% | 75% |
| Kimi K3 | 212 | 9.7 | 21.6 | 10.7 | 36.8 | 13.5 | 54 | 1.1 | 0.1 | 3.8 | 1% | 52% | 99% | 82% | 3.8% | 3.4% | 49% | 76% |
| Opus 5.5 | 193 | 12.6 | 15.2 | 6.4 | 53.6 | 9.6 | 39 | 1.2 | 0.1 | 0.0 | 0% | 46% | 99% | 51% | 1.3% | 3.9% | 48% | 75% |
| Sonnet 5.5 | 271 | 15.8 | 17.0 | 7.4 | 50.0 | 10.5 | 43 | 1.1 | 0.1 | 0.0 | 0% | 75% | 100% | 95% | 2.5% | 6.8% | 39% | 65% |
Score vs. cost
voice score (0 to 100, average of the judges) against average cost per message. Up and to the left is better.
- OpenAI
- Anthropic
- Other
What each criterion measures
Scores are 0 to 100; higher is better.
Email criteria
Each email on its own.
- voice
- Whether the email sounds like one particular person wrote it.
- flow
- Whether the email reads as one line of thought, with every link between ideas visible, from the reason for writing to the ask.
- concision
- Whether the email says what it needs to say, and nothing more.
- ai_tells
- Whether the email is free of the telltale signs of AI-written text.
- personalization
- Whether the email is built on the detail about the recipient that makes the offer matter to them now.
- creativity
- Whether the email brings a fresh angle that fits the recipient, rather than the usual cold email.
- reply
- Whether the recipient would reply, judged by a model playing the recipient.
- hallucination
- Whether the email's facts about the sender and the recipient are true to the information the writer was given.
Writing stats
Counted, not judged. The greeting and sign-off aren't counted as sentences.
- Words
- Words in the body, not counting the subject line.
- Sentences
- Sentences of running text, not counting the greeting and sign-off.
- Words / sentence
- Average sentence length in words.
- Length spread
- Standard deviation of sentence length within an email, in words. Low means every sentence is about the same length.
- Reading ease
- Flesch reading ease, 0–100: higher is easier. 60–70 is plain English. Noisy on short texts, so read it as a model average.
- Grade level
- Flesch–Kincaid grade: the US school year needed to follow the text.
- Complex sentences
- Percent of sentences with a subordinate clause (because, if, which, that...), from spaCy's dependency parse.
- Questions
- Question marks per email.
- Links
- URLs or web addresses per email.
- Em dashes
- Em dashes (or -- used as one) per email.
- Placeholders
- Percent of emails with a placeholder like [Company], not counting one for the sender's own name.
- Markdown
- Percent of emails with markdown in the body: bold, headings, bullets, numbered lists or links.
- Subject line
- Percent of emails that start with a subject line.
Repetition
Counted over all of a model's emails together, after dropping the subject line and the greeting.
- Template phrase
- Percent of emails containing a 3-word phrase that appears in at least a tenth of the run's emails. Phrases about one sender or lead can't reach that share, so these are phrases the model reaches for on its own.
- Same opener
- Percent of emails whose first four words after the greeting are the run's most common opening.
- Same-company overlap
- For the emails to one sender's leads, the share of 3-word phrases two emails have in common, averaged over pairs and senders. High means near-identical emails to different people at one company.
- Distinct word pairs
- Unique word pairs as a percent of all word pairs across the run. Higher means more varied wording. It falls as the total text grows, so a model that writes more starts lower.
- Distinct word triples
- The same for runs of three words. Less driven by common pairs like "of the", so it tracks repeated phrasing more closely.