Jev AI Hub
Start Learning

Scoring · Score

Score Inbound Leads with Jev

A Jev Score example for lead quality. Levels describe situations, not adjectives. Do not turn the fractional score into a fake dollar value.

Published
Sep 20, 2026
Updated
Sep 20, 2026
Last verified
Sep 20, 2026

Quick answer

Rate inbound leads on a situational rubric, then threshold the Score in your CRM code.

Problem

Inbound form spam and serious buyers hit the same Salesforce queue. SDRs want a rank, not a paragraph of analysis.

Why Jev fits this task

Lead quality is ordered. Official Score guidance: describe situations the model can match, keep one dimension per Score, and combine extra dimensions in code.

Input state

Send only the fields the questions name. Official docs warn that extra unrelated state costs accuracy.

{
  "form": {
    "name": "Priya Shah",
    "company": "Northline Logistics",
    "note": "We run a 40-person ops team and want to replace our homegrown router this quarter. Can we book a technical demo the week of Oct 6?"
  }
}

Question

How sales-ready is this inbound note?

Question type: Score.

Jev schema

{
  "model": "jev-latest",
  "state": {
    "form": {
      "name": "Priya Shah",
      "company": "Northline Logistics",
      "note": "We run a 40-person ops team and want to replace our homegrown router this quarter. Can we book a technical demo the week of Oct 6?"
    }
  },
  "questions": {
    "sales_ready": {
      "type": "score",
      "instructions": "How sales-ready is `form.note`, given `form.company`?",
      "criteria": [
        "No company, no problem, or a generic 'info please' blast",
        "Named company and a real problem, but no timeline or owner",
        "Named company, a concrete problem, and a timeframe or meeting ask"
      ]
    }
  }
}

Python example

from typesafe_sdk import Score, TypeSafeClient

state = {
    "form": {
        "name": "Priya Shah",
        "company": "Northline Logistics",
        "note": "We run a 40-person ops team and want to replace our homegrown router this quarter. Can we book a technical demo the week of Oct 6?",
    },
}

with TypeSafeClient() as client:
    response = client.system_one(
        state=state,
        questions={
        "sales_ready": Score(
            instructions="How sales-ready is `form.note`, given `form.company`?",
            criteria=[
                            "No company, no problem, or a generic 'info please' blast",
                            "Named company and a real problem, but no timeline or owner",
                            "Named company, a concrete problem, and a timeframe or meeting ask",
                        ],
        ),
        },
    )

print(response.answers["sales_ready"].score)
print(response.model)

TypeScript example

import { score, TypeSafeClient } from "@typesafe-ai/sdk";

const client = new TypeSafeClient();

const response = await client.systemOne({
  state: {
    "form": {
      "name": "Priya Shah",
      "company": "Northline Logistics",
      "note": "We run a 40-person ops team and want to replace our homegrown router this quarter. Can we book a technical demo the week of Oct 6?"
    }
  },
  questions: {
    sales_ready: score("How sales-ready is `form.note`, given `form.company`?", [
      "No company, no problem, or a generic 'info please' blast",
      "Named company and a real problem, but no timeline or owner",
      "Named company, a concrete problem, and a timeframe or meeting ask"
    ]),
  },
});

console.log(response.answers.sales_ready.score);
console.log(response.model);

JavaScript example

import { score, TypeSafeClient } from "@typesafe-ai/sdk";

const client = new TypeSafeClient();

const response = await client.systemOne({
  state: {
    "form": {
      "name": "Priya Shah",
      "company": "Northline Logistics",
      "note": "We run a 40-person ops team and want to replace our homegrown router this quarter. Can we book a technical demo the week of Oct 6?"
    }
  },
  questions: {
    sales_ready: score("How sales-ready is `form.note`, given `form.company`?", [
      "No company, no problem, or a generic 'info please' blast",
      "Named company and a real problem, but no timeline or owner",
      "Named company, a concrete problem, and a timeframe or meeting ask"
    ]),
  },
});

console.log(response.answers.sales_ready.score);
console.log(response.model);

cURL example

curl -s https://api.typesafe.ai/v1/systemone \
  -H "Authorization: Bearer $TYPESAFE_API_KEY" \
  -H "Content-Type: application/json" \
  -d @- <<'EOF'
{
  "model": "jev-latest",
  "state": {
    "form": {
      "name": "Priya Shah",
      "company": "Northline Logistics",
      "note": "We run a 40-person ops team and want to replace our homegrown router this quarter. Can we book a technical demo the week of Oct 6?"
    }
  },
  "questions": {
    "sales_ready": {
      "type": "score",
      "instructions": "How sales-ready is `form.note`, given `form.company`?",
      "criteria": [
        "No company, no problem, or a generic 'info please' blast",
        "Named company and a real problem, but no timeline or owner",
        "Named company, a concrete problem, and a timeframe or meeting ask"
      ]
    }
  }
}
EOF

Expected output

{
  "model": "jev-1.13.0",
  "answers": {
    "sales_ready": {
      "type": "score",
      "score": 1.85,
      "legend": {
        "0": "No company, no problem, or a generic 'info please' blast",
        "1": "Named company and a real problem, but no timeline or owner",
        "2": "Named company, a concrete problem, and a timeframe or meeting ask"
      },
      "probabilities": {
        "0": 0,
        "1": 0.15,
        "2": 0.85
      },
      "confidence": 0.78
    }
  },
  "usage": {
    "input_tokens": 240,
    "output_tokens": 22
  }
}

Confidence handling

A middling score with low confidence is 'not enough text', not 'medium lead'. Route low-confidence rows to SDR review instead of auto-prioritizing.

Production considerations

If you also care about fit (industry) and urgency, split those into extra Scores or Nouls and weight them yourself. Official composite-scoring pattern: weights live in code so you can change them without rewriting the prompt.

Marketing inbound, partner forms, and newsletter sponsor requests.

When to use Jev

You can write three or more situational levels your sales team agrees on.

When not to use Jev

You need a calibrated dollar forecast or a count of employees from the text.

Official jaggedness notes: do not interpolate an exact magnitude between Score levels. A 1.85 is not '$185k ACV'. Company size and budget math stay in code or a CRM field.

Common mistakes

  • Levels like 'low / medium / high' with no situations.
  • Cramming ICP fit and urgency into one rubric.
  • Using a Noul of 0.5 as 'medium quality'.

FAQ

Why not a Choice of hot / warm / cold?

Those labels are ordered. Score returns a position that can sit between levels. Use Choice only if the three buckets are truly unordered workflows.

Can I use ten numeric stars?

The API allows up to 10 levels. Empty numeric labels give the model nothing to match. Describe each star.

Sources

  1. Primitives (Questions)TypeSafe · accessed 2026-09-20 · documentation
  2. Jev 1.13 jaggednessTypeSafe · 2026-09-17 · accessed 2026-09-20 · documentation
  3. ConfidenceTypeSafe · accessed 2026-09-20 · documentation

All Jev examples