Tutorial

How to Write a Rubric for Cold Email Personalization (2026)

12-line rubric for LLM-generated cold email openers. Auditable, portable, ~$0.01/prospect with Scavio research input.

An earlier r/n8n post (Apr 30 2026) shipped a 12-line lead-scoring rubric. The same shape applies to cold email personalization.

Prerequisites

  • Scavio API key
  • LLM API key
  • Vertical opener bank as fallback

Walkthrough

Step 1: Define rubric criteria

What makes a good opener for this vertical?

Text
// 1. References ONE specific recent detail.
// 2. NOT 'I came across your site'.
// 3. NOT generic vertical-thing.
// 4. 1-2 sentences max.
// 5. Tone: human.
// 6. Soft question, not an ask.
// 7. No first-person past tense.
// 8. References vertical context.
// 9. References agency value-add at end.
// 10. No emojis. No filler.
// 11. Personalization detail must be verified.
// 12. If research thin, fall back to bank.

Step 2: Per prospect: Scavio research

Site latest news + AI Overview + Reddit signal.

Text
// scavio.search('site:domain 2026 latest news'); scavio.search('{name} 2026', include_ai_overview=True)

Step 3: LLM-generate opener with rubric

Pass rubric explicitly + research as context.

Text
// LLM: 'Generate ONE opener for [name] at [company]. Research: [...]. Rubric: [...]. If you cannot satisfy criterion 11, output FALLBACK.'

Step 4: Self-judge against rubric

Second LLM pass scores opener.

Text
// 'Score 0-12 against rubric. Output: {score, failed_criteria[]}.'

Step 5: Threshold + fallback

If score <10, use bank.

Python
# if judge_score < 10: opener = vertical_bank.sample()

Step 6: Spot-check 50 generated openers manually

Calibrate rubric.

Text
// Pick 50 random; rate human-good vs human-bad.

Step 7: Track reply rate per opener variant

A/B test rubric tightness.

Text
// Per campaign: tag openers with rubric version. Track reply rate.

Python Example

Python
# Per prospect: ~$0.01-0.02.

JavaScript Example

JavaScript
// Same shape in TS.

Expected Output

JSON
Auditable, portable cold email personalization rubric with measurable per-prospect cost.

Related Tutorials

Frequently Asked Questions

Most developers complete this tutorial in 15 to 30 minutes. You will need a Scavio API key (free tier works) and a working Python or JavaScript environment.

Scavio API key. LLM API key. Vertical opener bank as fallback. A Scavio API key gives you 500 free credits per month.

Yes. The free tier includes 500 credits per month, which is more than enough to complete this tutorial and prototype a working solution.

Scavio has a native LangChain package (langchain-scavio), an MCP server, and a plain REST API that works with any HTTP client. This tutorial uses the raw REST API, but you can adapt to your framework of choice.

Start Building

12-line rubric for LLM-generated cold email openers. Auditable, portable, ~$0.01/prospect with Scavio research input.