Topic · AI SOAP note generator for private practice
AI SOAP note generator for private practice — Subjective / Objective / Assessment / Plan drafted locally on your Mac
SOAP is the format private-practice clinicians inherit from medical settings, but a private-practice SOAP note is not a medical SOAP note. The Objective field holds observable mental-status data, not labs and vitals. The Subjective field holds the client's paraphrased report, not a transcript dump. Most cloud AI scribes don't know that distinction — they were trained on medical SOAP and they fill Objective with whatever the model is unsure about. TherapyDraft is the SOAP generator built for the SOAP that private-practice mental-health clinicians actually write, and it does the work locally on your M-series Mac with no network socket open for the audio or the draft.
TL;DR
TherapyDraft is an AI SOAP note generator for US private-practice mental-health clinicians that runs entirely on the clinician's M-series Mac. Record a session, click "Draft SOAP," and in two to four minutes you have a Subjective / Objective / Assessment / Plan draft sized for the median private-practice progress note. Objective is treated as observable mental-status data (affect, MSE-relevant observations, behavior during session), not as transcript filler. The audio file, the transcript, and the draft never open a network socket because the macOS network-sandbox entitlement on those code paths is set to deny by design. Output pastes cleanly into SimplePractice, TherapyNotes, TheraNest, Jane, Valant, and any other EHR with a SOAP-shaped progress-note form. There is a 10-session free trial; paid is $39 per month for the Solo plan or $29 per seat per month for Group.
Why SOAP is harder than DAP for AI generation, and why a private-practice SOAP generator has to solve the harder problem
SOAP — Subjective, Objective, Assessment, Plan — is structurally harder for an AI to draft well than DAP is. The reason is the Subjective / Objective split. In medical SOAP, the split is unambiguous: Subjective is what the patient told you, Objective is what you measured (heart rate, blood pressure, lab values, exam findings). In private-practice mental-health SOAP, the split is real but quieter — Subjective is the client's paraphrased report of internal experience, and Objective is the clinician's observation of external data (affect, mood-as-observed, psychomotor activity, speech, attention, behavior during the session, engagement with the work). Cloud scribes trained on medical SOAP frequently miss this distinction. They tend to fill Subjective with a long paraphrase, then fill Objective with verbatim transcript snippets — "client said 'I've been having trouble sleeping'" — because the model has nothing to put there that maps to medical Objective. The result is an unreadable Objective field that has to be rewritten from scratch.
TherapyDraft's prompt scaffolding for SOAP is calibrated against roughly a hundred anonymized real private-practice SOAP notes contributed by beta clinicians during supervised testing. The model is told, in effect, that Subjective holds the paraphrased client report (what was said and what was felt, paraphrased not quoted), Objective holds observable mental-status data (what affect was, how engagement modulated, what behavior was observed), Assessment holds clinical reasoning and formulation, and Plan is the next-step list. The output reflects that. Subjective reads like a clinical paraphrase. Objective reads like the mental-status section of an assessment, scaled to a single session. Assessment names the clinical work. Plan closes the loop.
The structural gain over a generic SOAP scribe is small in headline terms — a couple of paragraphs that read more naturally — but the editing cost difference is large. A clinician using a generic cloud SOAP scribe typically rewrites the Objective field every session. A clinician using TherapyDraft's SOAP scaffolding edits Objective the way they edit any AI draft: a sentence here, a word there, occasionally a full re-sequence. Over a month of caseload that is the difference between an AI scribe that saves time and an AI scribe that costs time.
The mental-health SOAP private-practice clinicians actually write (vs medical SOAP)
This page is opinionated about what private-practice SOAP looks like because the format is widely misunderstood by AI tooling. Below is the working model TherapyDraft's SOAP scaffolding uses, drawn from clinical-documentation guidance and validated against anonymized real progress notes from US-licensed LMFTs, LCSWs, and LPCs in private practice.
- Subjective. What the client reported during the session. Paraphrased, not quoted in full. Includes the client's stated experience since the last session, presenting concerns for this session, internal-state self-report (mood, sleep, appetite, ideation if relevant), and any contextual life events the client raised. The voice is third-person clinical paraphrase by default ("Client reported…"), first-person if the clinician's preset is set that way. Length: typically the longest paragraph, 160–240 words for a 50-minute session.
- Objective. What the clinician observed during the session. Includes affect (range, congruence, modulation across the hour), mood-as-observed, psychomotor activity, speech (rate, volume, prosody if remarkable), attention and concentration, thought process, behavior during the session, and engagement with the work. This is not labs or vitals. It is the mental-status equivalent of "what I observed" — shorter than Subjective by design, typically half the length, around 80–130 words.
- Assessment. The clinician's clinical reasoning. Includes formulation, progress against treatment goals, risk assessment (SI / HI / acute risk factors), and any clinical-judgment notes about the trajectory of the work. The Assessment is short and clinician-led; TherapyDraft's default holds it to roughly a quarter of Subjective's length.
- Plan. The next-step list. Includes homework, between-session tasks, the cadence of upcoming sessions, any referrals, and the focus areas for the next session. Functionally a short numbered or bulleted list.
The piece that distinguishes private-practice SOAP from hospital SOAP is the treatment of Objective. In a private-practice talk-therapy session there are no labs and no vitals. The clinician's observation of the client — the mental-status data the trained eye picked up during the hour — is the Objective field. A SOAP scribe that doesn't know this writes "client appeared cooperative" four hundred times a year. A SOAP scribe that does know it writes Objective the way a clinician writes the mental-status section of an assessment: specific, observed, and short.
The SOAP-drafting workflow on a Mac
- Record or import the audio. Use TherapyDraft's built-in recorder, your Mac's microphone, a USB lavalier, or an exported audio file from any session-recording setup. Telehealth recordings work; in-person recordings work; phone-call exports work. The file is stored in TherapyDraft's local Application Support directory and stays there until you delete it.
- Pick SOAP and pick the voice preset. The format dropdown has SOAP, DAP, BIRP, GIRP, and a Custom mode. Choose SOAP. The voice preset toggles whether Subjective uses third-person ("Client reported…") or first-person ("Client told me…"), whether Objective leads with affect or behavior, whether Assessment includes a DSM-5-TR provisional formulation line, and whether Plan numbers its items or bullets them. Defaults are calibrated to the median private-practice SOAP; first-time customization is one click per toggle, and the preset is persistent across sessions.
- Draft locally. whisper.cpp transcribes the audio on your Mac (real-time factor under 1.0× on M2 and faster), then Qwen 2.5 14B-Instruct (4-bit MLX) runs the SOAP-shaped prompt against the transcript and your style examples. End-to-end on a 50-minute session: 90–150 seconds on M2, 60–100 seconds on M3 or M4 — slightly longer than DAP because the SOAP scaffolding produces two distinct narrative paragraphs and runs the Objective-formation pass separately from the Subjective-formation pass. The macOS network-sandbox entitlement on the recording, transcription, and inference paths is set to deny by design; there is no socket through which audio or text can leave.
- Review and paste. Read the draft in TherapyDraft's editor, fix anything the model got wrong, then click the EHR-paste preset for your chart-of-record. Output is plain-text labeled paragraphs that drop cleanly into the Subjective, Objective, Assessment, and Plan fields of any standard SOAP form. Custom forms with extra fields (Risk, Interventions Used, Modality) work too — the Custom-form-aware preset takes your field labels and emits paragraphs to match.
- Sign in your EHR. The note is yours; the AI authored a draft, you authored the note. The audit trail in your EHR shows you as the author of every field because every field was edited by you while logged in. That is the correct legal posture and matches the way every cloud SOAP scribe quietly handles authorship in practice.
End-to-end time on a 50-minute session: roughly two to four minutes of local drafting plus two to four minutes of clinical review and editing in your EHR — the SOAP review pass takes slightly longer than the DAP review pass because Objective is the field that most needs the clinician's eye. Net displacement of typing burden: about 12–22 minutes per session, similar to the DAP workflow but with the second labeled paragraph factored in.
A sample SOAP output from an anonymized fake transcript
Below is a draft TherapyDraft produced from the same anonymized fake 50-minute transcript used on the DAP-generator page, with format set to SOAP. Showing both formats from the same input is deliberate: it demonstrates that the generator's format awareness is real, not cosmetic — the same session content reshapes itself across the labeled fields rather than just being relabeled. The "client" is composite; nothing in this transcript corresponds to a real session or a real person. Names, demographics, and clinical detail have been generalized.
Subjective. Client reported a difficult interaction at work the prior Tuesday, in which a senior colleague attributed an error to client in a meeting that included client's direct supervisor. Client described the event as "the kind of thing I usually let go for a week before I notice I'm not letting it go." Client traced an escalating pattern over the subsequent days: shortened sleep onset Wednesday and Thursday, two missed gym sessions, increased weekend rumination on whether to address the colleague directly. Client reported that the rumination peaked Sunday afternoon and that client used the in-session coping skills practiced in prior weeks — paced breathing and a brief written reframe — to interrupt it. Client described the reframe as partially successful, noting that "the reframe got me out of the loop but didn't change how I feel about her." Client identified the colleague interaction as conflicting most directly with client's stated value of being seen as competent at work, and expressed willingness to draft a short, direct conversation script for the colleague before next session.
Objective. Client presented on time, well-groomed, reasonably rested. Affect was reactive and somewhat constricted at intake, broadening over the session as rapport re-established; congruence with reported content was good throughout. Speech was at normal rate and prosody, with a noticeable softening when discussing the values conflict. Engagement with the work was active — client volunteered the values-clarification frame from session 6 without prompting, and modulated effectively from rumination-recall to skills-practice mode mid-session. Thought process was linear and goal-directed. No psychomotor abnormalities observed. No SI / HI reported or elicited.
Assessment. Client continues to demonstrate progress on the core treatment goal of recognizing rumination earlier in its arc and applying coping skills before symptoms generalize to sleep and exercise. The client's articulation of the values conflict (competence versus avoidance) is meaningfully sharper than at intake and reflects integration of the values-clarification work from session 6. Affect modulation across the session, and the use of session 6's reframe in vivo, support continued forward movement. No acute risk factors observed.
Plan. Client to draft a 3–4 sentence script for the colleague conversation prior to next session. In session, roleplay the conversation twice with role reversal. Continue weekly cadence; revisit values-clarification follow-up at session 12 per treatment plan. Clinician to send the cognitive-defusion handout discussed in session 4 as a reference for the rumination-interruption work.
Notice the shape. Subjective is the substance — about 200 words, anchored in the client's report and paraphrased rather than transcribed. Objective is about 110 words and stays on observable mental-status data: affect, speech, engagement, thought process, risk-screen. Assessment is about 80 words and stays on clinical reasoning rather than restating Subjective. Plan is six concrete next-step items. The same content that the DAP draft compressed into one Data paragraph is now distributed across two labeled fields — the model knew which evidence belonged in Subjective (client report) and which belonged in Objective (clinician observation).
That distribution is what a SOAP generator earns its keep on. The full transcript-to-draft path runs on your Mac. The model file is local. The transcript is local. The draft is local. Nothing leaves the device.
Why a local SOAP generator is structurally different from a cloud SOAP generator
Every cloud SOAP scribe in market in 2026 — Mentalyc, Upheal, Blueprint, Supanote, Freed, CliniScripts, and the in-product AI scribes shipping inside major EHRs — works the same way at the architectural layer. Audio uploads to the vendor's cloud. The vendor's cloud forwards it to an AI subprocessor for transcription and drafting. The transcript and draft come back, get stored in the vendor's tenant of that subprocessor's storage, and surface in the clinician's web UI. Every link in that chain is covered by the vendor's BAA, and every link is also a new line in the practice's subprocessor inventory and a new breach surface.
For private-practice clinicians the chain is concrete: a session that includes detailed disclosures about a client's relationship, work, family, sexual history, or substance use travels from your microphone to the scribe vendor's cloud, from there to whichever AI subprocessor the vendor uses for transcription, from there to whichever AI subprocessor the vendor uses for drafting, and ultimately rests in object storage owned by some combination of those parties. A signed BAA covers each link contractually. Nothing covers the physical existence of the data at every link.
The architectural property of running the SOAP generator locally is the absence of that chain. There is no subprocessor inventory because there are no subprocessors. There is no breach surface at the AI vendor because there is no AI vendor. There is no audio in transit because there is no transit. The Mac is the cloud, and the only thing that ever leaves it for this workflow is the typed-or-pasted SOAP note that you type-or-paste into your EHR yourself, after reviewing it.
That property is load-bearing for a meaningful minority of US private-practice clinicians — not the majority, but a real and growing segment driven by 2026's BAA-trust fatigue, by therapist-discovery cases that have publicized how subprocessor chains expose session content, and by the simple availability of M-series Macs powerful enough to run 14B-parameter models in 4-bit at conversational latency. For that clinician, a SOAP generator that runs locally is not "the cheaper option" or "the faster option" — it is the only option that matches their threat model. For clinicians whose threat model is satisfied by a signed BAA with a reputable cloud scribe, the cloud options are perfectly defensible. The deeper-dive comparison is in the pricing comparison, and the architectural-vs-contractual argument is laid out in the BAA explainer.
What "SOAP" means in private-practice mental health, briefly
A SOAP note is a progress note structured as four labeled paragraphs. The format originated in medical settings (Larry Weed, problem-oriented medical record, 1968) and crossed into mental-health charting in the 1980s and 1990s as a way to keep psychotherapy notes in a structure that integrated-care environments could read.
- Subjective. What the client reported during the session — paraphrased, not quoted in full. Internal-state self-report, presenting concerns, contextual life events, the client's account of how the work between sessions went. The longest paragraph in a typical private-practice SOAP.
- Objective. What the clinician observed during the session — affect, mood-as-observed, psychomotor activity, speech, attention, thought process, behavior, engagement. Not labs or vitals; this is the mental-status equivalent of "what I observed." Half the length of Subjective by design.
- Assessment. The clinician's clinical reasoning — formulation, progress against treatment goals, risk assessment, judgment notes about trajectory. Short and clinician-led.
- Plan. The next-step list — homework, between-session tasks, session cadence, referrals, focus areas. Functionally a short numbered or bulleted list.
SOAP is widespread in private-practice mental-health work because it travels well across settings — clinicians who came to private practice from hospital or integrated-care settings know the format, supervisors recognize it, insurance reviewers expect a recognizable structure. Its main weakness for AI generation is the Subjective / Objective split, which most cloud scribes mishandle. TherapyDraft generates SOAP, DAP, BIRP, and GIRP equally well; this page is about SOAP specifically because it's the most common request from clinicians whose practices have any insurance-billed component.
Pricing and free trial
TherapyDraft is $39 per month or $349 per year for the Solo plan, which includes unlimited SOAP / DAP / BIRP / GIRP drafts, all EHR paste presets, the tamper-evident inference attestation log, and the one-shot template matching from your own example notes. Group pricing is $29 per seat per month for practices of 3+ seats — solo private-practice clinicians stay on Solo. There is a free trial of 10 sessions with no credit card required — see the free-trial page for the trial mechanics.
Pricing context against cloud SOAP scribes: Mentalyc starts at $19.99/mo, Supanote at $39/mo, Upheal at $29/mo, Blueprint at $0.99 per session, and Freed at $99/mo. TherapyDraft sits at the median of that range and uses the architectural-vs-contractual difference, not price, as the wedge. The full breakdown is in the pricing comparison.
Related questions
Is SOAP harder than DAP for an AI scribe to draft well?
Yes. SOAP splits the session narrative across two labeled fields — Subjective and Objective — and most cloud scribes don't know what belongs in each. They tend to fill Subjective with a paraphrase of what the client said, then fill Objective with verbatim transcript snippets or generic boilerplate like "client appeared engaged." The fix is prompt scaffolding that understands mental-health SOAP specifically: Subjective is the paraphrased client report, Objective is observable mental-status data the clinician noticed during the session. TherapyDraft's SOAP scaffolding is built around that distinction; the fix is structural, not cosmetic.
What goes in the Objective field of a private-practice SOAP note?
In medical SOAP, Objective holds vitals, labs, and physical-exam findings. In private-practice mental-health SOAP, Objective holds observable mental-status data: affect (range, congruence, modulation), mood-as-observed, psychomotor activity, speech patterns, attention and concentration, thought process, behavior during the session, and engagement with the work. It is shorter than Subjective by design — typically half the length — and stays on observed data rather than client report. A clinician reviewing the draft should be able to scan Objective and verify each statement against their memory of the session. If a statement isn't something the clinician actually observed, it gets cut.
Does TherapyDraft also generate DAP, BIRP, and GIRP, or only SOAP?
All four. The format dropdown picks SOAP, DAP, BIRP, GIRP, or a Custom mode. The same transcript can be drafted in any of the four formats and the prompt scaffolding for each is shaped for that format's structure. SOAP is the focus of this page because it's the most-requested format from clinicians who came to private practice from hospital or integrated-care settings; DAP is more common in talk-therapy-only private practices and is covered on its own page. BIRP and GIRP are common in insurance-heavy practices that want Intervention as a labeled section.
How long are the SOAP paragraphs the model produces?
From a 50-minute session, expect Subjective at 160–240 words, Objective at 80–130 words, Assessment at 70–110 words, and Plan at 40–80 words. Total length is configurable — "concise" compresses to roughly 60 percent of those numbers, "thorough" grows them by about a third. The default is calibrated to the median private-practice SOAP, which lands around 400–520 words total — slightly longer than DAP because of the second labeled section. If your supervisor or your insurance reviewer prefers shorter or longer notes, the preset can be set once and then forgotten.
Does it work for solo private practice or only for group practices?
Both. The Solo plan at $39/mo is built for solo private-practice clinicians — one Mac, one license, unlimited sessions, no seat math. The Group plan at $29 per seat per month is for practices of three or more seats and adds shared template libraries plus per-clinician aggregated activity reporting. Audio never leaves the seat in either plan; the group features are configuration-level metadata, not session content. Solo private-practice is the primary ICP and most of the product decisions are made for that workflow first.
Further reading
- AI DAP note generator — same transcript, DAP format, sample side-by-side
- AI BIRP note generator — same transcript, BIRP format, sample side-by-side
- HIPAA-grade AI SOAP notes — the architectural vs contractual argument
- On-device therapy note generator — the technical wedge
- Why the network-sandbox entitlement matters
- SOAP paste workflow for SimplePractice
- SOAP paste workflow for TherapyNotes (the EHR)
- SOAP paste workflow for TheraNest
- Pricing comparison across cloud scribes + us
- What a BAA does — and doesn't — cover
- Can an AI therapy note be subpoenaed?
- Join the private beta