@OPENQUOTESTACK/SCHEMA / *.OQS.JSON

An estimator. Represented as data.

A portable contract for questions, conditions, prices and presentation. Validate it at the boundary, use it beyond the application.

SCHEMA VERSION 1JSON-COMPATIBLE STRUCTURESRUNTIME VALIDATION + TYPES

Readable files.
Explicit meaning.

The document wrapper carries a schema version, an estimator and optional template metadata. Inside: steps, typed fields, choices, validation, conditions, rules, constants and output settings.

Unknown properties and broken references fail. Unsupported versions are rejected rather than guessed. Older strict readers can reject newer version-1 authoring additions, so compatible package versions still matter.

The public Schema contract
validate.tstypescript
import { parseDocument, parseEstimator }
  from "@openquotestack/schema";

// input is parsed JSON data, not executable code.
const document = parseDocument(input);
const estimator = parseEstimator(input);

document.schemaVersion; // "1"
estimator.steps;
estimator.rules;

Portable by design.
Bounded by validation.

Conditions and formulas are data. There is no arbitrary JavaScript to execute. Field keys, choices and rules use stable identifiers; references are validated before a calculator is published.

Validation limits document size and depth, validates default values and preserves authored hidden values. Schema migrations will be explicit; automatic migration tooling is not shipped.

Start with a real file.

Download a complete Moving, Cleaning or Agency template. Edit the definition, validate it, and import it as a new estimator. No tenant secrets or customer records belong in a portable file.

Download the templates
Format and compatibility guidance

Author a working template.

Start with a downloadable room-cleaning example, validate its definition, calculate a known result and import it into the application.

Template authoring walkthrough

OPEN SOURCE / OPEN POSSIBILITIES

Pricing logic
should belong to you.