HMM Clinic · Session handoff

Root Cause Assessment, picked up cold

Everything decided, built, found and left open on 2026-08-11. Written so a fresh session can resume without re-reading the meeting, the Notion pages or the source PDFs. Work is PAUSED pending the Practice Better replacement being designed in a separate session.

2026-08-11 · paused, not abandoned · the infrastructure decision below will change how several of these are built

HMM Clinic is a practitioner-led lab assessment product at $1,197, delivered by Maria rather than Jes, designed to add revenue without adding Jes's hours. Maria proposed it and built most of it. It is close to shippable and blocked on one thing.

Launch blocker: the local analysis pipeline does not exist yet

The client agreement's AI section represents that client data is processed on company-controlled infrastructure and never sent to third-party AI products. That is currently false. Today Jes pastes redacted client lab data into a general-purpose Claude project. Shawn's decision on 2026-08-11: build the local pipeline first, do not launch without it.

Why this is paused and what will change. HMM is moving off Practice Better entirely and building its own UI against Supabase, with client data living locally on the NAS. That work is happening in a separate Claude Code session. It changes where forms live, where labs get uploaded, how the client portal works, and therefore how the intake extractor and the delivery step get built. Do not start building the pipeline's intake half until that structure is settled.

What is safe to do while paused

  • The questionnaire content changes, which are portable to any form builder
  • Adding the four new markers to biomarkers.json
  • Attorney review of the client agreement, once the AI section's sequencing is confirmed
  • Maria's DHA conversation about bundling the added markers
07People, voice and constraints

Who does what, whose credentials the disclaimers hang on, and the scope-of-practice rules that govern every word written for this product.

Open →
← Start here

Decisions locked

All settled on or before 2026-08-11. Treat as decided unless Shawn reopens them.

DecisionDetail
One panel, blood onlyDHA Laboratories PMDD Comprehensive plus four added markers: Insulin, GlycoMark, TPO Ab, Thyroglobulin Ab. No HTMA, no GI map, no DUTCH. Reason: nothing to mail, any practitioner can order it, and it keeps HTMA/GI/DUTCH as Jes's premium differentiator.
Price$1,197 all-in, bundled. Not $897 plus labs; that was considered and rejected because a single panel removes the adverse-selection problem that unbundling was solving.
NameKeeps "Mood" in the title. Marketing stays cycle and mood focused. Do NOT market it as broad women's health. Shawn's argument, accepted in the meeting: HMM is the PMDD brand and that is the only door with traffic.
Delivery modelNo live calls, ever. Recorded findings video (10 to 20 min), root cause summary, PDF protocol, supplement recommendations via Fullscript, nutrition and lifestyle guide, educational resources, personalized habit tracker. Follow-up message at day 7. ONE round of clarification questions within 14 days, limited to clarifying existing recommendations.
EligibilityUnited States only, EXCLUDING New York State (lab restriction). No international. No HTMA fallback for excluded clients; that was considered and rejected as over-complicating launch.
CheckoutStripe. HMM is moving off Kajabi. Settles Section 2 of the client agreement.
Document renderingGenerated locally, as a second document type in ~/hmm-lab-report/generate_report.py. Canva autofill was considered and rejected: the template is not fieldable, and autofill would send client health data to Canva. Maria's Canva template is now the design brief, not infrastructure.
Practice BetterBeing replaced entirely with an HMM-built UI on Supabase, data local on the NAS. Decided 2026-08-11, being designed in a separate session.
Habit trackerBuilt in-house, not Maria's Netlify version. Must share schema and backend with the HMM app's daily homepage check-in so it is not built twice. Cap generated habits at five to seven.
Pilot volume4 per month in the written proposal. Maria says 8 per month is comfortable. Nobody expects to hit either at launch.
Launch orderLocal pipeline before launch. Not negotiable per Shawn.

Considered and rejected, do not re-propose

  • $897 plus labs at cost. Client would pay $1,222, more than the bundle, for a less certain price.
  • A menu of four panels. Flat price with client choice means everyone picks the most expensive one, and a woman who does not know why she feels terrible cannot choose between a DUTCH and a GI map anyway.
  • A $1,697 DUTCH-inclusive tier. Superseded by the single-panel decision.
  • Broad women's health positioning. Fertility, ADHD, perimenopause as marketing categories. Rejected in the meeting; note the sales page draft still contains this language and needs editing.
← Start here

Money

Unit economics at $1,197

LineAmountNote
Revenue$1,197All-in, one charge
Lab (DHA)$344Comprehensive plus the 4 added markers. Maria to ask DHA about a bundled rate.
Practitioner$300Maria's own number. Covers the whole clinic job end to end INCLUDING the build. She did not ask to be paid separately for building it.
Izzy commission~$11910%. Which base, and refund clawback, both unresolved.
Card processing~$35Stripe 2.9% + 30c. Not returned on refunds.
HMM margin~$400Intended to fund promotion, so the division is roughly break-even by design at pilot scale.
Unmodeled revenue nobody has counted. Supplement protocols run through the HMM Fullscript dispensary, which pays a practitioner margin, realistically $30 to $100 per client. It is not in the model and it should be, and it is also why the client agreement now carries a strengthened Fullscript compensation disclosure.

Compensation structure, settled

  • Maria, $300 per assessment. All-in, her figure, covers the build.
  • Maria, hourly increase from $25 to $32. This is for assistant work, content, and PMDD Rehab course production. Entirely separate from the clinic. It was NOT a request for system-owner compensation; that was an early misreading.
  • Maria, 10% of clinic profit. Critically, on EVERY assessment the clinic delivers, not only the ones she personally works. If it only paid on her own clients the incentive runs backwards and she loses income by training anyone. Roughly $40 per assessment.
  • Izzy, 10%. Base and clawback unresolved.

The hours problem, which is the real constraint

Maria's own breakdown, given unprompted in the meeting:

StageTime
Order labs from intake10 minutes
Interpret labs against intake2 to 3 hours, the bottleneck
Record the findings video1 to 2 hours for the first few
Build the protocol1 to 2 hours
Total4 hours best case, 9 worst

At $300 that is $33 to $75 an hour. Shawn's target, stated in the meeting: get it to a four-hour job. Jes independently reports her own lab reviews take about 3 hours even with Claude helping.

Maria's read on the labor market, which is better informed than any outside assumption. She says NTP Facebook groups treat $25/hr as decent and $75/hr as unrealistic, and that $300 per client is a genuine draw when recruiting. The "can we hire practitioner #2" risk is smaller than it looks. The workload risk is not.

Competitor pricing, gathered live in the meeting

WhoPriceFor
Cambria (NTP, large following)$2,000+Blood labs, written protocol only
Laura Lyons$777Gut clarity test plus foundational bloodwork
A "Maria" brand$700 to $800DUTCH, video, protocol, 3 months community. Jes and Shawn both read this as a subscription loss leader, since a DUTCH alone costs the practitioner ~$400.
Amanda Montaldo$200HTMA review only, outsourced, client buys the HTMA separately

Other lab costs on file

GI map $350 · blood panel $265 · DUTCH + saliva cortisol $410 · HTMA $60 · clinic panel (comprehensive + 4 markers) $344

← Start here

The pipeline

Full design at hmm-clinic-pipeline.pages.dev. Summary here so this document stands alone.

0 intake submitted / lab PDF arrives ──┐ triggers 1a intake extraction ───────────────────┤ local model, structured JSON 1b lab extraction ──────────────────────┘ existing ~/hmm-lab-report 2 correlation engine ────────────────── DETERMINISTIC, no model 3 ══ PRACTITIONER GATE ══ Maria reviews and overrides 4 generation ────────────────────────── macros calculated, prose written 5 render ────────────────────────────── local, generate_report.py

The two design rules that matter

Keep the two inputs blind to each other until stage 2. Hand a model labs and symptoms together and it rationalises, finding a story that fits regardless of evidence. Extracting each side independently makes the convergence at stage 2 real information.

Rules pick the priorities, the model writes the prose. Scoring must be deterministic: reproducible, auditable, correctable, and incapable of inventing a finding. A model asked to rank priorities produces a plausible list that varies run to run and cannot be fixed durably.

The lab half already exists. body_systems.py and health_concerns.py score 35 categories against a blood panel: 11 body systems including Thyroid Function with TPO and Thyroglobulin already mapped, plus Adrenal, Inflammation, 7 nutrient-status groups, and 16 patient-facing health concerns whose copy is already written in wellness-coach scope. _score_system() returns a 0-100 score, a likelihood band, markers found and missing, and a direction arrow per marker. That is the evidence trail the design needs, already emitted.

What is genuinely new

  • An intake extractor, questionnaire to structured JSON, with the typical-day walkthrough as its own pass. Biggest new piece.
  • An intake scorer mirroring _score_system() so both halves emit the same shape.
  • The convergence step plus a reduction from 35 scored categories down to the five a client reads.
  • A practitioner review gate, built BEFORE any generation.

Scoring shape

priority_score = lab_signal + intake_signal + convergence_bonus

lab_signal    = weighted sum of that priority's markers by deviation
intake_signal = weighted sum of symptom fields by severity
convergence   = large bonus when BOTH sides fire
divergence    = flag for practitioner attention, NOT a score penalty

Nervous system, sleep and lifestyle score from intake only. No blood marker reaches them, which is exactly why the questionnaire fixes matter.

Gotchas already found

  • GlycoMark reads backwards. Low indicates postprandial glucose excursions, so its deviation logic is inverted relative to nearly every other marker. Encode explicitly.
  • cycle_dependent already exists as a zone in the scoring model, so the machinery for cycle-varying markers is built and currently fed nothing. Capturing cycle day at draw activates it.
  • Several strong signals are ratios, not single markers: triglyceride to HDL, percent transferrin saturation, free T3 to reverse T3, sodium to potassium, neutrophil to lymphocyte. Compute at extraction time.

Questionnaire changes, ready to apply

Full detail at hmm-clinic-questionnaire.pages.dev. Fifteen edits: 8 free-text fields converted to scales, 6 new questions, 1 structural. These are portable to any form builder, so they survive the Practice Better replacement.

The important one: the form never asks about mood in a structured, comparable way, on a product named the Mood Root Cause Assessment. Also missing: temperature intolerance, hair/skin/nail changes, dizziness on standing, cycle-timed headaches.

Do not touch the menstrual cycle section. Flow 1 to 10, clot size, clot frequency, bleeding days and colour together give a real menstrual blood loss estimate that sits against ferritin, saturation, haemoglobin, MCV and RDW. Heavy flow plus large clots plus low ferritin is the cleanest convergence this panel can produce.
← Start here

Assets and links

Notion, HMM workspace

The Notion MCP connector is the HMM tenant. There is no RVFD Notion. No delete tool exists on the connector. Note: get-teams reports a single teamspace named "Remove", which is worth a human look since it holds live business pages.

PageURL
Clinic (parent)3803fcb0fc698099ab02cc81cb4ae939
HMM Clinic Proposal3803fcb0fc6980dfbe86f3dca274533f
Sales Page Draft3803fcb0fc698004a5a5ce783701e4f4
HMM Clinic SOP3a73fcb0fc6980169ed1f7f00ab7cc98
Root Cause Assessment Includes3ad3fcb0fc698023a485f9dd58333791
Personalize Checklist (child of above)3ad3fcb0fc6980019703c25e3d10cdf3
Programs & Offerings (parent)2f63fcb0fc6980438683ec83aee38aa5
Client & Product Fulfillment2f43fcb0fc69803f9783f7c0649248f5
HMM HQ2f43fcb0fc6980f2ba12cbac78acc5b8
Her Mood Mentor Business Hub (root)b519750958684f5783800cbdd62731bc
PMDD Rehab Course Revamp34f3fcb0fc6981bdb485fc8e849d8871
Sales Process2f53fcb0fc69804581e5f0fb9a50e03b
Business Links2f53fcb0fc6980fc9920d454b8141472
Maria2f63fcb0fc69818084e8f75b637326ca

Canva, HMM account

DesignIDEdit / View
HMM Clinic Protocol Template
8 pages. The design brief for the local renderer.
DAHQymYytO8edit · view
Practice Better Protocol Template Headers
21 pages
DAHFij0ZCQ4edit · view
HMM Client FlowchartDAG6Spk49-0edit · view
Head of Sales Agreement
contract precedent
DAGv6rCRyosedit · view
NDADAGv6g_Fx_Iedit · view
Non CompeteDAGv6t9VBkoedit · view

Brand kits: Her Mood Mentor Brand Kit kAEcJRD4pHk, and WSH kAF7HwY0EgM.

Protocol template structure, 8 pages

Read once so the renderer does not have to re-derive it: (1) macro targets with a reason under each, plus building your plate, (2) small sustainable changes, (3) day of eating example with sample meal macros, (4) your next six months, phased month by month, (5) training plan Monday through Sunday plus workout resources, (6 and 7) good mood foods as food-group tiles each with a why, (8) nervous system support split into building safety, building resilience, and regulation techniques.

Source documents on disk

FileWhat it is
/Users/sf/Desktop/20260519_Jes Fleming_Form_Client Agreement -US - 2026-3.pdfThe 1:1 PMDD Comprehensive agreement, 10 pages. Source the clinic agreement was adapted from.
/Users/sf/Desktop/20260804_Jes Fleming_Form_Root Cause Assessment Onboarding Questio.pdfCurrent onboarding questionnaire, 14 pages.

Work produced 2026-08-11

ArtifactPath and URL
Clinic client agreement draft
19 sections, 10 ATTORNEY callouts, 4 SHAWN callouts
/Users/sf/her-mood-mentor/_artifacts/clinic-client-agreement-draft.md
Protocol pipeline design_artifacts/clinic-protocol-pipeline.html
hmm-clinic-pipeline.pages.dev
Questionnaire changes_artifacts/clinic-questionnaire-changes.html
hmm-clinic-questionnaire.pages.dev
Pre-meeting call prep_artifacts/hmm-clinic-call-prep.html
hmm-clinic-call-prep.pages.dev
This handoff_artifacts/clinic-handoff.html
hmm-clinic-handoff.pages.dev

The decision meeting, 2026-08-11

Jes, Maria and Shawn, 58 minutes. Transcribed and diarized locally.

Analysis and action itemsObsidian/Ideaverse/Wiki/Projects/Her Mood Mentor/Meetings/2026-08-11-hmm-clinic.md
Speaker-labelled transcript...2026-08-11-hmm-clinic-speakers.md
Raw transcript...2026-08-11-hmm-clinic-transcript.md
Copies on the NAS/Volumes/Shared_Drive/HMM/Meetings/
Source audio/Volumes/Shared_Drive/HMM/HMM clinic.m4a
Transcribing future HMM meetings: cd ~/hmm-diarize && ./run.sh "<audio>". Built 2026-08-11 as an HMM-isolated copy of the RVFD pipeline, with its own voices.json (Shawn, Maria and Jes all learned) and its own work/. The .venv is a symlink to ~/rvfd-diarize/.venv; rebuild instructions are in its README if that ever breaks.
← Start here

Open questions

QuestionOwnerBlocks
Izzy's 10%: on the $1,197 or on HMM's margin? And does it claw back on refund? If she keeps $119 on a refunded sale, the $50 pre-lab admin fee is underwater by about $104.Shawn and JesThe refund clause in the agreement
Does $344 hold? Maria to ask DHA whether the comprehensive plus Insulin, GlycoMark, TPO Ab and Thyroglobulin Ab can be bundled at a better rate, since DHA built the PMDD Comprehensive for HMM originally.MariaRefund clause, margin model
Does the clinic sell outside Izzy? Jes flagged Izzy "is probably not going to like that." Website buyers are not in the system and never touch Izzy, which is also where the commission question lives.JesSales page, commission structure, portal onboarding
Janine as a second practitioner? Maria raised it. Jes deferred pending real volume and wants Izzy's actual monthly call count first.JesNothing yet
Is the NACC included? HMM has paid for a year. Jes wants it rebuilt in-house and thinks the symptom burden graph raises the offer's value. Floated: a ~$25 paid retest, or bundling the retest. Maria wants a single link covering intake plus NACC, not a chain of forms.JesPortal design, intake flow
Notion sales page edits. ON HOLD at Shawn's instruction. Two changes: the FAQ reroutes anyone wanting ongoing support to the PMDD Comprehensive three separate times, which funnels the most motivated buyers onto Jes's calendar and defeats the clinic's purpose; and the public copy names ADHD, anxiety, fertility and perimenopause, which is diagnostic language on a wellness surface and contradicts the meeting's decision to stay narrow.ShawnLaunch
Attorney review of the agreement. Ten flagged items including the Fullscript compensation disclosure and the chargeback waiver plus credit-bureau reporting exposure.ShawnLaunch
Habit tracker schema. Must be shared with the HMM app's daily homepage check-in. Unverified whether the app already has anything habit-shaped; the read-only Supabase MCP is pointed at the RVFD project, so it could not be checked from this session.ShawnPortal and app both
Quality control. The SOP's Stage 5 quality review is the practitioner checking her own work. There is no independent review step. Recommendation on file: Jes reviews every report until QC is proven, since her name is on it.JesFirst client

Recommendations made but not yet acted on

  • The Rehab handoff. Nothing in the SOP or sales page routes a finished client toward PMDD Rehab or the app. A protocol with no support layer gets roughly 30% compliance and produces "I spent $1,200 and nothing changed," which is a testimonial problem in a pilot whose product is testimonials. The fix is not coaching, which rebuilds the Jes bottleneck; it is that the day-7 follow-up and the final "your next 90 days" section point at Rehab. Building the habit tracker on shared schema with the app makes this structural rather than a call to action.
  • AI consent should be a disclosure, not a consent. Once processing is local and first-party there is no third-party disclosure, so what is needed is transparency, not a withdrawal right. A withdrawal right creates a manual-only operational branch nobody has staffed. Caveat: this flips back to real consent the moment anything routes to a hosted model. Confirm the Washington My Health My Data angle with the attorney; HMM is not a HIPAA covered entity, so state consumer-health-data law is the live exposure.
  • The $50 administrative fee should be justified in the document as the non-recoverable card processing cost, roughly $35 of it, rather than stated as a bare number.
  • Cap generated habits at five to seven. Maria's own tracker is long because it is hers, built over years. A twenty-item checklist on a bad luteal day is a reason to close the app.
← Start here

Infrastructure

Where things run

ThingHostAddress
n8nNAS (TrueNAS)10.3.7.232:5678, tunnel n8n.darcyn8n.com
OllamaMac Mini10.3.7.135:11434. Models: qwen3:14b (9.3GB), qwen3:8b (5.2GB), llama3.2-vision:11b, embeddings.
Lab report pipelineMac Mini/Users/sf/hmm-lab-report/
Cal.com, Home Assistant, TwingateMac MiniDeliberately not migrated. Twingate stays by decision: Shawn screen-shares into the Mini, so its remote path must not depend on the NAS.
Client data at restNAStank-mirror/Shared_Drive/HMM_Labs, encrypted, passphrase, re-locks on every reboot and looks like an empty folder over SMB when locked.

The lab pipeline codebase

FileRole
body_systems.py11 body systems, Adrenal, Inflammation, 7 nutrient-status groups. Contains _score_system(), the scoring function the intake scorer should mirror.
health_concerns.py16 patient-facing concerns with copy already in wellness-coach scope.
biomarkers.json30KB of marker definitions and ranges. Needs GlycoMark, TPO Abs, Thyroglobulin Abs added; Insulin is already present.
generate_report.py73KB ReportLab renderer with its own assets/. The protocol becomes a second document type here.
analysis_engine.py, marker_descriptions.py, category_descriptions.pyAnalysis and prose.
scope_of_practice.pyProgrammatic wellness-coach term replacement. Applies to protocol copy too, for free, by going local.
parsing_prompt.py, pipeline.py, watch_input.shIngestion and orchestration.

Changed on the NAS, 2026-08-11

  • New dataset tank-nvme/n8n-binary, primarycache=metadata, recordsize=1M, owned 1000:3100 mode 770. Mounted into n8n at /binarydata with N8N_BINARY_DATA_STORAGE_PATH=/binarydata. Large media now streams through without growing ARC.
  • ARC cap lowered from 8GiB to 4GiB. Available memory went from 1.4GiB to 5.1GiB. Restore to 8GiB once a podcast episode confirms the binary path works, since hit rate was 99.2% at 8GiB.
  • Not done: the ReadSource glob in workflow bisimwdlABebIAzJ is still /files/podcast-exports/*, which reads every file in the folder before the Switch filters to mp3 and mov. Left alone deliberately: the ARC fix removes the actual harm, and a glob that matches nothing fails silently on a live publishing pipeline.
TrueNAS gotchas hit today. The middleware does not expose primarycache on create or update, so it must be set with raw zfs over SSH, and truenas_admin needs a password for sudo, which means Shawn runs it with ssh -t. Also, wrangler pages project list resolved to the RVFD Cloudflare account even with CLOUDFLARE_ACCOUNT_ID exported and threw a 10000 that reads like a bad token; use the REST API to list or create Pages projects. pages deploy itself honours the env var correctly.

Hardware

An M4 Pro Mac mini, 48GB, 512GB was ordered 2026-08-11 at $2,179 from B&H. It becomes the dedicated Ollama box; the current M4 16GB Mini stays as the services box running Cal.com, Home Assistant and Twingate. Reason: base M4 is 120GB/s memory bandwidth, M4 Pro is 273GB/s, and token generation is bandwidth bound, so the same model runs roughly 2.3x faster. 48GB lets a 14B and a 30B stay resident together. On arrival: move Ollama, set OLLAMA_NUM_PARALLEL and OLLAMA_MAX_LOADED_MODELS explicitly, and repoint the six n8n workflows that call 10.3.7.135:11434.

← Start here

People, voice and constraints

Who does what

Jes FlemingFounder, Board Certified Nutritional Therapy Practitioner, the public face. Delivers the 1:1 PMDD Comprehensive at $3,999 to $4,500. Does NOT deliver clinic assessments. The whole point is adding revenue without adding her hours.
MariaHead of Operations. Proposed the clinic, wrote the SOP, built the templates, and is practitioner #1. Also an NTP. Already runs lab analysis for current clients, which is why the delivery risk on this proposal is low.
IzzyHead of Sales and Client Onboarding. Runs intro calls and routes prospects between PMDD Comprehensive, the clinic, and PMDD Rehab. Positions the clinic explicitly as working with a different practitioner, not Jes, and wants practitioner credentials available because prospects ask.
JanineClinical Program Coordinator, NTP-credentialed. Possible second practitioner, deferred.
ShawnCo-founder, all technical and automation work.
The credential problem the agreement solves. The 1:1 agreement names Jessica Fleming as "the Coach" and anchors every scope-of-practice disclaimer to her personal credentials. Clinic clients never work with Jes. The draft restructures so the contracting party is Her Mood Mentor LLC and the practitioner is an assigned credentialed NTP identified per engagement. Do not undo this with a find-and-replace.

Scope of practice, which governs every word

HMM operates two voices and the correct one depends on the surface.

  • Wellness-coach scope for anything public: website, marketing, sales page, app general copy. Avoid diagnostic labels. "Low nutrient status" not deficiency. "Sluggish thyroid function" not hypothyroid. "Blood sugar imbalances" not insulin resistance. "Mood fluctuations" not depression or anxiety. "Support" not treat or cure. "May help" not will help.
  • NTP scope for practitioner-authored clinical content: the protocol, the findings video, the interpretation. Named foods, macros, micros, lab markers and mechanisms are all fine.

The clinic SOP is correctly in NTP scope because it is internal. The sales page is not, and currently names ADHD, anxiety, fertility and perimenopause as conditions. That is the open Notion edit.

Even in NTP scope, nobody may diagnose, prescribe, practise medicine, or make treat/cure/heal claims as marketing.

PHI handling, non-negotiable

All client health data stays local. Analysis runs on local Ollama. Never read raw patient data into a session. HMM_Labs on the NAS is encrypted with a passphrase Shawn holds in Proton Pass; Claude does not have it and there is no recovery path.

The current gap. Jes described, in the meeting, pasting redacted client lab data into a general-purpose Claude project trained on her FBCA certification materials, and said herself "is that still sketchy, probably." This is precisely what the local pipeline exists to fix, and it is why the pipeline blocks launch.

Writing constraints for anything produced here

  • Never use em-dashes. Not the character, not the HTML entity. Commas, colons or sentence breaks.
  • Substantial HTML docs use the Timber SAV house style from ~/.claude/artifact-house-style.html with an overview landing page and hash-routed sub-views.
  • Deploy docs to Cloudflare Pages, one project per doc. Never a claude.ai artifact URL; they do not work for Shawn.
  • Anything Shawn must execute goes in a numbered, indented block. Terminal commands stay single-line.
  • Simplicity and usability outrank completeness and cleverness. Most users are women managing PMDD symptoms, often on a bad day.