Hepatica — Screen Flow Workbench · Part 1

Companion to design.html (Modules 1–7 — design system, JTBD, roadmap, tab architecture, engagement loop, screenshots). This page holds the worked, screen-by-screen user flow: Module 8 — core flow & Today, Module 9 — Coach, Module 10 — Labs. The remaining tabs continue in flow2.html — Module 11 Progress · 12 Log · 13 Settings · 14 whole-app review.

📐 Screen flow · Modules 8–10 🔒 Design system · B · Clinical Tab order: Today · Coach · +Log · Progress · Labs Best practice: Cysta AI · Folik · Calibrum Continues: flow2.html · M11–14
МОДУЛЬ 8

Core flow & the Today screen — worked screen-by-screen

Standing in the user's shoes, from screen 1. The app flow map (with Onboarding & Paywall as marked future gates), the Disclaimer screen, the Today screen worked out top-to-bottom, the same Today across all 6 cohorts, and the motivating JTBD charts. Best practice borrowed from Cysta AI · Folik · Calibrum. Status: draft screens for founder review — nothing locked.

8.1 · The app flow map

The whole journey on one line — now worked end to end. The pre-auth funnel (Onboarding, Paywall) is designed in flow3.html M15–16; the post-paywall Setup walkthrough in M18. Everything from the Disclaimer inward is worked screen-by-screen across M8–13. The Disclaimer fires post-paywall — confirmed by the built RootRouter — and hands off to the Setup walkthrough, then Today.

START 📲 Launch App opens — cold start.
M15 · WORKED ↗ Onboarding WOW-then-justify funnel — 8 pre-auth screens + cohort triage. ✓ flow3.html · M15
M16 · WORKED ↗ Paywall Cohort-routed fear-playbook · 4 tiers · 7-day trial. ✓ flow3.html · M16
M8 · WORKED 🛡 Disclaimer One-time post-paywall gate — §8.2.
M18 · WORKED ↗ Setup 5-card post-paywall walkthrough — primes the first daily loop. ✓ flow3.html · M18
M8–13 · WORKED Main app Lands on Today; 4-tab + «+Log» FAB.
TodayCoach+LogProgressLabs
Why the Disclaimer was screen 1 of our work. The Disclaimer was designed first because it is the fixed hand-off point — whatever the upstream gates became, they always end here. They are now all worked: Onboarding (M15), Paywall (M16) and the post-paywall Setup walkthrough (M18). The Disclaimer fires post-purchase and hands to Setup → Today — exactly as the built RootRouter gates it.

8.2 · Screen 1 — the Disclaimer gate

A calm, plain, one-screen gate — not a scary legal wall. It sets the relationship: Hepatica is an educational companion, the doctor diagnoses. Light-mode forced. Shown once; acceptance is stored at com.love8ko.hepatica.disclaimer.accepted.v1.

Hepatica 🌿
Before you start
Hepatica is your educational companion for fatty-liver health. Here's what that means — and what it doesn't.
📚
Education, not medical advice
Hepatica helps you understand your liver markers and track change over time. It doesn't replace your doctor or hepatologist.
🩺
It doesn't diagnose
Hepatica never tells you that you have NAFLD or MASH. Diagnosis is a clinical decision only your doctor can make.
🔬
Lab, FIB-4 & FibroScan readouts are screening tools
They're here to inform your next conversation with your doctor — not to stage your liver or confirm fibrosis.
🚨
In an emergency
Severe abdominal pain, jaundice, vomiting blood, or alcohol-withdrawal symptoms — seek urgent care now. Don't wait.
Read the full disclaimer & sources →
I understand — Continue
Shown once. By continuing you acknowledge Hepatica is a Health & Fitness app, not a medical device.

Standing in the user's shoes

The user just paid. They're anxious about their liver and want to get in. This screen has to build trust in 8 seconds without scaring them back out — calm tone, plain language, one obvious button.
Sees firstA soft brand mark and "Before you start" — a friendly framing, not "Legal" or "Terms". No liver imagery (aversive, per locked anti-patterns).
ReadsFour plain points — education vs advice, no diagnosis, screening-tool framing, and an emergency line. Each is one sentence, each maps to COMPLIANCE.md.
MotivationNone yet — this is a gate, not a task. The job is to lower fear and set honest expectations so every later number is trusted.
JTBD stepPre-JTBD. The user does exactly one thing — taps "I understand — Continue" — and never sees this screen again.
ComplianceEvery line is drafted from COMPLIANCE.md — "education not advice", "doesn't diagnose", FibroScan/FIB-4 as screening tools, emergency routing. Copy is a draft — needs founder + compliance sign-off.
Borrowed — Calibrum. Calibrum's post-paywall first-run is a sequence of single-purpose screens, each with one input and one primary action. The Disclaimer follows that: one screen, one button, no forms, exit-proof. The Paywall now ships (M16) — the Disclaimer fires post-purchase, then hands to the M18 Setup walkthrough.

8.3 · Screen 2 — Today, worked top-to-bottom

The screen the user returns to every day. Shown here for Recovering Robert — the cohort whose chart is the strongest "wow". Every zone is annotated: what the user sees, what motivates them, which step of the loop it serves.

Tue · May 20Good morning, Robert
🔥 47 days
58
Liver score ↑
47
Days sober
🍺
Recovery lane
Hepatica noticed
GGT down 145 since Day 1 — consistent with the AASLD post-abstinence recovery timeline.
Liver recovery · GGTWatch
95 U/L↓ 145 since you quit
240 AASLD ref
Educational tracking — not a diagnosis. The band is the typical AASLD recovery range.
+
Log Day 48 sober
Your one daily action — keeps the streak and the curve moving.
This week6 / 7 logged
🎉
Day 60 milestone ahead
"Your liver at 2 months" — 13 days away.
💬 Ask Coach — "Is a 145-point GGT drop normal?"

Standing in the user's shoes

Robert is 47 days sober and quietly terrified the damage is permanent. He opens Today to answer one question: "Is my liver actually healing?" The screen answers it before he scrolls.
Header + streakBehavioral anchor. "47 days" is the number that is his recovery — it greets him before any clinical data.
Liver-score stripThree glanceable pills — composite score (↑ trend), streak, cohort lane. One row, one second to read.
«Hepatica noticed»The wow beat from Module 6 — a cited correlation that says "it's working" in plain words.
JTBD chartThe motivating graph. GGT 240→95, dropping through the typical-recovery band toward the AASLD line. This is the answer to "is my liver healing" — §8.5.
Today's actionOne tap — "Log Day 48 sober". The loop's daily step; everything above is the payoff for doing it.
HeatmapDual anchoring. Even on a week with no new blood test, the heatmap shows visible accumulation — momentum the biology can't give yet.
Milestone + CoachA forward pull ("Day 60, 13 days away") and a seeded Coach hand-off — no blank chat.
Borrowed — Folik (dual anchoring + the JTBD chart as hero), Calibrum (the chart, not the number, is the centre of the home screen), Cysta AI (cohort lane + insight banner). The order is deliberate: behavioral proof on top, clinical proof in the middle, the daily action and the hand-offs below.

8.4 · The same Today, across all 6 cohorts

The layout in §8.3 is fixed — but the hero chart, the daily action and the lane widget swap to the cohort assigned at onboarding. Same screen, six jobs-to-be-done. Robert is spotlighted above; here are all six side by side.

TodayNick
🔥 12
61
Score ↑
12
Scan streak
ALT trend
66 U/L↓ 26
📷
Scan today's lunch
💬+📈🧪
🍷 Newly Diagnosed Nick
"Doctor said fatty liver — what do I eat?"
Chart · 6-month ALT trend vs AASLD 40
TodayGreta
🔥 23
64
Score ↑
−18lb
on GLP-1
ALT × weight
ALT ↓34 · weight ↓18 lb
⚖️
Log today's weigh-in
💬+📈🧪
💉 GLP-1 Greta
"Show me Ozempic is working on my liver."
Chart · dual-axis ALT ↓ + weight ↓
TodayPete
🔥 9
52
Score ↑
5.9
HbA1c
Metabolic · HbA1c × ALT
both markers trending down
🩸
Log fasting glucose
💬+📈🧪
🍔 Pre-Diabetic Pete
"HbA1c 6.0 + ALT 70 — where do I start?"
Chart · dual-axis HbA1c + ALT
TodayRachel
🔥 88
55
Score ↑
F2
FibroScan
FibroScan · LSM kPa
F3 F2
12.5 → 8.1 kPa over 12 mo
💊
Log Rezdiffra dose
💬+📈🧪
💊 Rezdiffra Rachel
"Document the $40K drug is working."
Chart · FibroScan F3→F2 staging timeline
TodayPatricia
🔥 31
59
Score ↑
D14
Cycle day
ALT × cycle phase
ALT easing across cycles
💊
Log inositol
💬+📈🧪
🧬 PCOS-NAFLD Patricia
"PCOS + fatty liver — track them together."
Chart · ALT trend annotated by cycle phase
TodayRobert
🔥 47
58
Score ↑
47
Days sober
GGT recoveryWatch
95 U/L↓ 145
+
Log Day 48 sober
💬+📈🧪
🍺 Recovering Robert
"90 days sober — is my liver healing?"
Chart · GGT recovery curve + sober-day overlay
Lane routing. The cohort is assigned by the future Onboarding triage and stored as a cohort enum; Today reads it to pick the hero chart, the daily action and the lane widget. Until Onboarding ships, the lane is a Settings / debug toggle. This deepens Module 4.5's widget-reorder table into actual screens.

8.5 · The motivating charts — how each cohort sees "it's working"

The hero chart is the heart of Today. Every one follows the same grammar: the user's actual marker, a shaded typical recovery band from published guidance, the reference line, and a dashed "if the trend continues" projection. Small wobble is floored as "stable" — never drawn as a relapse.

CohortHero metricChart shapeThe JTBD it proves
🍷 NickALT6-month ALT trend vs AASLD 40 U/L line + projection"My diet is working" — rendered above
💉 GretaALT + weightDual-axis — ALT ↓ and weight ↓ on one timeline"The GLP-1 is reaching my liver, not just the scale"
🍔 PeteHbA1c + ALTDual-axis metabolic — both markers descending together"Liver and glucose are improving as one problem"
💊 RachelFibroScan LSMkPa staircase — F3 → F2 → F1 staging timeline"The $40K drug is regressing my fibrosis — documented"
🧬 PatriciaALT × cycleALT trend with cycle-phase shading, easing across cycles"PCOS and liver are tracked as one hormonal picture"
🍺 RobertGGT + sober daysGGT recovery curve vs typical band + sober overlay"My liver is healing" — rendered above
Compliance. Every chart carries an educational-tracking disclaimer; the band is a published population range (AASLD), never a personal promise; the projection copy stays conditional ("if the trend continues", "projected"); no dated outcome claim sits beside the "Reverse fatty liver" tagline; severity stays on the warm triad — no clinical red.

8.5.1 · The remaining four charts — Greta · Pete · Rachel · Patricia

Robert and Nick are drawn above. Here the other four are worked the same way, so all six hero charts exist as real artwork — not just a table row. Each keeps the grammar: the user's actual marker solid, a dashed projection, the reference line in gold. Greta and Pete carry two markers on one timeline; Rachel reads as a fibrosis-stage staircase; Patricia's line is annotated by cycle phase.

8.6 · Day 1 — the empty state that still sells

The hardest screen to design: a brand-new user, fresh past the Disclaimer, with zero data. The charts can't be blank — a blank Today reads as "nothing here". So every chart card is always rendered as a skeleton: a ghost line where the user's data will live, a pulsing "today" dot, and a caption that turns the emptiness into an invitation. Robert is worked in full below; the strip after it carries the same skeleton across all six cohorts — each Day-1 Today is shaped by that cohort's first job.

Day 1Welcome, Robert
🔥 0
Liver score
0
Days logged
🍺
Recovery lane
Liver recovery · GGTno data yet
your recovery line builds here
Add your first GGT to anchor the curve.
🩸 Log your baseline blood test
+ Log your first sober day
💬 New here? Ask Coach — "Where do I start?"

Standing in the user's shoes

This is the make-or-break moment. The user has paid and entered with nothing logged. If Today looks empty, they churn before the trial ends. The skeleton turns "empty" into "ready".
Sees firstThe full Today layout — already shaped. The score reads "—", not a fake number; honesty keeps trust.
The chartA dashed ghost line with a pulsing dot and the caption "your recovery line builds here" — the empty chart is reframed as a promise, not a void.
MotivationTwo clear CTAs — log a baseline blood test, or log Day 1 sober. The first data point animates into the ghost line; a micro-praise toast confirms ("Baseline locked — your curve starts here").
JTBD stepStep zero — "lock in the baseline". Until the user does it, every chart is a promise; after, the loop from Module 6 begins.
Borrowed — Calibrum (skeleton zero-state — every chart card always visible with a ghost line + "your line builds here") and Folik ("Lock in your baseline — without it, every chart is empty"). The empty state is a designed screen, not an afterthought.

All six cohorts — the same skeleton, six first jobs

The empty Today is not generic. The ghost hero card draws the chart that cohort will live in, and the primary CTA is that cohort's step zero — the one baseline action that turns every promise into a line. The score reads "—" everywhere; honesty is identical across lanes.

Day 1Welcome, Nick
🔥 0
Liver score
0
Scans
ALT trendno data
your ALT line builds here
📷 Scan your first meal
💬+📈🧪
🍷 Newly Diagnosed Nick
Step zero — start the food-scan habit; ALT comes at the next blood test.
Day 1Welcome, Greta
🔥 0
Liver score
0
Weigh-ins
ALT × weightno data
your dual trend builds here
⚖️ Add weight + last ALT
💬+📈🧪
💉 GLP-1 Greta
Step zero — anchor weight + a recent ALT so the two lines can pair up.
Day 1Welcome, Pete
🔥 0
Liver score
0
Logs
HbA1c × ALTno data
your metabolic trend builds here
🩸 Add HbA1c + ALT
💬+📈🧪
🍔 Pre-Diabetic Pete
Step zero — enter both numbers so the "one problem" view exists from day one.
Day 1Welcome, Rachel
🔥 0
Liver score
FibroScan
FibroScan · kPano data
your F-stage timeline builds here
🔬 Add your FibroScan kPa
💬+📈🧪
💊 Rezdiffra Rachel
Step zero — log the baseline kPa; every later scan is regression she can export.
Day 1Welcome, Patricia
🔥 0
Liver score
Cycle day
ALT × cycleno data
your cycle × liver view builds here
📅 Set cycle + add ALT
💬+📈🧪
🧬 PCOS-NAFLD Patricia
Step zero — set the cycle anchor so ALT logs land in their hormonal phase.
Day 1Welcome, Robert
🔥 0
Liver score
0
Days sober
GGT recoveryno data
your recovery line builds here
🩸 Log your baseline blood test
💬+📈🧪
🍺 Recovering Robert
Step zero — baseline GGT, or log Day 1 sober; either anchors the curve.
The universal empty-state rule. Across all six lanes: every chart card is always drawn as a dashed skeleton — never hidden, never collapsed; the Liver score shows an honest "—", never a fabricated number; the first logged data point animates into the ghost line with a micro-praise toast ("Baseline locked — your curve starts here"); and the secondary action is always present (a sober day for Robert, a meal scan for Nick) so a user with no labs to hand still has a way to start the streak. A blank Today is the single biggest Day-1 churn risk — so Day 1 is a designed screen in every cohort, not a fallback.

8.7 · Ready for review

Module 8 — ready for founder review. The core flow is worked screen-by-screen from the user's seat: the flow map (Onboarding & Paywall now worked in flow3.html M15–16, Setup in M18), the Disclaimer gate, the Today screen worked top-to-bottom, the same Today across all 6 cohorts, the six motivating JTBD charts drawn in full, and the Day-1 skeleton empty state across all 6 cohorts. Best practice is borrowed and credited — Calibrum's skeleton zero-state, Folik's dual anchoring + baseline framing, Cysta's cohort lanes. Continues directly below — Module 9 · Coach and Module 10 · Labs; Progress, Log, Settings and the whole-app review carry on in flow2.html. Nothing here is locked; on review the disclaimer copy goes to compliance sign-off and the screens become the spec for the Swift V1 skeleton.
МОДУЛЬ 9

Coach — the AI companion, worked screen-by-screen

The founder's idea: make Coach feel like a consilium of specialists, because a panel reads as more trustworthy than one generic chatbot. The tension: Calibrum and Cysta AI both ship a single AI coach, and COMPLIANCE.md forbids implying real licensed clinicians. So §9.1 runs the consilium — the 6 cohorts vote — and §9.2→9.4 iterate the winning screen built → evaluated → re-evaluated, deliberately fixing an information-overload failure along the way. Status: draft — nothing locked.

9.1 · Coach consilium — should it be a panel of doctors?

Three ways to build the Coach. The cohorts vote on which the app ships. The constraint is fixed up front: Hepatica is Health & Fitness, not Medical — no candidate may present the AI as a named, licensed, human doctor. The question is how to earn panel-grade trust without crossing that line.

CandidateConceptTrust signalCompliance
A · Single AI CoachOne neutral "Hepatica Coach" voice. Cites guidelines inline. The Calibrum / Cysta AI pattern.Citations carry the authority — one calm voice.✓ Clean — no persona risk.
B · Specialist-view panel ⭐Still one AI, but an answer can surface 2–3 labelled views by medical specialty — "Hepatology view · AASLD", "Recovery view · NIAAA", "Metabolic view · ADA". A view is a guideline perspective, never a person.Reads like a multidisciplinary review — the panel effect — while staying honestly an AI.✓ Clean — views are guideline domains, no names, no avatars, no "Dr.".
C · Doctor-avatar panelNamed, portrait-avatar "doctors" — "Dr. Hale, Hepatologist" — answer in turn.Highest surface trust… until the user clocks they're fake.✗ Blocked — implies real licensed practitioners. Rejected, not archived silently.
Cohortaud %A · singleB · view panelC · avatars
🍷 Nick25443
💉 Greta15453
🍔 Pete20353
💊 Rachel8452
🧬 Patricia15353
🍺 Robert17352
Weighted Σ1003.454.802.78

Why B — the specialist-view panel

The cohorts split on whether they want a panel at all — but never on whether they want fake doctors. Robert scores B=5 the moment a "Recovery view" reads his GGT without a single judgmental word — a generic coach can't signal that competence. Pete and Rachel score B=5 because a metabolic / hepatology split mirrors how their real care team actually works. Nick is the dissenter at B=4: anxious and newly diagnosed, he wants reassurance, not a committee — which is the warning that drives the v1→v2 iteration below.

Candidate C loses everywhere. The first time a cohort notices "Dr. Hale" is a generated portrait, every answer retroactively feels like a trick — and it puts the listing at Health & Fitness review risk. The trust a panel buys is destroyed by faking the panellists.

⭐ B · Specialist-view panel — ships A · single coach — kept as B's default one-view answer C · doctor avatars — rejected · compliance ✗
🫀 Hepatology view
Liver enzymes, fibrosis, diet — the default view for every cohort.
grounds: AASLD · EASL · Mayo
🍺 Recovery view
Alcohol, recovery timelines, relapse — the addiction-medicine perspective, non-judgmental by construction.
grounds: NIAAA · AGA · SAMHSA
⚖️ Metabolic view
Glucose, weight, GLP-1, PCOS — the cross-condition perspective.
grounds: ADA · Endocrine Society
The compliance guardrail for B. A "view" is a medical-specialty perspective, not a human: no names, no portrait avatars, no "Dr.", no fabricated credentials. Every Coach answer still carries the safety strip and a refusal-pivot path (COMPLIANCE.md); the persistent header reads "AI guidance · not a medical diagnosis". The panel feeling is allowed; the panel fiction is not.

9.2 · Coach v1 — the panel, built literally

First iteration: take "specialist panel" at face value — every answer shows all three views, each fully written out, each with its own citations. Worked here for Robert. It is faithful to the consilium… and it fails.

H
Hepatica CoachAI guidance · not a medical diagnosis
Is a 145-point GGT drop normal? I'm 47 days sober.
🫀 Hepatology view
A GGT fall of that size in the first weeks of abstinence is well within the documented range. GGT has a half-life of 2–3 weeks, so early drops are steep.
AASLD 2023 · GGT & alcohol
🍺 Recovery view
At Day 47 you're inside the window where markers move fastest. Most measurable recovery in GGT happens by week 6–12 of continuous abstinence.
NIAAA · recovery timeline
⚖️ Metabolic view
If weight and diet also shifted when you quit, some of the GGT change reflects metabolic improvement, not alcohol alone.
EASL · metabolic GGT
Educational — not a diagnosis. Discuss your results with your doctor.
Ask the Coach anything…

Evaluate — where v1 breaks

Robert asked one anxious question and got a three-part committee report. He wanted to hear "yes, that's normal" — instead he is scrolling a wall of text, and the most reassuring sentence is buried in view two.
OverloadThree views × a paragraph × a citation each is ~9 things to read for a yes/no question. This is exactly Nick's B=4 warning from the consilium — a panel can feel like homework.
Buried answerThe direct answer ("yes, normal") is implied, never stated first. The user has to assemble it from three viewpoints.
Wasted on simple QsMost questions don't need three domains. Forcing all three every time makes the panel feel like padding, not rigour.
What survivesThe view concept is good — the labels are credible and honest. The mistake is showing the whole panel unconditionally. v2 keeps the views, drops the wall.
Re-evaluation → v2. Lead with one plain answer in the user's cohort view; offer the other views as an opt-in. The panel becomes available depth, not forced depth.

9.3 · Coach v2 — collapse the panel to one answer

Second iteration. The answer leads with one view — the one matching the user's cohort (Robert → recovery). It opens with the plain verdict. The other two views collapse into a single tappable row. Same rigour, a tenth of the reading.

H
Hepatica CoachAI guidance · not a medical diagnosis
Is a 145-point GGT drop normal? I'm 47 days sober.
🍺 Recovery view
Yes — that's a normal, healthy drop. GGT clears fast once drinking stops; the steepest fall is in the first 6–12 weeks of abstinence, and at Day 47 you're right inside that window.
NIAAA · recovery timeline →
+ 2 more specialist views — Hepatology · Metabolic ⌄
Educational — not a diagnosis. A drop is encouraging, but your doctor reads GGT in full context.
Why does GGT fall first?What's next at Day 60?
Ask the Coach anything…

Re-evaluate — what v2 fixes

Robert reads five words — "Yes — that's a normal, healthy drop" — and exhales. The reassurance he came for is the first thing on screen; the rigour is one tap away if he wants it.
Verdict firstEvery answer opens with the plain-language conclusion in bold, then the why. No assembling.
Cohort view leadsThe lead view is chosen by cohort — Robert gets recovery, Rachel hepatology, Pete metabolic. The right specialty answers first, automatically.
Panel on demand"+ 2 more specialist views" expands the other views inline. The consilium's panel effect is preserved — as a choice, not a tax.
One citationOne inline citation chip → opens a source sheet. Full reference text never clutters the bubble.
Quick promptsTwo seeded follow-ups keep the conversation moving without a blank-input stall — borrowed from Cysta AI.
Borrowed — Cysta AI (verdict-first bubble + quick-prompt chips), Calibrum (one calm voice, citation as the trust anchor). v2 is the recommended layout. v3 next adds per-cohort tone and the doctor-PDF handoff.

9.4 · Coach v3 — cohort tone & the doctor hand-off

Third iteration — two refinements on the v2 layout. Per-cohort tone — the same question answered in three voices. And the doctor-visit hand-off — any conversation becomes an export Rachel can hand her hepatologist. (A dark/night surface is deferred to the Swift build — out of scope for this flow workbench.)

H
Hepatica Coachtone · per cohort
🍷 to Nick
"Elevated, but very common — and it moves. Here's the one change with the most evidence behind it."
💊 to Rachel
"ALT 64 U/L, down from 81. Tracking with your FibroScan regression — I'll add it to your visit summary."
🍺 to Robert
"That number is your liver doing the work. No judgment here — just the trend, and it's going the right way."
💬+📈🧪
🎭 Cohort tone
One ALT result, three voices — reassuring for Nick, clinical for Rachel, non-judgmental for Robert. Tone is set by the cohort, content stays guideline-true.
H
Hepatica Coachvisit hand-off
This thread covered your ALT trend, the FibroScan drop and a Rezdiffra side-effect question. Want it as a doctor-visit summary?
3 cited sources in this chat
📄 Turn this conversation into a doctor-visit summary
📑 Visit Summary · PDF
Questions to ask · marker trends · each with its guideline citation
💬+📈🧪
📄 Doctor hand-off
Any Coach thread exports to a print-ready visit summary — the Calibrum "Brief" pattern. Drives Rachel's insurance-documentation JTBD; shared with M11's Progress export.
Refusal pivots are spec'd into the composer. Per COMPLIANCE.md, the Coach never diagnoses, never advises a medication change, and routes crisis input (acute symptoms, withdrawal, suicidal ideation) to ER / 988 / urgent care. A "can't answer that" always pivots to something it can do — "I can't confirm a diagnosis, but I can summarise your trend for your doctor". No answer ships without a citation or a pivot.

9.5 · Coach — ready for review

Module 9 — ready for founder review. The consilium settled the founder's question: ship the specialist-view panel (Candidate B, weighted Σ 4.80) — panel-grade trust without faking doctors; the doctor-avatar route (C) is rejected on compliance and documented as such. The screen was then iterated in the open: v1 built the panel literally and failed an overload test, v2 collapsed it to a verdict-first answer with the panel one tap away, v3 added per-cohort tone and the doctor-visit hand-off. Recommended to lock: v2 layout + v3 refinements. To compliance sign-off: the view labels, the "AI guidance · not a medical diagnosis" header, the safety-strip wording and the refusal-pivot set.
МОДУЛЬ 10

Labs — the analytes shown immediately, Calibrum-style

The founder brief: Labs must open like Calibrum and Cysta AI — the user sees their actual markers the instant the tab loads, each with a reference range and an in-range / watch / out-of-range read. No "scan something first" wall. Lab capture (camera · PDF · manual) lives in this tab too. §10.1 runs the layout consilium, §10.2 works the analyte grid, §10.3 reorders it per cohort, §10.4 the capture flow.

10.1 · Labs consilium — what does the tab open to?

Three things the Labs tab could show first. The cohorts vote. The brief already rules out the empty-wall pattern — the consilium confirms it and picks the shape.

CandidateTab opens to…Pre-data stateVerdict
A · Upload-firstA big "Add your labs" CTA. Analytes appear only after a scan.A blank wall — the exact churn risk §8.6 fights everywhere else.✗ Rejected
B · Analyte-grid first ⭐The analyte cards immediately — ALT · AST · GGT · ALP · FIB-4 · HbA1c — each with value, reference range and verdict. "Add Lab Panel" is a row at the top.Ghost analyte rows with "—" + "Add to see your value" — never a blank tab.✓ Ships
C · Single-score firstOne composite "Liver Panel score"; analytes are a drill-down.Works, but Today already owns the composite score — Labs must show the components.✗ Rejected
Cohortaud %A · uploadB · gridC · score
🍷 Nick25253
💉 Greta15253
🍔 Pete20252
💊 Rachel8352
🧬 Patricia15253
🍺 Robert17253
Weighted Σ1002.135.002.72

Why B — the analyte grid, unanimous

Every cohort opens Labs to answer one question — "are my numbers OK?" A upload-first or score-first tab makes them tap twice for an answer that should be the first thing on screen. B is the only candidate that respects why the tab exists. The Liver score belongs to Today; Labs is where the user reads the parts. Calibrum and Cysta AI both land here for the same reason.

⭐ B · Analyte-grid first — ships A · upload-first — rejected · blank wall C · score-first — rejected · duplicates Today
The empty-state rule, applied to Labs. Pre-data the analyte cards still render — name, reference range, and a ghost "—" value with "Add to see your value". The §8.6 skeleton principle holds: the tab is never blank, the structure always teaches what's coming.

10.2 · Labs — the analyte grid, worked

The Labs tab for Robert, with one panel logged. Add-panel row on top; the analytes below, each a card with the value, a reference-range bar showing where the user sits, and a verdict on the warm triad. GGT is pinned for Robert (§10.3 covers per-cohort pinning).

LabsYour liver panel
📷
Camera scan
📄
Upload PDF
✏️
Manual entry
Latest panelApr 12 · LabCorp
GGT · alcohol-sensitive
Watch95 U/L
0AASLD ref · <50250+
↓ 145 since your first panel. Most alcohol-related GGT clears within the first 6–12 weeks of abstinence — keep tracking the trend with your doctor. AASLD 2023
ALT · U/L
Watch41 U/L
0AASLD ref · <40120+
AST · U/L
In range34 U/L
0AASLD ref · <35120+
ALP · U/L
In range88 U/L
0ref · 44–121200+
FIB-4 · fibrosis index
Low risk1.1
0low <1.3 · high >2.674+
Educational — reference ranges are AASLD population thresholds, not a personal diagnosis. FIB-4 is a screening index, not biopsy-equivalent.

Standing in the user's shoes

Robert opens Labs the day after a blood draw with one question — "how bad is it?" The grid answers per marker in one glance: the dot's position on the range bar and its colour are the answer, before he reads a single number.
Sees firstThe add-panel row then the analytes — open instantly, no empty wall. The Camera-scan tile is gold-highlighted as the fastest path.
Range barEach marker plotted on a good → watch → out-of-range track. The dot's position is the verdict; the pill just names it. Warm triad — no clinical red.
Pinned analyteGGT sits on top for Robert with an interpretation note + citation — his JTBD marker. The pin is cohort-driven (§10.3).
Reference framingEvery range cites the AASLD threshold; FIB-4 is labelled a screening index. Copy never says "you have" — per COMPLIANCE.md.
JTBD step"Read where I stand." Tapping any card opens its trend; the trend lives in Progress (§11) — Labs answers now, Progress answers over time.
Borrowed — Calibrum (the analyte-row grid with verdict pills, visible the second the tab opens), Cysta AI (the pinned primary analyte with a full interpretation + guideline citation, compact grid for the rest).

10.3 · The same grid, six emphases

The analyte set is the same; what changes is the pinned-top card — the cohort's JTBD marker, expanded with an interpretation note. Everything else collapses into the scrolling grid below it.

CohortPinned-top analyteSecondary emphasisWhy
🍷 NickALTASTThe number the doctor named — "your ALT is high".
💉 GretaALTGGT · weight contextProof the GLP-1 reached the liver, not just the scale.
🍔 PeteHbA1cFIB-4 · ALTMetabolic syndrome is read glucose-first.
💊 RachelFibroScan LSM (kPa)FIB-4 · ALT/ASTFibrosis stage is the insurance-documentation marker.
🧬 PatriciaALT (cycle-tagged)HbA1cLiver marker read in its hormonal-phase context.
🍺 RobertGGTAST · ALTThe fastest-moving alcohol-recovery marker — rendered in §10.2.
LabsPete
HbA1c
Watch5.9 %
4pre-diab 5.7–6.49+
Down from 6.1. Glucose and liver move together — keep both in view.
FIB-4
Low1.2
ALT
Watch52 U/L
💬+📈🧪
🍔 Pre-Diabetic Pete
HbA1c pinned — metabolic syndrome is read glucose-first, ALT second.
LabsRachel
FibroScan · LSM
F28.1 kPa
F0F2 · 8–10 kPaF4
Down from 12.5 kPa (F3). FibroScan is a screening tool — staging is your hepatologist's call.
FIB-4
Mid1.9
ALT
In range36 U/L
💬+📈🧪
💊 Rezdiffra Rachel
FibroScan pinned as a distinct kPa + F-stage card — her insurance-documentation marker.
LabsNick
ALT
Watch66 U/L
0AASLD ref · <40120+
The number your doctor flagged. Elevated, common, and it responds to diet — track it here every panel.
AST
Watch44 U/L
FIB-4
Low0.9
💬+📈🧪
🍷 Newly Diagnosed Nick
ALT pinned — the one marker his doctor named, with plain-English context.
Compliance on the Labs tab. Reference ranges are AASLD population thresholds, shown as ranges — never "normal/abnormal for you". FibroScan and FIB-4 carry the screening-tool disclaimer (COMPLIANCE.md): kPa and F-stage are self-logged tracking, staging is a clinical decision. No card says "you have NAFLD/MASH"; the warm triad replaces clinical red so an out-of-range value reads as "discuss this", not "alarm".

10.4 · Adding a panel — scan · PDF · manual

Three ways into the grid, all reachable from the add-panel row. Camera scan is the fastest and the default-highlighted; the OCR pipeline is reused wholesale from Cysta AI's lab interpreter.

Add panelCamera scan
edges detected ✓
ALT41 U/LOCR 99%
GGT95 U/LOCR 97%
AST34 U/Lcheck
Review & save 5 markers
💬+📈🧪
📷 Camera scan
Snap a LabCorp / Quest printout. Auto edge-detect, perspective-correct, per-marker OCR confidence; low-confidence rows flagged "check" before save.
Add panelUpload PDF
📄
Pick a lab report PDF
Files · Mail attachments · iCloud Drive
1Emailed lab PDFs import directly — no printing.
2Multi-page reports accumulate into one panel.
3Same OCR review screen before save.
The PDF is parsed on-device, then discarded — nothing is stored on Hepatica's servers.
💬+📈🧪
📄 Upload PDF
For the emailed report — the most common format. Multi-page accumulator; on-device parse, no retention.
Add panelManual entry
ALT_ _ U/L
GGT_ _ U/L
AST_ _ U/L
+ add another marker
FIB-4 auto-calculates from AST + ALT + platelets + age.
Save panel
💬+📈🧪
✏️ Manual entry
For when the user only has the numbers read to them. FIB-4 is computed, never typed — one less thing to get wrong.
Shared with the +Log FAB. The "🩸 Lab" capture option in the Module 12 log sheet routes into this exact same scan / PDF / manual flow — capture is built once and entered from two places. Privacy: lab images and PDFs are processed on-device for OCR and then discarded; nothing is uploaded (COMPLIANCE.md · privacy).

10.5 · Labs — ready for review

Module 10 — ready for founder review. The consilium was unanimous (B · analyte-grid first, Σ 5.00): Labs opens straight to the markers — value, reference-range bar, warm-triad verdict — with the add-panel row on top and no empty wall. §10.2 worked the grid for Robert; §10.3 pins the JTBD analyte per cohort (GGT · ALT · HbA1c · FibroScan); §10.4 worked the three capture paths, OCR pipeline reused from Cysta AI. Compliance: AASLD reference ranges, FibroScan/FIB-4 screening-tool disclaimers, no diagnosis copy, no clinical red. Progress · Log · Settings · whole-app review continue in flow2.html.