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?
// 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.
// 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.
// 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.
// 'Score 0-12 against rubric. Output: {score, failed_criteria[]}.'Step 5: Threshold + fallback
If score <10, use bank.
# if judge_score < 10: opener = vertical_bank.sample()Step 6: Spot-check 50 generated openers manually
Calibrate rubric.
// Pick 50 random; rate human-good vs human-bad.Step 7: Track reply rate per opener variant
A/B test rubric tightness.
// Per campaign: tag openers with rubric version. Track reply rate.Python Example
# Per prospect: ~$0.01-0.02.JavaScript Example
// Same shape in TS.Expected Output
Auditable, portable cold email personalization rubric with measurable per-prospect cost.