Northstar — estate-plan flow

Northstar is one product at one flat fee — $3,333, paid once, the same price for everyone. A client buys their whole estate plan from one recorded sitting. This document records the architecture: what Phase A shipped (the comment-only review surface) and the design for Phase B (the recorded-sitting → draft pipeline).

The plan is exactly three documents: a will, a revocable living trust, and health and financial directives. That is the whole product at the one price — there are no tiers and no add-on modules inside Northstar. Probate / estate administration and a special-needs trust are out of scope; if a client needs one, it is a separate engagement, not a Northstar variant.

The five client-visible steps:

  1. The sitting. One unhurried, recorded conversation about the client's life, the people they love, and what they want to leave. This is the intake — structured, but it should feel like a conversation, not a form.
  2. Generation. From the recording we prepare the documents: a will, a trust, and health and financial directives.
  3. Attorney review. A licensed attorney reviews every generated document before the client sees a final draft.
  4. Online review (comment-only). The client reads each document on the website and can comment but not edit. They take the time they need; nothing is final until they have seen it.
  5. Signing. Documents go to e-signature (the existing DocuSign flow) once the client approves.

The marketing surface lives at /services/northstar (title and nav label "Northstar").

Phase A — comment-only review surface (shipped)

A matter (notation) can produce several documents the client must read before signing: a will, a trust, and health and financial directives. Each is one review_documents row holding the attorney-reviewed draft as HTML, with a status that gates client visibility:

The client reads one draft at /portal/projects/:id/review/:doc_id and leaves comments anchored to a text range. The surface is read-only — a comment is the only thing the client writes. Comments live in document_comments, each carrying a character-offset range (anchor_start/anchor_end) into the document text, the quoted_text it covered, the comment body, and a resolved flag staff flip once addressed. Comments anchor to a specific review_documents row, never to the bare notation, so the will's thread and the trust's thread stay separate.

Review viewer

The read surface is a first-party custom element, <northstar-review> (web/public/js/northstar-review.js). It upgrades a server-rendered, read-only document into a select-text-and-comment surface using the browser's Selection API (selected text and offsets) and the CSS Custom Highlight API (painting existing comment ranges) — no heavy editor framework, no new vendored dependency. Comments round-trip as form-encoded POSTs, so the existing /portal CSRF middleware guards them. The document degrades to a plain, readable page with no JavaScript.

The anchor model is engine-independent: anchors are character offsets the read surface computes client-side. If we later want a richer editor (for example TipTap/ProseMirror, which needs a JavaScript build step this Rust-first workspace does not yet have), the viewer internals can be swapped without changing the server's comment contract.

Authorization

The review surface is row-scoped exactly like the rest of /portal. A request resolves (project_id, doc_id) to a client-visible document only when, in order: the document exists, it belongs to a notation in that project, the caller may see the project (web::access::can_see_project), and the draft has been advanced past draft. Any failure returns 404, never 403 — the document does not exist from that caller's perspective. See access-model.md.

Phase B — recorded-sitting → draft pipeline

Phase B captures the recorded sitting and turns it into the attorney-reviewed drafts Phase A renders. It is feature-first: the .feature (features/tests/features/estate_intake.feature) precedes the template, and the spec uses only the Person / Entity / role nouns from the glossary. Generation routes through the existing template and workflow machinery; the workflow is hosted by workflows-service (one worker, no per-workflow pod). See notation-authoring.md and the create-legal-workflow recipe.

Workflow shape: onboarding__estate (engine shipped)

The estate matter is one notation, onboarding__estate, driven by a workflow from the shared step library. The template lives at notation_templates/onboarding/estate.md with the mirrored standalone spec at workflows/specs/onboarding__estate.yaml; the shape is pinned by workflows/tests/estate_intake_spec.rs and features/tests/features/estate_intake.feature. The states:

client_review is a new, reusable engine primitive (workflows::StepKind::ClientReview, a Respondent-driven step — the demand-side mirror of staff_review): any matter that needs a comment-only client approval before signing can bind to it. document_intake__* is the reusable provided-artifact step (workflows::StepKind::DocumentIntake) that the transcript is the first instance of; extract__* is a System seam.

Remaining integration (the live seams)

The engine — the workflow, the new step kinds, the template/questionnaire, and the deterministic test coverage — is in place, and the live edges follow the workspace's seam pattern (the same way e-signature shipped StubSignatureProvider first and swapped in DocuSign). Status:

Recording — storage, retention, transcription

These carry into the build and must not be designed away:

Settled decisions

Open — set at build time