Skip to content

Jev Practices & Patterns

Sales and marketing: lead scoring, routing, and enrichment

Lead scoring, routing, and enrichment are bounded judgments. How sales teams use decision models without turning the CRM into a prompt.
Published
Category
Jev Practices & Patterns
Resources cited
10
Reading time
6 min
Tags#sales-marketing#lead-scoring#routing#enrichment

A lead pipeline is not one judgment. It is a sequence of bounded ones: does this account fit, who should own it, is the signal real, and what should a rep say next. The useful pattern is to make each question typed, put the thresholds in code, and keep enrichment and outreach downstream of the decision rather than inside it.

The score is a weighted composite, not a verdict

The composite scoring pattern is the right starting point. It asks four Score questions in one parallel request, each with five levels, then normalizes each answer by dividing by len(criteria) - 1 before weighting. The example weights are explicit policy: 40% Python, 10% leadership, 40% design and 10% generalist for a senior IC, versus 15/40/20/25 for an engineering manager. Nothing about that arithmetic belongs to the model.

That last point matters for sales. A fit score is only as good as the dimensions you chose. If you score company size, tech stack, buying signal and timing as four separate questions, you can inspect which dimension moved a lead and change its weight when the segment changes. A single "is this a good lead" question hides the policy inside the prompt and makes the result hard to defend. The scoring-without-measuring problem is exactly this: a number that looks precise but has no stated meaning.

Route on confidence, not only on fit

Routing is a second decision, and it has a different cost of error. The confidence-gated routing pattern separates the action from the certainty: any intent below 0.6 confidence goes to a support agent before the action is considered, while a balance check is safe at 0.6 and a transfer needs 0.85 or more. The thresholds are set per action, not once for the whole pipeline.

jev-leads shows the plumbing. Leads from forms, WhatsApp, Telegram or custom webhooks are written to local SQLite in WAL mode before qualification, so a slow model or CRM cannot drop a lead, then Jev 1.13 via OpenRouter qualifies the stored record and Airtable receives the result. The repository calls itself production-ready, but the README excerpt does not show the actual qualification questions or routing rules, and its 100% passing-test badge is self-reported. Treat the buffer as the reusable part and write your own questions.

The same split appears in the confidence gates in production argument: the confidence gate decides when to act, and the human review path catches everything below it. Confidence is not permission. A high-confidence fit score can still be wrong, so irreversible actions such as exporting a list or assigning an owner need hard limits in code alongside the model.

Enrichment needs a rejection option

Enrichment is where teams often let a model spend money on the wrong records. The Clay JEV people ranker is a useful counterexample because it filters before enrichment. Clay's deterministic filters retrieve titles such as founder, but also catch founding investors, founding employees and Founder's Office roles. Jev then makes the semantic call with a Choice classification and a Noul probability, and Python applies the thresholds.

The measured run is concrete: 577 candidates scored in 20.1 seconds for an estimated $0.0206 of Jev input, with 472 qualified and 105 rejected, an 81.8% yield. The run stopped at 472 of a 500-person target after a Clay continuation request returned HTTP 504, although scoring finished for all 577. The 0.90 and 0.80 thresholds are operating policy, not accuracy guarantees; the README says the 0.90 figure is not proof of 90% precision and that production use needs a human-labeled evaluation set.

That is the right shape. The model decides "operating founder or not" from a closed list, and the expensive enrichment step only sees the survivors. If you skip the rejection option, every ambiguous title becomes a paid lookup.

Call signals are a separate state

A sales call is not a lead record. It is a stream of utterances, and the decisions are local: is this a buying signal, what stage is the call at, what objection just appeared, what move should the rep make. Jev Sales Copilot asks about 37 atomic questions per utterance in one request: Choice questions for signals and stage, a Score for closing probability, and confidence-gated extras. A 15-move playbook supplies the coaching text, and Jev picks the move while code shows the phrasing.

The generative part is deliberately small. Claude Haiku 4.5 may rewrite the chosen line, but Jev verifies the sentence and code drops it if it invents a fact. The three hand-written replay calls end near 90% on the good transcript, near 6% on the bad one, and dip to 16% before recovering to about 80% on the mixed one. Those are the project's own replay figures, not a benchmark. It also carries no licence, needs Python 3.13+, and its live microphone mode is Chrome-only with no speaker diarization.

Cheap scoring changes coverage, not truth

The 700-leads demo reports scoring 700 high-intent leads and drafting outreach in 40 seconds for $0.09. It is a vendor self-report with no independent verification, so the number is useful as a cost ceiling, not as evidence of accuracy. Competitor Hunter collects 80 days of competitor posts and has Jev rank each one, with Claude Code tuning the questions on a pilot batch and no benchmark published. The Reddit content opportunity finder scores comments from 0 to 1 for whether a brand could write something useful, uses 0.8 as the default opportunity threshold, and explicitly recommends labeling about 100 comments and choosing the threshold from precision and recall instead.

Cheap scoring is what makes full coverage possible: you can judge every lead instead of a sample. It does not make the labels correct. The use-case map is candid that its industry sections are example decisions, not shipped products or benchmarks.

What to log and what to distrust

Log the state, the question set, the answer distribution, the confidence, the model version and the threshold that was applied. That is what lets you replay a routing change later, and it is the same discipline the use-case map recommends when adapting an example to your own workflow.

Distrust three things. First, a vendor case study without a methodology appendix. Second, a model card that declares accuracy and calibration as front matter but publishes no measured result; the WorkMagic churn distiller is exactly that, an Apache-2.0 Qwen3-8B LoRA trained without human labels, useful as a pattern but not as a quality claim. Third, a confident score with no rejection path.

The pipeline that survives contact with a sales team is unglamorous: score a few dimensions, normalize and weight in code, gate the action on confidence, reject before enrichment, and keep the conversation model separate from the record model. Use the use-case map for ideas, but measure the thresholds on your own leads.

From the Jev directory

The resources behind this article.

Break a judgment into atomic Score questions, normalize each by its top level, and combine them with weights you control in code, as in the resume example's four scored dimensions.
Jev Practices & PatternsDocs#official#patterns#score
Official
Use the answer to decide what to do and confidence to decide whether to act: the voice-banking example routes below 0.6 to a human and needs 0.85 or more to auto-approve a transfer.
Jev Practices & PatternsDocs#official#patterns#confidence
Official
0GitHub stars
A lead intake, qualification and routing service that buffers every inbound lead in local SQLite (WAL mode) for zero loss, qualifies it with Jev AI through OpenRouter, and syncs results to Airtable CRM.
Jev Tools & CLIs#community#github#crm
An Agent Skill and Python workflow that pairs the official Clay CLI with TypeSafe Jev: Clay retrieves people matching deterministic filters, then Jev Choice and Noul decide whether each candidate really holds a current operating founder role before enrichment.
Jev Agents & MCP#community#catalog-import#madewithjev
9GitHub stars
A live sales-call copilot that asks Jev about 37 atomic questions per utterance in one request, updating a closing-probability chart, live signals, call stage, objection state and next-best-move card within a few hundred milliseconds.
Jev Demos & Experiments#community#python#sales
Gojiberry's Romàn reports scoring 700 high-intent leads and personalized outreach messages in 40 seconds for $0.09, with confidence scores and lead-message mismatch detection.
Jev CookbooksVideo#community#x#video
Community
13GitHub stars
A local web app where Claude Code runs the hunt and Jev judges every competitor post, surfacing the ones most likely to work for your audience. It adds saved-post analysis, transcription, an Ask AI view and a My Studio planning page.
Jev Tools & CLIs#community#github#python
A two-stage Python framework that cleans an Apify Reddit export, clusters comments with UMAP and HDBSCAN, then has Jev score each comment 0-1 for whether the brand could publish new content about it. Opportunities are flagged when the score clears 0.8 and no competitor is mentioned.
Jev Tools & CLIs#community#github#reddit
Explore TypeSafe use cases by industry and turn promising ideas into concrete software workflows.
Jev Practices & PatternsDocs#official#use-cases
Official
WorkMagic's self-distilled churn decision model for Slack customer conversations: a LoRA on Qwen/Qwen3-8B trained with no human labels that returns churn-likelihood option probabilities through the AnyJev Tacit interface.
Jev Models & Reimplementations#community#open-models#local
Community
Back to all articles

Related Jev articles

Jev answers questions in parallel against one state. When to fan out, when to split into a second request, and how to keep dependent questions out of a single call.
Jev Practices & Patterns#decisions#fan-out#routing
Read article
Support is a long chain of small judgments over text. Triage category and urgency separately, route with a confidence gate, decompose hard tickets, and decide the action in code.
Jev Practices & Patterns#customer-support#routing#triage
Read article

From the Jev AI model community

Posts from builders shipping with Jev right now.

Follow @typesafeai