# Precision & intervals

A valuation is an estimate of the asking-price market for one vehicle, not a guaranteed transaction price, settlement value or offer to buy. This page explains the parts of a result that tell you how far to rely on it, and how to present them.

## The price and its basis

`valuation.price` is a point estimate in `valuation.currency` for `valuation.price_basis`:

| `price_basis` | Estimates |
| --- | --- |
| `dealer_retail` (default) | The expected asking price when the car is freshly listed by a dealer. |
| `private_sale` | The expected asking price when a private seller lists it. |

Neither is a trade-in price or a final sale price. Always show the price with its currency and `price_basis_description`, which is written for display.

## Uncertainty intervals

`valuation.intervals` gives ranges around the estimate at three coverage levels:

```json
{
  "intervals": [
    { "coverage": 0.8, "low": 82138, "high": 123208, "method": "synthetic" },
    { "coverage": 0.95, "low": 66737, "high": 138609, "method": "synthetic" },
    { "coverage": 0.99, "low": 51337, "high": 154010, "method": "synthetic" }
  ]
}
```

`coverage` is the intended share of comparable vehicles whose market price falls inside the range: about 80% for the first, 95% and 99% for the others. It describes the model's calibration across many vehicles. It is not a guarantee for one particular car.

- Show the **80% interval** as the everyday range ("most comparable cars are listed between ..."). Use the wider ones for risk decisions such as lending limits.
- A narrow interval with a weak precision grade is still a weak result. Read them together.
- `method` says how the interval was produced: `calibrated` when it is calibrated against observed market outcomes, `estimated` otherwise. Test results use `synthetic`.

## The precision grade

`precision.grade` combines the model's own uncertainty with how well the vehicle was identified:

| Grade | How to use it |
| --- | --- |
| `high` | The vehicle is identified in detail and the market is well covered. Suitable for automated decisions within your own rules. |
| `medium` | Useful context with some identity or market uncertainty. Show the interval prominently. |
| `low` | Important details are missing or assumed, or the estimate is wide. Ask for more details before relying on it. |
| `indicative` | A broad market indication only. Every test-key result is `indicative`. |

A broad catalogue match, an assumed mileage or a missing important attribute lowers the grade. An assumed mileage (the 96,000 km baseline) or assumed equipment (`options.allow_equipment_estimation`) caps it at `low`. `precision.summary` explains the grade in a sentence you can show.

If you cannot use a result below a certain grade, send `options.min_precision`. A result below it is refused with `precision_below_minimum`, for free, and the refusal lists what to add. See [improve precision](/docs/guides/improve-precision).

## Other precision fields

| Field | Meaning |
| --- | --- |
| `precision.identity_level` | The most specific catalogue level that was resolved, such as `generation` (the vehicle's `identity.body`) or `drivetrain`. Below `drivetrain`, pinning the exact drivetrain usually helps most. |
| `precision.interval_width_pct` | The width of the 80% interval as a percentage of the price, or null. Useful for sorting or thresholds. |
| `precision.typical_error_pct` | The typical error of comparable estimates as a percentage, or null when it is not available. |
| `precision.data_support` | How much comparable market data stands behind the estimate: `comparable_vehicles` is a lower bound (0, 10, 30, 100, 300, 1000, 3000 or 10000), not an exact count. Empty for test results. |

## Price ratings

`price_ratings.bands` divides the price range into AutoUncle's five price ratings for this vehicle:

| `rating` | `label` |
| --- | --- |
| 5 | Super price |
| 4 | Good price |
| 3 | Fair price |
| 2 | A bit expensive |
| 1 | Expensive |

Each band has `from` and `to` prices in the market currency. Send `pricing.asking_price` to have a listing rated: the result then includes `asking_price_rating` and `asking_price_label`.

`stable_within_80pct_interval` tells you whether that rating holds anywhere in the 80% interval. When it is `false`, the rating could change if the true market value sits elsewhere in the interval; present it with care, for example as "around a good price". Without an asking price, all three fields are `null`.

## Warnings and hints

`warnings` reports problems with this request's input, such as `generation_ambiguous`, `equipment_not_recognized`, `images_not_used` or `km_imputed`. `improve_precision` lists the inputs that would make the result more precise, each with an `expected_impact` of `high`, `medium` or `low`. The impact is qualitative: it does not promise that the price or the interval changes by a fixed amount. See [improve precision](/docs/guides/improve-precision).

## Presenting a valuation

A good display has, at minimum:

1. The price with currency and the price basis description.
2. The 80% interval.
3. The precision grade or summary.
4. The resolved vehicle, so the reader can see which car was valued.
5. Any `attribution_text`, and the notes that apply (see [show notes & attributions](/docs/guides/notes-and-attributions)).

Avoid wording such as "worth", "offer" or "guaranteed". Prefer "estimated asking price" and "most comparable cars are listed between ...". Never show a test-key result to end users: it is simulated, always `indicative` and carries a `synthetic_result` note.
