Steps
- Pick the metric & subject. Reuse an existing metricId and subjectType/subjectId where possible.
- Transcribe the value from the source. Record value, unit, periodLabel, and the exact asOf date from the cited source — confirm it directly.
- Set dataMode & confidence. dataMode 'live' only when genuinely sourced and current; otherwise 'sample'. confidence high/medium/low by source quality.
- Set lastReviewed. The date a human verified the value against the source (live rows).
Rules
- Every observation needs a sourceId, confidence, dataMode, and asOf.
- If the value cannot be confirmed from the source, stop and report — never guess.
- Freshness/review is computed against site.dataAsOf; no runtime clock.
What not to do
- Do not present sample/placeholder figures as real or current.
- Do not attribute a price move to an event unless the source supports it.
Example
Brent at $X/bbl (May 2026), dataMode 'live', confidence 'high', sourceId 'eia-brent', asOf '2026-05-..'.
No scraping, scheduled jobs, runtime APIs, or real-time claims. See the methodology, the developer guide, and the data needs backlog. Machine-readable: /methodology/add-observation/data.json.