Quality scoring
The verdict answers “will mail to this address be delivered?” The quality score answers a different question: “is this address worth sending to?” A deliverable role address at a catch-all domain with a prior complaint is deliverable and low quality. The two are separate axes, and the score never changes, softens or restates the verdict.
How the score is computed
The score is a transparent, deterministic weighted model — not a language model and not a black box. The same inputs always produce the same score, and you can reproduce any score by hand from the published weights below. Scoring reads data already gathered during validation; it performs no new network work, triggers no DNS or SMTP probe, and never costs a credit on any surface.
The score starts from a base determined by the deliverability verdict, then adds or subtracts a fixed weight for each factor that applies. The result is the sum of the factor weights, floored at 0 and capped at 100.
Factors and weights
| Factor | Effect | When it applies |
|---|---|---|
verdict_deliverable | +75 (base) | The mailbox accepts mail (a deliverable verdict). |
verdict_risky | +45 (base) | Delivery is uncertain (a risky verdict, such as a catch-all). |
verdict_undeliverable | +10 (base) | The mailbox does not accept mail (an undeliverable verdict). |
corporate_domain | +15 | The domain is not a free consumer provider, on a deliverable or risky address. |
role_address | −12 | Addressed to a role (info@, sales@…) rather than a named person. |
disposable_domain | −25 | The domain is a disposable / throwaway mail provider. |
catch_all_domain | −10 | The domain accepts all mail, so this specific mailbox could not be confirmed. |
prior_complaint | −15 | A spam or abuse complaint is on record for this address. |
prior_bounce | −10 | This address bounced on a previous send. |
typo_suggested | −5 | The address looks like a typo of a more common spelling. |
suppression_listed | base +10, then −5 | The address is on a suppression list (spam trap / abuse / do-not-mail). |
Weights are configuration, not code. They are published here and can be tuned by the operator without a code change; changing them is a deliberate, recorded act. The values above are the defaults shipped with the product.
Bands
Every score is also placed in a band, using the same A–F grades and cut-offs as list health, so you see one vocabulary rather than two.
| Band | Score | Reading |
|---|---|---|
| A | 90–100 | High quality. |
| B | 75–89 | High quality. |
| C | 60–74 | Moderate quality. |
| D | 40–59 | Low quality. |
| F | 0–39 | Low quality. |
When a score is not available
Where the evidence is insufficient — an unknown verdict, or an address that has not been validated — the response returns "available": false with a reason, and no number. A default of 50 for “we don’t know” would be a lie with a number attached, so we do not invent one. Likewise, checked in the provenance means the probe ran — not that the answer is certain.
Reproduce a score by hand
Every scored result carries its factors. To check a score, start from the deliverability base and add each factor’s weight; floor the total at 0 and cap it at 100.
- A deliverable corporate mailbox, no negatives: 75 (deliverable) + 15 (corporate) = 90 → A.
- A deliverable personal Gmail address: 75 (deliverable) = 75 → B (free provider, so no corporate bonus).
- A deliverable Gmail role address with a prior complaint: 75 − 12 (role) − 15 (complaint) = 48 → D.
- hello@stripe.com — a risky, catch-all, corporate role address: 45 (risky) + 15 (corporate) − 12 (role) − 10 (catch-all) = 38 → F.
Where the score appears
- /v1/validate returns an additive
quality_scoreobject alongside the existing fields — nothing else in the response changes. - explain_result (MCP) includes the score, its factors and a plain-language explanation.
- The record detail page shows the score and its factors in plain language.
- List health shows the score distribution across bands, alongside the verdict distribution.
- The list view lets you filter and export by band — for example, export only addresses in band B and up.
Scoring is free everywhere. It never deducts a credit and never changes a billing outcome.
← All docs