A browser-native simulation of an AI-assisted wildfire property underwriting workflow. The key insight: the similarity engine helps underwriters decide which way to go faster β the deterministic rating engine determines what premium that corresponds to. Built in 5 days as a take-home POC architecture demonstration.
Each new submission is evaluated from scratch. Underwriters spend time reviewing properties nearly identical to ones they decided last week β but there is no structured way to surface that prior decision as evidence. The knowledge exists; it just lives in someone's head, not in the system.
Broker quality varies significantly β submission completeness, documentation accuracy, fraud exposure. But that signal never accumulates into a structured profile the system can act on. Every submission from a new-relationship broker is treated identically to one from a trusted high-volume partner.
Every decision a human underwriter makes is immediately encoded as a labeled precedent. The next similar property retrieves those decisions as evidence, surfaces the top reasons, and pre-populates the decision rationale β so the underwriter is verifying evidence, not reconstructing it.
The k-NN similarity layer never sets a premium. fire-rates.js is the pricing authority β a relativity-rating engine with filed provisions. Mitigation deltas (βremove defensible space gap β premium drops $Xβ) come from recomputing the deterministic engine with one provision changed, not from the similarity model.
Why this matters: βwhat exactly is learned vs fixed?β β this answer is clean and survives a regulator audit.
Approve property A β neighbor B gets flagged for re-review with βstrong precedent nearby (0.87 sim Β· approve)β. B's underwriting state does not change without fresh property-level evidence. This removes the feedback-loop and geographic-discrimination risk while keeping the visual demo beat: watch B move up in the queue after you approve A.
Portfolio guardrails act as hard vetoes: a 30% geographic concentration cap blocks even a βclear approveβ recommendation.
When the k-NN store has insufficient precedent, the recommendation band is novel and a distinct notice routes the property to an independent underwriter review. Showing βI don't knowβ explicitly increases credibility β it means the confident recommendations are actually confident.
Each property is encoded as a 17-dimensional float vector over named, auditable risk indicators: proximity to ridge/canyon, slope angle, fire-hazard severity zone, construction materials, defensible space compliance, and cat-model subscores. The naming matters β underwriters can inspect and challenge each dimension.
In-memory weighted cosine similarity over 60 seed precedents + any session decisions. Under 1ms per lookup at this cardinality. In production: sqlite-vec is the zero-infrastructure swap β same interface, disk-backed, no separate server.
fire-rates.js β a deterministic relativity-rating engine: factor Γ credibility-weight per provision + cat-peril curves. Computes every premium in the demo. Mitigation deltas are a targeted recompute with one provision changed; no ML involved in pricing.
Static seed profiles keyed by broker identity β submission count, approval rate, avg premium, years active, tier (trusted / standard / new). Surfaced in the intake detail panel for every email. In production: computed from historical referral outcomes, updated after each decision.
The progression sounds like a real insurer path, not an βAI takes overβ story. Each phase reuses the same precedent store and the same rated engine β the automation surface expands, the infrastructure does not.
The guided demo panel (7-step arc) is in the collapsible at the top of the Submissions tab. Each step has a Spotlight button that switches tabs and pulses the relevant UI element. A Reset demo button in the header clears all session decisions and returns the store to the seeded 60-precedent baseline.