How SignalEHR turns a 50-minute session into a finished, signed note.
No marketing fluff. This page walks through exactly what happens from the moment the phone rings to the moment the insurance payment lands — the technology behind it, the safeguards around it, and the honest limitations of it.
What you get, in numbers
8 sec
voice → emotion signal on screen
8 min
average note time, draft to signed
94%
first-pass insurance acceptance
Zero
raw audio retained
01
Before the session
Amelia has the chart ready before they walk in.
The work that used to live in your evenings — chasing forms, running eligibility, holding copays, scanning intakes for risk language — happens in the background, automatically. By the time the session starts, the chart is current, the benefits are verified, and you know what you're walking into.
Intake forms sent the moment the slot is booked
Demographics, history, presenting concerns, ROI, GFE acknowledgement. Smart skip logic — clients only see what applies. Most return them in under nine minutes.
Insurance verified in real time
Stedi runs a 270/271 eligibility check the moment a card is added. Copay, deductible, mental-health benefit limits, prior-auth requirements — all on the chart before you walk into the room.
Card on file authorized, not charged
Stripe pre-auth holds the copay so no-show fees become recoverable. The actual charge only fires after the session is signed.
Risk + readiness flags surface to you
Amelia reads the intake free-text fields and flags suicidal ideation language, recent medication changes, and prior trauma history — so nothing important hides on page 14 of the form.

Amelia handling intake forms, insurance eligibility, and payment authorization over chat — before the session begins.

The live affect view — gentle waveform on the periphery, no popups, no pings. You watch the client, not the screen.
~280ms
Transcript latency
~8s
Affect signal latency
0 KB
Raw audio stored
02
During the session
A second pair of senses — quietly, on the edge of the room.
Voice streams to Deepgram for transcription, then to our own affect engine that turns vocal cues into a regulation timeline you can glance at. No raw audio is ever stored. Crisis flags fire fast and quietly. The room stays the room.
Voice → emotion in roughly eight seconds
Deepgram streams transcription with diarization. Our affect engine layers valence, arousal, regulation, and cognitive load over the transcript — per speaker, with confidence intervals.
A regulation timeline you can glance at, not stare at
The sidebar lives at the edge of your peripheral vision. A single calm waveform that brightens when affect shifts. No popups, no pings, no tabs that pull your attention out of the room.
Crisis flags that fire fast and quietly
SI/HI language, dissociative cues, agitation ramps — surfaced as a small amber dot. You decide whether to engage. SignalEHR never speaks in the room.
Per-speaker tracks for couples and family
Two waveforms instead of one. Pursue–withdraw, criticize–defend, and other dyadic cycles surface as gentle pattern markers — useful with EFT, Gottman, and IFS work.
Couples & family work
Two waveforms. One cycle picture.
Pyannote diarization gives every speaker their own affect track, so pursue–withdraw, criticize–defend, and other dyadic cycles surface as gentle pattern markers. Useful with EFT, Gottman, IFS, and any modality that cares about the dance between two people.
- Per-partner valence and arousal tracks
- Cycle markers for common relational patterns
- Couples-specific note formats included

03
After the session
A finished, signed note in eight minutes — not eight at night.
The session ends. You pick a format and a modality. SignalEHR drafts a note grounded in the actual transcript and affect events — never invented. You read it, edit anything you want, sign it. The medical-necessity language for insurance is already there.
Pick a format, pick a modality
SOAP, DAP, BIRP, GIRP, PIRP, SIRP, PIE, or your own template. Pair it with one of 16 modalities — CBT, ACT, DBT, EMDR, IFS, EFT, Gottman, MI, Schema, Narrative, and more — so the clinical voice matches what you actually did.
Draft grounded in transcript and affect, not invented
Every assertion in the draft links to a transcript moment or a regulation event. Hover any line to see the source. No paraphrased fabrication — if SignalEHR can't ground a claim, it doesn't make the claim.
Outcome measures, recorded where you chart
Record a PHQ-9, GAD-7, PCL-5, AUDIT or C-SSRS total in the client's chart and SignalEHR bands it by severity. ICD-10 codes suggested from content; you confirm.
You sign. SignalEHR locks it.
Once you sign, the note becomes immutable in the audit log — addenda only after that point. The signed PDF is generated, attached to the chart, and pushed to the claim queue for Amelia.

Seven clinical note formats or your own template, sixteen modalities. You pick; SignalEHR drafts in your voice and your style.

Amelia builds the 837P, scores her confidence in it, sends it through Stedi after your review, and reconciles the ERA when it lands.
04
Behind the scenes
The note becomes a claim. The claim becomes payment.
Once you sign the note, Amelia drafts the claim, checks it against payer rules, and scores her confidence in it. In the US it goes out through Stedi after your review, and the ERA is reconciled when it returns. In Canada she codes and validates the claim for TELUS and you submit it in your own portal. Every result is recorded by payer and code, so a denial that keeps repeating gets flagged next time. The aim is an A/R aging report that stops being a horror story.
Amelia builds the 837P claim
She pulls CPT, ICD-10, place-of-service, and modifier set from the signed note. She knows your payer-specific quirks — Aetna's preferred POS, Cigna's modifier conventions, Blue Cross regional fork — because she's seen them paid before.
A confidence score on every claim before it goes out
Each claim gets a confidence score. Below the threshold, Amelia holds it for your review and tells you what looks wrong (wrong modifier, missing prior-auth, units mismatch) so you can fix it before submitting, not after.
ERA auto-posting and a denial queue
835s come back through Stedi, post against the claim, and reconcile against the patient ledger. Denials get categorized and queued with a suggested fix drawn from similar past denials. You approve the fix. Amelia does not resubmit on her own.
She keeps score so you don't have to
Paid claims, denials, and the corrections you make all get recorded by payer and code. When the same denial repeats often enough, it becomes a rule that flags the next claim. The ledger starts empty. The rules come from your own claims as they return, and a rule only ever warns and suggests.
Under the hood
We picked boring infrastructure on purpose.
SignalEHR isn't built on novel infrastructure or experimental models. It's built on the boring, reliable, audit-friendly stuff — Google Cloud, Stripe, Stedi, Deepgram, Anthropic — wired together with care and a lot of tests. Boring is a feature when the data is PHI.
1,000+
API endpoints
9,500+
automated tests
140+
frontend pages
5
regions covered (US + CA)
The stack, layer by layer
Speech-to-text
Deepgram Nova
Real-time streaming with sub-300ms latency. HIPAA BAA in place.
Speaker diarization
Pyannote.audio
Open-source, self-hosted. Per-speaker tracks for couples, family, and group.
Affect & regulation engine
Custom (SignalEHR)
Built in-house. Five-dimension model — valence, arousal, regulation, load, variability.
Clinical reasoning
Anthropic Claude
BAA-covered model calls. Grounded in transcript + affect, never invents quotes.
Database
Google Firestore
Multi-region. Per-document audit log on every PHI access.
Compute & infra
Google Cloud (us-central1)
Cloud Run for the API. Cloud Scheduler for background jobs. SOC 2-aligned.
Encryption
AES-256 in transit + at rest
TLS 1.2+ on the wire, Google-managed keys. Stored billing credentials add an app-layer AES-256-GCM envelope.
US insurance
Stedi clearinghouse
3,400+ payers. Real-time 270/271 eligibility, 837P claims, 835 ERA.
Canada insurance
TELUS eClaims
Claims coded and validated for 16+ insurers. You submit in your own TELUS portal. Insurance receipts for everyone else.
Payments
Stripe
Pre-auth, payment plans, A/R aging. Cards never touch our servers.
Multi-tenant isolation
Per-clinic row-level security in Firestore. A practitioner in Clinic A cannot read Clinic B data — enforced at the database, not the app.
Region-aware data residency
Canadian clinics' PHI stays in Canadian regions. US clinics in US regions. Configurable per-tenant for enterprise rollouts.
The honest answers
Common worries, answered honestly.
These are the questions therapists actually ask in our pilot calls. We answer them the same way here as we do on those calls. No spin.
Will it disrupt the therapeutic alliance?
Honest answer: only if you let it. SignalEHR never speaks, never beeps, and never opens a window in front of you. The affect timeline lives in your peripheral vision — glance at it when you want to, ignore it when you don't. Clients are asked to consent to recording up front. Your eyes stay where they belong.
Is my client data safe?
Yes, and we're specific about what that means. Live session audio is held in memory while it is transcribed and then discarded. Audio you upload or record deliberately, for group and family sessions and for offline recordings, is stored encrypted, kept for up to 30 days, and then deleted automatically. Beyond that, what persists is your encrypted transcript and embeddings, and only with explicit, revocable client consent. Every PHI access is logged at the row level. We're HIPAA-compliant in the US (signed BAAs with every subprocessor that touches PHI), PIPEDA-compliant in Canada (with PHIPA, Law 25, HIA, and PIPA province controls), and our infrastructure is SOC 2-aligned. If you ever want your data out, you get a full export within 72 hours, no questions asked.
What if it gets a note wrong?
It will sometimes — that's true of any documentation tool, including the one you're using right now. The difference is how we handle it. Every line in a Signal-drafted note is grounded: hover any sentence and you see the transcript moment or affect event it came from. You read the draft, edit anything you want, and sign. Nothing leaves the system unsigned. If the draft is materially wrong, you fix it before you sign, and the signed note is the record. SignalEHR does not learn your style from your edits today.
Does SignalEHR replace my clinical judgment?
No. SignalEHR is decision support, not a decision-maker. The affect timeline shows you what the voice signal looks like; you decide what it means in the context of this client and this relationship. The note draft is exactly that — a draft. The treatment plan is yours. The diagnosis is yours. The risk assessment is yours. SignalEHR's job is to remove the typing, not the thinking.
How long does setup actually take?
It depends on how much you bring with you. If you are coming from SimplePractice, Jane or TherapyNotes, we suggest running the two in parallel for a week, then cutting over inside 30 days: the importer brings the client list across (names, emails, phones, dates of birth and notes) while appointments and past notes stay in the old system. That's what the parallel week is for. Run the import yourself from Clients → Individuals → Bulk Import, or we'll do it with you on a shared call. There's no per-seat onboarding fee.
What about insurance claims that get denied?
Denials are categorized and queued automatically. For the common categories (wrong modifier, missing referring provider NPI, units mismatch, eligibility lapsed) Amelia drafts the corrected claim and you approve it. The ones that need more from a human (medical necessity, appeal-with-records) are surfaced to your billing dashboard with a one-click drafting flow.
Can I try it without committing to a migration?
Yes. The 14-day free trial is the full product — clinical AI, AI notes, Amelia for chat and SMS, telehealth, billing, all of it. No credit card required. A good test is two or three real sessions, so you see what the affect timeline does in your own room with your own clients before deciding anything.
You stay in control
Consent, off-switches, and exits — all real.
Every client signs a recording consent before audio is processed. They can revoke it at any time. You can disable the affect timeline per-client, per-session, or globally. SignalEHR works as a regular EHR for any client who prefers it that way.
Per-session record toggle
Default off until consent is on file. Visible to the client and the clinician at all times during the session.
Revocable consent
Clients revoke from their portal. Revocation triggers immediate deletion of transcripts and embeddings tied to their record.
Affect off-switch
Disable the affect timeline per-client or globally. Notes still draft from transcript alone if you prefer.
72-hour data export
Full export of charts, notes, billing history, and audit logs in standard formats — within 72 hours of request.
Tuesday, 2:00 PM
One session, end to end, in real time.
A look at the choreography across roughly two hours, from the moment a returning client books to the moment the claim posts.
T-24 hrs
Reminder
The appointment reminder goes out. Text reminders go only to clients who opted in.
T-30 min
Eligibility + payment hold
Stedi runs a fresh 270/271 eligibility check. Stripe pre-authorizes the copay. Both results land on your dashboard before you walk in.
T-0
Session begins
Client consents to recording (on file from prior visit, confirmed today). Deepgram starts streaming. Affect engine warms up. The room is just the room.
T+12 min
Affect shift detected
Client moves into a regulation valley around work stress. The waveform on your sidebar dims. You notice. You stay with it.
T+50 min
Session ends
Audio buffer is cleared from memory. Transcript and affect events are encrypted and stored. Raw audio: zero bytes retained.
T+58 min
Note signed
You pick SOAP + CBT. SignalEHR drafts a 380-word note grounded in the transcript. You read, edit two sentences, sign. Note is locked, PDF generated, copay captured.
T+59 min
Claim built and submitted
Amelia builds the 837P with CPT 90834, payer-specific modifier, and place-of-service. Amelia scores her confidence in the claim. If you have auto-submit on and the score clears the bar, the claim goes to Stedi. If not, it waits in your review queue.
T+72 hrs
ERA posts
835 returns, posts against the claim, reconciles to the patient ledger. Variance under threshold — no human review. Days-in-AR for this visit: 3.
See it in your own room with your own clients.
Fourteen days. Full product. No credit card. The best way to evaluate SignalEHR is to run two real sessions in your trial — the affect timeline tells you everything in five minutes.
Questions first? Email hello@signalehr.com — a real human reads it.