estimate_sanity
Deterministic classifier for story/task hour estimates against benchmarks: flags each estimate in_range, borderline, over, under, or unbenchmarked. Supply either an explicit {min, max} range per type (benchmarks) or a list of historical actual hours per type (historical) that this endpoint derives a mean/stdev variance band from - explicit ranges win when both are given for the same type. No benchmark numbers are built in; a type with neither input is reported unbenchmarked, never guessed at. POST one estimate or a batch (max 200). Deterministic, no LLM.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| flag_z | No | Default 2.0. Stdevs from the historical mean beyond which a result is "over"/"under" instead of "borderline". Must be >= borderline_z. | |
| estimate | No | One item: {id?, type, hours}. type and hours are required. | |
| estimates | No | Alternative: batch of up to 200 items. | |
| benchmarks | No | Optional. Per type: {min?, max?}. Wins over historical for the same type. | |
| historical | No | Optional. Per type: array of past actual hours (max 500 each), used to derive mean/stdev when no explicit benchmark exists for that type. Needs at least 2 values to produce a band. | |
| borderline_z | No | Default 1.0. Stdevs from the historical mean before a result is "borderline" instead of "in_range". |