Knowledge Base

title-guard — Executive Summary

One line: we validated and normalized B2B contact data (names + job titles) at commercial-vendor quality on a $5/month server, for roughly one ten-thousandth of the quoted budget.

💡 Update (July 15, 2026): a follow-up adversarial test round (1,400 generated cases + fresh holdout) hardened the filters — profanity morphology, 396 known fake identities, unicode names, placeholder edge cases. SEC golden pass is now 100%; whole-box throughput 909 titles/s (10M records ≈ 3.1h, still 8× under requirement). Details: blog post.

What it does

Given a contact record, title-guard answers three questions with a 0–1 confidence score and explicit flags:

  1. Is the job title real? (Chief Butthead, asdf qwerty, test → rejected)
  2. What does it mean? Normalized to the US Department of Labor ONET taxonomy (1,016 occupations) plus a seniority level (`EVP & CFO` → Chief Executives*, c-suite)
  3. Is the person real? (Mickey Mouse, John Doe, N/A N/A, keyboard mash → rejected; Sean O'Brien, Lakshmi Venkatasubramanian → accepted)

No GPU, no external API, no per-row vendor fees. Built entirely from free authoritative data: O*NET, SEC EDGAR, US Census, SSA.

Quality (measured)

Check Result
600 real SEC-filed executive titles accepted 99.8%
Synthetic garbage titles caught 12/12
Legitimate names accepted (incl. Irish, Indian, Hispanic, hyphenated) 16/16
Fake/garbage names caught 16/16

Key insight: Mickey Mouse, Chief Magic Officer passes a title-only check (it is a plausible title). Only the combined name+title filter catches it. Both filters ship.

Speed and cost (measured on the 4-core VPS)

Approach for 10M records Wall time Cost
This VPS (owned) ~2.8 h ~$0
Rented 32-vCPU cloud box ~20 min \< $1
Hybrid: title-guard + LLM on low-confidence 5% ~3 h ~$110
LLM API for every record (Haiku 4.5, batch) hours ~$2,000
LLM API (Sonnet 5, batch) hours ~$6,800

The $100–500 budget is not just met — the pure-classical path is ~500× under it, and the quality-maximizing hybrid still fits 4× under the low end.

Recommendation

  1. Run the classical filter on everything. It is effectively free and catches the bulk of garbage with explainable, auditable flags.
  2. Spend the budget on the tail: route the ~5% low-confidence records to an LLM (≈$110 per 10M records) and to the planned C2.5 embedding layer, which fixes the one known weakness (function-vs-rank confusion: "Head of Growth Marketing" currently maps to an agricultural occupation).
  3. GPU only if/when the embedding layer scales up — and then via Python (RAPIDS/PyTorch) on ~$0.50/hr spot instances, not CUDA engineering.

Full method and benchmarks: see the research paper and case study in this folder. Every number comes from a measured run; `bench_results.json` is in the repo.