$ indarix pipeline run --series idx_7q2
→ ingest src_a partner-api 1,248 rows 84 ms ok→ ingest src_b bulk-feed 9,310 rows 212 ms ok→ ingest src_c file-drop 436 rows 31 ms ok→ normalise schema v3.2 10,994 → 10,871 rows
→ model comparables k=23 weighted-median
✓ estimate median 10,521.00 p25 9,880.00 p75 11,340.00 provenance sha256:4f9c…e21a · deterministic
Sources3
Rows10,871
Run time327 ms
01
Licensed sources only
Every input arrives under contract or published terms. No grey data.
02
Deterministic
Same inputs, same snapshot, same answer. Every time.
03
Evidence attached
Every value names its sources and engine version.
04
Withheld, never guessed
Thin evidence returns a reason code, not a made-up number.
System
Fragmented feeds in. One signal out.
Market data never arrives clean. Formats clash, coverage overlaps, licence terms differ by supplier. Indarix resolves all of it in four engineered stages.
01Ingest
Any licensed source. One interface.
Partner APIs, bulk feeds and file drops plug into one adapter contract. Rate limits, quotas and licence scope are enforced in code, before a single request leaves the platform.
REST and bulk adapters
Per-source quotas
Credentials held server-side
02Normalise
Many formats. One schema.
Every record is mapped to a versioned schema, validated, de-duplicated across sources and stamped with its origin. Records that fail validation are rejected, not patched.
Versioned schemas
Strict validation
Cross-source de-duplication
03Model
Every number ships with its evidence.
Weighted comparables and percentile ranges, computed with exact decimal arithmetic. No floating point, no randomness, no black boxes.
Weighted comparables
Percentile ranges
Exact decimal maths
04Deliver
Clean JSON. Full provenance.
One request returns the estimate, its range and the evidence behind it. If the evidence is thin, the API says so and says why.
Versioned JSON APIs
Provenance on every response
Explicit withhold reasons
Architecture
Four stages. No black boxes.
Every stage is versioned, logged and reproducible end to end. Any result can be traced back to the exact records and code that produced it.
One adapter contract per supplier
Each supplier gets a dedicated adapter for its API, feed or file format. Nothing shared, nothing improvised.
Rate limits, quotas and licence scope are enforced in code, before any request is made.
Credentials live server-side only. Never in client code, never in a logged URL.
One versioned schema. Strict validation.
Fields are mapped, units converted and values validated. Records that fail are rejected, not patched.
Overlapping records from different sources are matched and de-duplicated.
Every value keeps a pointer to its source record and the moment it was observed.
Deterministic models. Exact arithmetic.
Comparables are selected and weighted. Percentile ranges show the spread, not just a single point.
Money and rates use decimal arithmetic. Floating point never touches a price.
Every engine release must reproduce a library of recorded cases exactly, or it doesn't ship.
Results you can reproduce and audit
Versioned endpoints return the estimate, its range and the evidence behind it.
Responses name their sources, schema and engine version, so results can be reproduced.
Thin evidence returns a reason code. The API never fills a gap with a guess.
API
Every response shows its working.
One request returns the estimate, its range and the evidence behind it. When the evidence isn't there, you get a reason code, not a guess. Built to be audited, cached and reproduced.
Versioned endpoints
Breaking changes ship under a new version. Existing integrations never break.
Money as strings
Amounts are exact decimal strings. Nothing is lost to rounding.
Reproducible by hash
Same request, same snapshot, same answer. The hash proves it.
Scoped keys
Keys are issued per partner and locked to the data that partner may use.