System overview
The main BizHedge components, trust boundaries and data flows.
BizHedge combines a static Next.js product, bounded server functions and deterministic Python analysis code. Live and keyless runs converge on the same four public stage shapes, while each published artifact crosses its own data boundary.
Main layers
| Layer | Responsibility |
|---|---|
| Browser application | Intake, stage presentation, one-question continuation, deterministic client reductions and receipt display. |
| Analysis service | Admissibility, exposure detection, candidate preparation, model selection, construction and public rendering. |
| Market-data service | Immutable generations containing ordinary contracts, multivariate contracts, event context and the Sports projection. |
| Demand service | Bounded event capture, evidence classification, cohort publication and partner-safe aggregation. |
| Receipt service | Validation, idempotent creation, public lookup, expiry and revocation. |
Trust boundaries
The model interprets and selects. It does not set prices, invent contracts or perform arithmetic. Candidate records come from one verified market generation. The server re-derives selected contract facts from that generation before sizing.
The split is concrete rather than advisory. Each fact in the product has exactly one owner:
| Fact | Owned by | The other side cannot |
|---|---|---|
| What the owner meant | Model | The application does not reinterpret owner intent. |
| Which candidate is most relevant | Model | It ranks; it cannot admit a contract the application did not supply. |
| Contract identity, strike, dates | Application | The model never receives an editable copy. |
| Paid-side price | Application | The model never sees the price it would need to change it. |
| Which side pays | Application | Direction is withheld from the model entirely. |
| Contract count, cost, payout, coverage | Application | Browser controls may reduce a plan, never exceed it. |
The browser receives public stage objects rather than internal prompts or raw chain-of-thought. Partner Demand receives a smaller normalized record shape. Shared receipts receive a fixed financial ledger with no arbitrary narrative fields.
Generation coherence
Every market fact in one analysis comes from a single immutable generation identity. Ordinary contracts, multivariate contracts, event context, combined state and the Sports projection are verified together under one manifest before an active pointer moves to them. A reader can never pair a price from one refresh cycle with event context or Sports data from another; that cross-generation join is treated as a reliability failure, and the reader holds the prior coherent generation or the bundled fallback until a complete generation activates. See market generations for the manifest and activation detail.
Live and keyless paths
A live request streams progress and completed stage objects. Keyless cases replay precomputed objects through the same event order, so product examples exercise the real public contract without depending on live model availability.
Continue with analysis lifecycle, market generations, Demand publication and public data boundary.