Code Snippet Library / Lead Gen

BANT Lead Qualification Schema

A structured JSON schema for scoring inbound leads against Budget, Authority, Need, and Timeline before routing to a sales rep or a nurture sequence.

The BANT Lead Qualification Schema is a free, tested JSON Schema and reference scorer that grades inbound leads on Budget, Authority, Need, and Timeline, returning a hot/warm/cool/cold tier your CRM or automation can route on directly.

↗ View on GitHub ⬇ Download Full Repo (.zip)
MIT
License
7
Schema fields
10
Worked examples
JSON
Language
Aug 12, 2026
Last updated
10/10 passing
Tests

This schema defines the shape of a lead-qualification object used to score an inbound contact on the four classic BANT dimensions: Budget, Authority, Need, and Timeline. It sits between a form submission (or enrichment step) and a routing decision.

Schema

{
  "budget_confirmed": boolean,
  "budget_range_usd": [number, number],
  "authority_level": "decision_maker" | "influencer" | "unknown",
  "need_severity": 1-10,
  "timeline_days": integer,
  "points": 0-12,
  "tier": "hot" | "warm" | "cool" | "cold",
  "recommended_action": "route_to_rep" | "nurture_sequence" | "disqualify"
}

The scoring model

Signal Points
Confirmed budget +3
Decision maker / Influencer +3 / +1
Need severity 8-10 / 5-7 / 3-4 +3 / +2 / +1
Timeline ≤30d / ≤90d / ≤180d +3 / +2 / +1

9-12 points = hot (route to rep). 6-8 = warm (route to rep). 3-5 = cool (nurture). 0-2 = cold (disqualify). These thresholds are MV3’s own defaults. Re-run the scorer against your closed deals monthly and adjust if hot leads aren’t actually closing.

Full usage instructions, testing steps, and common pitfalls are in the README below.

README.md View raw ↗

What this is (and isn’t)

This is a documentation + reference implementation repo, not a hosted API. Everything here (the schema, the scorer, the tests) is meant to be copied into your own stack.

Why a schema instead of a prompt

A flat LLM prompt (“score this lead on BANT”) gives inconsistent shape and no way to validate output before it hits your CRM. This schema defines a fixed contract: feed it four typed inputs, get back a typed tier and recommended_action your automation can branch on directly.

Files

FilePurpose
schema.jsonJSON Schema (2020-12 draft) defining the full input/output contract
score.jsZero-dependency reference scoring function
examples/valid.json5 real worked examples covering hot/warm/cool/cold + one edge case
examples/invalid.json5 examples that must fail validation, used by the test suite
test.jsAutomated test validating schema AND scorer correctness together

How to use it

Drop score.js into an n8n Code node, a Zapier Code step, a Supabase Edge Function, or use schema.json directly as a Claude tool-call input_schema. Feed it real form data, not placeholder values.

Testing

npm install ajv
node test.js

Verified 2026-08-12: 10/10 passing.

Common pitfalls

Don’t infer budget_confirmed from company size alone. A decision-maker title with zero urgency and no confirmed budget still scores “cool,” not “hot.”

Support

Found a bug or have a question? Open an issue on GitHub Issues. Want it wired into your real CRM or automation platform? Book a scoping call ($175/hr).

License

MIT

FAQ

Is this snippet free to use?

Yes. Every snippet in the library is free, documented, and tested. MV3 charges $175/hr only for implementation help.

What platforms can I use this with?

Anything that runs JavaScript: n8n Code nodes, Zapier Code by Zapier steps, Supabase Edge Functions, or directly as an LLM tool-call schema.

Does this send my lead data anywhere?

No. The schema and scorer run entirely inside your own automation platform with zero outbound network calls.

Where do I get support if something breaks?

Open a GitHub Issue on the repo for bugs or questions. For paid implementation help, book a scoping call.

JR
Jordan Reeves
ABM & Outbound Pipeline, MV3 Marketing