01Operating model overview
LynCareOS is a multi-tenant family care platform sold direct to families, not to clinical providers. Every operating decision — what to build, how to price, how to gate access, what to seed at signup — flows from one insight: families coordinating end-of-life and complex chronic care all do one of seven things.
A single deployment serves many independent tenant accounts. Inside each tenant, a
care circle of carers and observers coordinates around one or more
people in care. Data isolation is enforced both in application code and by PostgreSQL
row-level security. Carers and observers see only the patients they have been granted access to via the
patient_access table; tenant administrators see all patients in their account.
The four moving parts
- Care Archetype. The dominant daily coordination challenge — not the diagnosis. Seven patterns covering every palliative and complex-care case observed in research. Free at all tiers; selected during onboarding to drive seeding.
- Care Profile pack. A named, family-recognisable template (e.g. Cancer at home, Breathing difficulties) containing the reason types, observation types, shift task templates, and family-language guides for that pattern. Twelve canonical packs. Two free starters; seven standard at $14.99 USD each; three specialist at $19.99; bundles available at checkout.
- Care Start apply. A single transaction that copies pack content into the tenant and patient. The product promise is "ready to use in ~30 seconds" — not a marketplace badge. The function is
apply_care_start_pack(), dev-verified 2026-06-04 and live on the VPS. - Subscription tier. Three plans (Essential / Family / Complete) that govern care-circle capacity, module access, and which Care Profiles can be used at no extra cost. All commerce runs through Stripe live across seven currencies.
Why the archetype layer matters commercially
The archetype is what lets us sell to a frightened, exhausted family at signup without 30 minutes of configuration. It maps directly to a Care Profile, the Care Profile maps to a Care Start, and within a single checkout step the family lands on a workable product. The platform's largest moat is the curated pack content — not the code.
The audiences this operating model serves
Adult children, partners, neighbours coordinating around one person in care.
Records doses, vitals, observations. Tier-limited seats per tenant.
Extended family or paid agency staff who need to see, not change, the record.
Manages people in care, billing, invitations, and the active subscription.
Practitioner and provider audiences are explicitly out of scope for the consumer product. The roadmap reserves space for an opt-in "share with practitioner" export channel; today the platform is sold and operated as a family tool that a clinician may consult, not a clinician tool that a family may help with. This positioning shapes pricing ($39–$99/yr USD), language register, and the deliberate decision to stay outside the regulated medical-device space.
02The care model
The care model is the spine of the product. It tells the platform which modules to enable, which content to seed, what language register to use, and what to ask first. It is also why the onboarding can be 30 seconds rather than 30 minutes.
Seven Care Archetypes
The archetype is defined by the dominant daily coordination challenge, not the medical diagnosis. Two families managing completely different diseases may share the same archetype because the coordination shape is identical. During the People in Care wizard, the family selects the closest match; the platform activates the modules that matter most and seeds the recognisable language for that pattern.
| ID | Archetype | Coordination challenge | Modules that matter most |
|---|---|---|---|
| A | Medication Orchestra | The medication schedule is the care. | Medication, scripts, calendar, alerts |
| B | Breath-by-Breath | Oxygen, equipment, breathing crises shape every hour. | Equipment, vitals, family help, calendar |
| C | Long Watch | Slow decline; long, patient daily monitoring. | Observations, vitals, calendar, journal |
| D | Storm | Sudden, unpredictable acute events. | Pain & mind, alerts, episodes, scripts |
| E | Shrinking World | Cognitive decline, behaviour, daily routines. | Behaviour, cognition, calendar, contacts |
| F | Child Complex Needs | Paediatric medical complexity coordinated by parents. | Therapy, equipment, observations, journal |
| G | Frailty & Ageing | Frailty, falls, swallowing, multi-morbidity. | Falls, frailty, swallowing, calendar |
Archetypes are stored in condition_archetypes (V077, copy reconciled by V006). Detailed pattern definitions including daily reality, what breaks without coordination, and family-language vocabulary live in
Palliative Care Archetypes.
Twelve Care Profiles
A Care Profile is the named, plain-language version of an archetype that families recognise. Where the archetype is "Medication Orchestra," the profile is "Cancer at home." Profiles are stored in condition_packs; their content (reason types, observation types, shift task templates) lives in pack_reason_types and pack_shift_tasks (V007–V008).
| Tier | Profiles | USD | Entitlement |
|---|---|---|---|
| Free starters | general_palliative, medication_orchestra | $0 | All tiers — auto-grant unlock |
| Standard (7) | cancer at home, breathing difficulties, memory and thinking, heart and fluid, movement and muscle, child complex needs, frailty and ageing | $14.99 | Family purchase; Complete includes |
| Specialist (3) | newborn comfort care, seizure and rescue, mental health and body | $19.99 | Family purchase; Complete includes |
| Bundles | palliative care start, complete care library, paediatric family bundle | varies | Checkout add-on or Complete tier |
Care Start — the 30-second seed
Care Start is the operation that turns an unlocked Care Profile into a usable patient record. It runs apply_care_start_pack(tenant, patient, pack) in a single transaction, populating reason_types, enabling observation_types, creating shift task templates, and writing patient.archetype_id so the rest of the product knows what to recommend next.
Without Care Start, families would own permissions to a blank product. The strategic decision was made early: never charge for permissions alone; always charge for permissions + seeded content + the apply step. 25-SUBSCRIPTION-VS-CARE-PROFILES walks through the commercial implications.
Care Pathways (Planning Ahead) — the next layer
Beyond Care Start, the next major release adds Care Pathways — a staged planning journey per archetype with informative stages and optional self-placement (e.g. "Where are we in this journey?"). Specification is complete; implementation is queued at D31. Family + Complete tiers, gated by care_pathways. See 33-CARE-PATHWAYS-MODULE.
03Eleven modules and what they do
The product surface is a set of independently gated modules. Each module is a router in the FastAPI backend protected by require_module(slug); each is a route in the React PWA enabled or hidden based on the tenant's subscription. Eleven are live in production today.
The module system is what makes the three subscription tiers meaningful. Essential ($39/yr) ships with two modules. Family ($69/yr) adds eight more. Complete ($99/yr) adds the heavier clinical modules and unlocks every Care Profile. New modules can be promoted from Future to Live without changing the contract: add a row to billing/tiers.json, register the router with require_module(), and the product surface expands.
Modules shipped today
Modules planned next
How a module is gated end-to-end
1. Subscription written to subscriptions; modules expanded from billing/tiers.json. 2. Router decorated with require_module("slug") rejects requests with HTTP 402 if the gate is not satisfied. 3. Frontend reads /api/me/modules on login and renders or hides the route plus its menu entry. 4. UpgradeGate component shows the right CTA when a user navigates to a module they don't have.
04Tiers and entitlements
Three subscription plans price the platform for the family budget, not the institutional buyer. Each tier sets care-circle capacity, module access, and which Care Profiles are included at no extra cost.
Small, close family circle. Medication + calendar. 1 person in care.
Growing care circle. Adds prescriptions, vitals, sleep, observations, contacts, help. 2 people in care.
Extended network. Adds Pain & Mind, shopping, all 12 Care Profiles, future Wave 1–6 modules. 5 people.
Care-circle capacity (server-enforced)
Hard limits are read from backend/billing/tiers.json and enforced server-side in backend/services/tier_limits.py. When a limit is hit the API returns HTTP 402; the SPA renders an <UpgradeGate> with the next-tier offer.
| Limit | Essential | Family | Complete | Notes |
|---|---|---|---|---|
| People in care | 1 | 2 | 5 | max_care_recipients · +$5/yr per add-on person |
| Carers (incl. admin) | 2 | 3 | 7 | max_carers · admin counts as a seat |
| Observers (read-only) | 1 | 2 | 7 | max_observers · view but never write |
| Active medicines | 5 | unlimited | unlimited | max_medicines · null on Family/Complete |
| Reason types | 5 | unlimited | unlimited | max_reason_types |
Module access by tier
The full module-by-tier grid is the authoritative reference; the abbreviated view below shows the shipping eleven.
| Module slug | Essential | Family | Complete |
|---|---|---|---|
medication_dispensing | ✓ | ✓ | ✓ |
care_calendar | ✓ | ✓ | ✓ |
condition_templates | 2 free | + purchase | all 12 |
prescription_management | — | ✓ | ✓ |
vitals_tracking | — | ✓ | ✓ |
sleep_tracking | — | ✓ | ✓ |
key_contacts | — | ✓ | ✓ |
custom_observations | — | ✓ | ✓ |
family_help | — | ✓ | ✓ |
pain_tracking | — | — | ✓ |
shopping | — | — | ✓ |
Local pricing in seven currencies — AUD, NZD, GBP, EUR, CAD, INR, USD — is set in Stripe directly via the live switchover playbook. Adaptive Pricing remains off; the displayed price is the final price.
05Commerce & Care Profile packs
Commerce is split deliberately between the recurring subscription and the one-time Care Profile pack. The subscription pays for the platform; the pack pays for the curated content that makes the platform usable in 30 seconds.
Two revenue lines, one checkout
- Subscription — annual, three tiers, seven currencies. Stripe Customer Portal for self-service upgrade/cancel.
- Care Profile packs — one-time, attached to a tenant. Family-tier customers can add packs at $14.99 (standard) or $19.99 (specialist). Complete-tier includes all twelve.
- Add-on people in care — $5/yr each, stored as
tenants.extra_care_recipients; lifts the hard cap at any tier. - Bundles — checkout-time offers (palliative care start, complete care library, paediatric family bundle) packaged as a single line item.
Pack catalogue (canonical)
Pack slugs and pricing are authoritative in Palliative Care Archetypes §3.2; this index is for navigation.
| Tier | Slug | Family-language name | USD |
|---|---|---|---|
| Free | general_palliative | General palliative | $0 |
| Free | medication_orchestra | Medication-led care | $0 |
| Standard | cancer_at_home | Cancer at home | $14.99 |
| Standard | breathing_difficulties | Breathing difficulties | $14.99 |
| Standard | memory_and_thinking | Memory and thinking | $14.99 |
| Standard | heart_and_fluid | Heart and fluid | $14.99 |
| Standard | movement_and_muscle | Movement and muscle | $14.99 |
| Standard | child_complex_needs | Child with complex needs | $14.99 |
| Standard | frailty_and_ageing | Frailty and ageing | $14.99 |
| Specialist | newborn_comfort_care | Newborn comfort care | $19.99 |
| Specialist | seizure_and_rescue | Seizure and rescue | $19.99 |
| Specialist | mental_health_and_body | Mental health and body | $19.99 |
Pack purchases on production
Tier subscriptions are live in production. In-app pack checkout is deferred until BILLING_TIER_PLANS_ONLY=false and live Stripe pack pricing is seeded — see 21 · Stripe live switchover §4.1b. Complete-tier customers receive all twelve packs via the rank-based grant on tier upgrade today.
06Care Module — daily capture
The Care Module is where the family actually uses the platform every day. It replaces the patchwork of WhatsApp, paper notebooks, and spreadsheets with one shared workspace organised around the patient.
Each Care Module is a bounded board view: medication, vitals, observations, pain & mind, family help, calendar. Boards open from the People-in-Care list; everything inside is scoped to a single patient and uses the language register seeded by Care Start. The board pattern keeps capture under 30 seconds for the most common tasks: log a dose, record a vital, mark a shift complete.
Capture mechanics
- One-tap log dose — up to four "quick pick" pills surfaced from active scripts; full schedule one tap deeper.
- First-dose reaction check — when a medicine is logged for the first time on a patient, a non-blocking modal asks for an adverse reaction check (REQ-MED-16, live). A care alert is raised if "yes."
- Custom observations — daily logs sourced from the seeded archetype/profile types; rendered in Bollinger trend charts so anomalies are visible at a glance.
- Care alerts — durable in PostgreSQL; the bell icon and PWA badge surface them. Web Push was retired in favour of in-app awareness.
Care Module UI conventions and plug-in architecture for new boards are documented in 29 · Care Module UI architecture and 30 · Plug-in architecture.
07Family coordination
Coordination is the second-most-frequent reason families burn out — after the medical load itself. The platform gives every carer the same picture, the same vocabulary, and a shared sense of who is on next.
Calendar & shifts
The care calendar is monthly and weekly, with shift assignments, location tags, and per-shift task checklists. Coverage gaps are highlighted visually — a missing carer for tomorrow morning shows as a coloured strip rather than a silent gap. Clinical appointments live alongside shifts; the same date frame holds both the pharmacy pickup and the daughter's morning shift.
Family help board
Help is asked for explicitly. A carer posts "I need someone to drive Mum to the appointment Tuesday"; volunteers (extended family, neighbours) claim it. The board doubles as the social safety record — five months in, every family has a public list of who showed up.
Key contacts & roles
The care team directory is the single source of truth for "who do I call when…". Roles include GP, palliative specialist, pharmacist, after-hours nurse line, and family-facing roles. Observers can see the directory; only carers and admins can edit it.
Why coordination is its own thing
Hospital EMRs serve the institution, not the informal circle. Group chats and spreadsheets are not built for handover. The coordination layer is what turns a list of doses into a working roster — and it is one of the strongest sources of stickiness in the product.
08Customer journeys
Three journeys define the operating model in motion: signup & Care Start, daily capture by the family, and the upgrade flow when a family outgrows their tier.
Signup → Care Start (the 30-second promise)
- Marketing site → tier picker. Optional Care Start pack pre-selected based on archetype.
- Stripe Checkout (single transaction): tier + optional pack + optional add-on people.
- Webhook
checkout.session.completedprovisions tenant, seeds tenant_pack_purchases, activates modules. - Family signs in, runs Add Person wizard, picks archetype, recommended profile is offered.
apply_care_start_pack()seeds the patient record. Family lands on a working board.
Daily capture
- Open app (PWA). Dashboard surfaces "what's happening today" — adherence ring, next dose, one accent CTA.
- Log dose / record vital / observation. Most paths are one tap.
- Care alert raised on missed dose, first-dose reaction "yes," abnormal vital, or family help open beyond a window.
- Other carers see the change in near-real-time (SSE). Bell icon and PWA badge update.
Upgrade journey
- User attempts a gated action (e.g. add a 6th medicine on Essential).
- API returns HTTP 402;
<UpgradeGate>renders contextual upgrade card. - One click → Stripe Customer Portal → tier change. Webhook updates
subscriptionsand modules expand. - Complete-tier upgrade additionally rank-grants all twelve Care Profile unlocks via
grant_tier_pack_access().
Detailed swimlane visuals for these journeys live on the workflow page. The flows are derived from 24 · Limits & upgrade APIs §10.
09Controls & compliance
The platform deliberately stays outside the regulated medical-device space, but it carries PHI and operates a multi-tenant model. Controls are designed to be defensible to a privacy regulator and to a security-minded buyer.
Multi-tenant isolation
Every tenant-owned row carries tenant_id. Application code enforces isolation in every query; PostgreSQL row-level security is an additional backstop, not a substitute for app checks. Patient access is a second axis: carers and observers see only patients in patient_access; tenant administrators see all patients in their account. A super-admin may operate on any tenant via an explicit X-Tenant-ID header.
Identity & PHI encryption
- Identity PHI (name, DOB, contact) is encrypted at rest with platform keys, with blind-index lookups so we can search without decrypting.
- Per-tenant data encryption keys are provisioned for the next tranche of column-level encryption.
- MFA secrets use a separate crypto envelope. The encryption key must be pinned on the VPS before public launch (gate D13 / A2).
Audit & observability
Every write to a patient or commerce record carries an actor, timestamp, and tenant. Audit lives in dedicated tables; the platform runbook describes day-2 verification (07 · Platform runbook).
Backup & restore
- VPS-local backup tier — daily automated.
- Workstation offsite copy — pulled regularly. A5 + A5b complete (drill 2026-06-02).
- Cloud offsite (A8) — deferred until scale.
Launch gates
| Gate | What | Status |
|---|---|---|
| A2 / D13 | Pin MFA_ENCRYPTION_KEY on VPS | Not started |
| D20 | REQ-ENC-06 legal counsel sign-off | Not started |
| A6 | Lift marketing gate | Not started |
| C1d | Care Start clinical sign-off | In progress |
| A5 / A5b | Backup restore drill + offsite | Delivered |
10Roadmap & release posture
Private beta on a Sydney VPS with Stripe live across seven currencies. Eleven modules shipped. Care Start delivered to production 2026-06-04. Three explicit launch gates remain before lifting the marketing gate.
Master sequence
| Phase | Programme | Status |
|---|---|---|
| Phase 0 | Public launch gate (A2/D13, D20, A6) | Not started |
| Phase 1 | Care Start (D25) — seed, apply, onboarding | Delivered (open: C1d, prod pack Stripe) |
| Phase 1b | Care Module boards — interactive Care Profiles | Phase A in repo |
| Phase 2 | Care Pathways (D31) — Planning Ahead | Spec ready, not started |
| Phase 3 | International language (post-A6) | Not started |
| Wave 1–6 | Care observations, episodes, behaviour, therapy, journal, intelligence | Future |
The roadmap is the implementation Bible: it disagrees only with itself, never with the requirements register. When a feature ships, it moves from "Future" to "Delivered" and a status note is added on the same row. See 04 · Roadmap for the full master sequence.
How it's built — architecture & engineering