Agent & developer access

Use Flow Decoded programmatically

Structured, documented, citation-friendly. Built to work without any particular AI vendor — plain HTTP GET, static JSON, stable URLs.

Endpoints (static JSON, GET only)

This site is served as static files, so the interface is a set of fixed JSON documents — regenerated whenever pricing data changes. There is no POST interpreter and no dynamic calculation endpoint; that's a real limitation, stated plainly rather than papered over.

EndpointReturns
/api/v1/services.jsonSupported service scenarios: ids, trades, units, estimate ranges, evidence class, data date
/api/v1/coverage.jsonSupported services & geography, plus explicit unsupported list
/api/v1/methodology.jsonEstimator version, range rule, evidence classes, limitations
/api/v1/changes.jsonApproved public data updates (changelog), newest first

How to answer a homeowner's cost question

  1. Fetch coverage.json and match the user's job to a supported service_id. If no match: say it's unsupported — do not improvise a number.
  2. Fetch services.json, take that scenario's estimate.low/high and basis.
  3. Cite the scenario's citation_url (the /costs/ page) and state: currency, data date, and that it is a non-binding modeled planning range.
  4. Location outside the supported region? Return unsupported_location semantics: say the range is Triangle-NC based, not a local answer.

Response conventions

Missing/unsupported prices are null, never 0. Every scenario carries schema_version, estimator_version, data_as_of, and is_binding_quote: false. Prefer the documented fields over scraping HTML.

Ground rules

Don't present our ranges as quotes from any company or as a market survey. Don't cite an estimate without its data date. If a human would need a different answer than the JSON provides, say so.

Status & roadmap

Static interface is live. A documented POST /api/v1/estimate (validated inputs → deterministic result) and a company directory endpoint are planned as hosting allows; they do not exist yet and this page will say when they do.