Frozen document. Dates and status refer to its original source. Private resources and unreviewed images are unavailable.
Spec: Branching insurance service wizards
Status: researched specification published as issue #101; the owner approved its 20-slice task graph on October 7, 2026. Expanded implementation is pending prerequisite handoffs. This extends issues #23, #24, #90 and #91 without closing or replacing them.
Problem Statement
Atlas currently presents largely one-page insurance forms. A single conditional follow-up does not represent the multi-party evidence, branching intake, corrections and continuing servicing in insurance journeys. Customers cannot see a saved, reviewable path through these stages.
Solution
Deliver Contentful-authored multi-stage wizards for all six products, with answer-driven sections and Camunda-controlled service subflows. Show progress, save/resume, branch changes, a final review and targeted follow-up. Use researched real-world patterns with explicitly fictional product rules and synthetic evidence.
User Stories
- As a customer, I want to start a named service journey with its purpose and synthetic-data notice, so that I can choose the correct service.
- As a customer, I want to move through labeled steps with Next, Back and a progress summary, so that I can understand what remains.
- As a customer, I want to save and resume the current step across sessions, so that I can avoid reentering answers.
- As a customer, I want to receive only applicable steps after answering a question, so that I can avoid irrelevant requests.
- As a customer, I want to see which later answers will be removed when changing an earlier answer, so that I can make corrections safely.
- As a customer, I want to switch en-US and es-US during the wizard, so that I can continue with the same canonical answers.
- As a customer, I want to review an accessible summary and edit its sections before final submission, so that I can correct mistakes.
- As a customer, I want to receive field errors and a focused error summary, so that I can complete the right fields.
- As a customer, I want to upload synthetic evidence with scan status and retry, so that I can know whether it is usable.
- As a customer, I want to resume a pinned form release after content changes, so that I can see consistent questions.
- As a customer, I want to continue after a connection loss with saved state and operation receipts, so that I can avoid duplicate submissions.
- As a customer, I want to see an explicit conflict after another session updates the draft, so that I can avoid overwriting newer work.
- As a reviewer, I want to receive the same case with a stage timeline and authorized evidence, so that I can review the complete submission.
- As a customer, I want to respond to a targeted request for information on the same case, so that I can avoid starting again.
- As a customer, I want to withdraw an eligible request before a committed effect, so that I can cancel unfinished work.
- As a technical operator, I want to observe uncertain operations without making insurance decisions, so that I can reconcile delivery safely.
- As a life applicant, I want to distinguish myself, the insured person, owner and beneficiaries, so that I can record the correct relationships.
- As a life applicant, I want to add multiple beneficiaries with allocations checked before submission, so that I can avoid inconsistent designations.
- As a life applicant, I want to answer structured health and coverage-replacement questions, so that I can receive applicable follow-up steps.
- As a life applicant, I want to complete EOI details and required synthetic evidence after a relevant answer, so that I can provide reviewable insurability information.
- As a life claimant, I want to select a beneficiary or authorized representative claim route, so that I can provide the right claimant relationship and evidence.
- As a life claimant, I want to respond to a missing beneficiary or authority-document request, so that I can continue the death-claim review.
- As a Medicare supplement applicant, I want to provide synthetic Medicare enrollment and coverage dates, so that I can identify the appropriate enrollment review route.
- As a Medicare supplement applicant, I want to identify an asserted open-enrollment or guaranteed-issue situation, so that I can provide evidence for human review.
- As a Medicare supplement applicant, I want to answer replacement questions only when replacing coverage, so that I can provide relevant previous-coverage information.
- As a Medicare supplement applicant, I want to complete a health-question route when the selected simulated route requires it, so that I can provide underwriter context.
- As a Medicare supplement applicant, I want to see that coverage is supplemental and no live eligibility is verified, so that I can understand the demo outcome.
- As a disability claimant, I want to describe occupation, last worked date and continuous or intermittent absence, so that I can provide the right claim context.
- As a disability claimant, I want to provide injury or illness details and a recurrence route, so that I can receive the right evidence requests.
- As an employee, I want to have employer and clinician statements tracked separately, so that I can see outstanding work without impersonating other actors.
- As an employee, I want to link a leave request to a disability case without merging approval authority, so that I can track both decisions.
- As a manager, I want to review only permitted absence and RTW information, so that I can avoid seeing medical or bank data.
- As an employee, I want to update a partial or full return-to-work plan, so that I can continue through the applicable review.
- As a dental claimant, I want to choose pretreatment estimate or completed-treatment claim, so that I can avoid representing an estimate as a payment.
- As a dental claimant, I want to provide repeatable procedure lines and service dates, so that I can describe multiple services.
- As a dental claimant, I want to complete additional tooth, surface, missing-tooth or attachment questions when applicable, so that I can support the relevant procedures.
- As a dental claimant, I want to identify other coverage and receive coordination-of-benefits questions, so that I can provide required payment context.
- As a dental claimant, I want to review an itemized synthetic benefit breakdown, so that I can understand the simulated decision.
- As a long-term-care claimant, I want to choose home care, facility care or a transition between them, so that I can provide the right provider information.
- As a long-term-care claimant, I want to describe assistance with activities of daily living or cognitive-supervision needs, so that I can provide assessment context.
- As a long-term-care claimant, I want to track clinician assessment, care plan and invoice evidence separately, so that I can see missing documents.
- As a long-term-care claimant, I want to submit later care-period invoices without duplicating the original claim, so that I can continue benefit administration.
- As an annuity owner, I want to choose partial withdrawal, full surrender or recurring-distribution setup, so that I can receive the correct servicing questions.
- As an annuity owner, I want to see qualified or nonqualified contract questions and illustrative charges, so that I can review contract-specific synthetic consequences.
- As an annuity owner, I want to identify an asserted hardship or charge-waiver reason with evidence, so that I can request human review.
- As an annuity owner, I want to review tax withholding, payout destination and consent before a fresh MFA step, so that I can authorize the intended simulated action.
- As an annuity owner, I want to track an uncertain payout and cancel only before the allowed commitment boundary, so that I can avoid duplicate or unauthorized money effects.
- As a content author, I want to author bilingual steps, conditional groups and declarative validations, so that I can change supported forms without a frontend deployment.
- As a content author, I want to have cyclic, unreachable, incompatible or untranslated wizard definitions rejected, so that I can activate only usable releases.
- As a customer, I want to have the server reject hidden fields, skipped mandatory stages and forged tasks, so that I can preserve the workflow rules.
- As an auditor, I want to trace answers, rule version, case revision and workflow task to the submitted release, so that I can reproduce the journey.
- As a tester, I want to exercise every named branch and recovery path through the integrated seam, so that I can verify more than the happy path.
- As an annuity owner, I want to review a contact or beneficiary servicing change with exact before and after values, so that I can confirm the intended update.
Implementation Decisions
- Preserve ADRs 0003, 0004, 0005, 0009, 0011, 0012 and 0013. React consumes tRPC over HTTPS from the Fastify BFF. TypeBox validates supported transport/content envelopes. Suitable private adapters may use gRPC. Contentful owns bilingual field definitions and supported declarative constraints; domain/security invariants remain owner-controlled.
- A wizard step is a presentation unit within the current authorized task. A Camunda user task is an independently assigned business handoff or durable wait. Do not create one BPMN task per text field or let a browser-side condition complete a workflow task.
- Persist wizard cursor, normalized answers and applicability with an owner revision and pinned release. Extend the record schema additively; preserve older cases and process definitions. Do not silently migrate active work.
- Compile finite acyclic step graphs with stable step/field IDs, supported conditions, canonical option values, localized copy, validation scope and declared bindings. No executable CMS expressions, arbitrary endpoints or HTML. Hidden fields cannot grant authority.
- BFF returns permitted current step, reachable progress, component tree, allowed actions, revisions, pending evidence and safe branch decisions. The server derives route and task identity; client-supplied progress is advisory.
- Save accepts partial answers but rejects unauthorized keys and invalid types. Next validates applicable current-step fields. Submit validates all reachable required stages and owner invariants atomically. Back cannot undo committed business effects.
- A changed branching answer invalidates downstream applicability. Ask for confirmation before removing entered dependent answers; retain necessary audit revisions under existing retention rules. Inactive answers never reach Camunda routing or a financial command.
- Distinguish answer-based presentation conditions from policy decisions. Camunda orchestrates evidence review, missing-information loops, reviewer decisions and onward servicing. A synthetic or asserted eligibility answer never guarantees real coverage or claim payment.
- Use existing document authorization/scanning and relationship permissions. Customer-visible status may identify a missing clinician/employer statement without exposing restricted contents. Employers cannot read insurer medical records.
- Repeated Next/save/submit, retries, stale tasks, cancellation races and uncertain effects obey existing durable command and idempotency rules. Do not add automatic mutation retries or bypass MFA requirements.
- Financial servicing depends on issue #98's fresh MFA/current-eligibility mitigation. Pending life follow-up cancellation depends on issue #99. Existing #93–#96 remain reusable narrow work, rather than duplicate tickets.
- Product-specific step and branch tables are normative acceptance details in the companion service catalog. Research references are evidence, not imported carrier policies.
Testing Decisions
- Retain the previously owner-approved local HTTPS acceptance seam: React/tRPC/BFF through real Keycloak, Camunda, PostgreSQL and ClamAV using pinned Contentful releases. Use simulated legacy and payment adapters. Repeat hosted qualification after local certification.
- Follow TDD for each tracer bullet: record an observable failing test, implement the smallest complete branch, then refactor. Test via existing product-case and draft seams where possible, with focused pure compiler validation for unsafe/unusable authoring.
- Test each named product route both when triggered and skipped; assert next authorized step/task and final business outcome. Cover correction after Back, late branch changes, save/resume, locale changes, scanned evidence, missing-information loops, unauthorized actors, stale revisions and duplicate operations.
- Include real-engine integration tests for branch selection and handoffs; UI tests for keyboard, focus, error summary, progress and review/edit; and end-to-end tests for representative complete and recovery paths for every product. Unit tests alone cannot certify a journey.
- Preserve existing owner balance, payout, payment-purpose, reservation and recovery tests. Record phase-specific commands, duration, worker provenance and available token data. Unavailable metrics remain unknown.
- A slice closes only with the approved issue acceptance evidence and review findings resolved. CodeRabbit completion is recorded only when verified. Standards and Spec reviews remain separate at shared-contract and six-product convergence milestones.
Out of Scope
Live underwriting, actual Medicare eligibility checks, real payment movement, real medical/customer information, production compliance certification, new products, automatic claims decisions derived from clinical answers, real e-signature contracts and migration of existing pinned releases. State-specific legal forms and carrier rules are not represented as universally valid policy.
Companion acceptance catalog: service stages and branch matrix. Primary-source research is linked there, with source-edition limits.
Further Notes
Use the PR skill's Summary/Evidence/Merge Danger template for all subsequent PRs. Keep one integration branch for this spec and independently verifiable tracer-bullet tickets. The to-issues publication gate requires owner approval of the concrete breakdown before implementation workers start. Existing approvals for earlier small branches do not approve this expanded graph.