If you were asked to build just this flow: business analysts & actuaries author products (line → form → provisions → options) and the rules, versioned by effective date. It is write-rarely, read-constantly (every quote reads a product version). Every other flow is a black box here — they only ask "give me the product version effective on date D" and receive an immutable document (how product versioning works — worked example). Advance the maturity stage to see it grow.
Every cross-flow arrow is the same async handoff — no flow calls another directly. 1. The sending flow commits its data row plus an outbox row in one transaction. 2. A relay publishes the event to the event bus (Pub/Sub on GCP · EventBridge→SQS on AWS). 3. The bus's push-subscription POSTs it to the receiving flow's Cloud Run API, which processes it idempotently (duplicates ignored, deduped on event_id). The getProductVersion read below is a plain synchronous request/response, NOT an event.
product_version row (effective-dated; never an in-place edit) plus an outbox row holding ProductVersionPublished, then commits.ProductVersionPublished {version id, line/form, effective date} to the bus; Underwriting and Pricing consume it to warm their caches.getProductVersion(line, form, asOfDate) returns the immutable doc, served from a CDN + read replica so the hot read never touches the authoring primary. (Worked example: how a version is resolved.)product_version id onto the policy, so you can reproduce exactly what was shown and sold.product_version row; in-force policies keep their stamped version until renewal rolls them onto the current one.| Direction | Contract | Who |
|---|---|---|
| Emits | ProductVersionPublished {version id, line/form, effective date} | Underwriting, Pricing (warm caches) |
| Read API | getProductVersion(line, form, asOfDate) → immutable doc | Customer, Underwriting, Pricing |
| Consumes | — (this flow is upstream of everything) | — |
No other flow touches this database. They see only the published versions + the read API — so Product can be built, deployed, and scaled on its own.