Moved application hosting to Google Cloud Run — the same covered platform as the database, so every service that can touch patient information now sits under an executed Business Associate Agreement
Email a copy of the plan to the patient — from the iPad during the consult, or from the dashboard afterwards; a one-page plain-language summary of their options, with the address confirmed before anything sends
Mark as signed now records exactly what the patient accepted — pick the tier, then check or uncheck individual procedures across any tier, so a partial acceptance is no longer rounded up to the whole plan
Upgrade a signed plan when a patient comes back for more — the original signature stays on record and the upgrade is added on top, with full history
Staff note on any plan — a short logistics reminder like "prefers afternoon calls"
Patient identity is now first and last name with an optional chart number — date of birth is no longer collected or stored at all
Filter Signed, Unsigned and Archived by date presented; signed plans can additionally be filtered by date signed
Fixed plan list rows pricing a partially-accepted plan as though the whole tier had been accepted, which overstated case values and revenue totals
Fixed dashboard filters applying only to the visible page rather than the whole result set
Scan real insurance amounts from a screenshot — opt-in toggle reads the Patient/Primary columns from an eligibility report and matches them to plan procedures by tooth & D-code, with a review table before anything is applied
New "Auto-parsed" insurance mode — auto-selected once scanned amounts are found, so real numbers are never silently zeroed out; warns before switching away if it would drop them
Mutually-exclusive treatment options — link two procedures as alternatives (e.g. 3-unit bridge vs. 2 crowns + implant) so the patient can only select one; grouped and clearly labeled in both the planner and patient view
Single-tier plans now use the full screen and auto-show every treatment instead of a narrow centered card with a "show more" toggle
Reopen and re-sign unsigned plans — edit an unsigned plan and resend it, or mark it signed directly if the patient confirmed by phone or in person
New Procedures and Funnel & Timing analytics subpages, plus a Practice Advisor chat that answers questions using your own aggregate practice data
Per-plan toggle to show or hide the Cherry financing link on the patient's financing bar
Fixed a deductible calculation order mismatch between the planner and patient view that could understate a patient's insurance benefit
Unified the insurance category lookup table across the planner, patient view, dashboard, and server — previously three different tables could classify the same procedure differently
Auto-parsed mode simplified — no more manual coverage-%/deductible/max panel to fill in; a compact one-line summary shows what was matched, with a simple "+ Enter price" fallback for anything the scan missed
Dashboard plan lists now show full case value; opening a plan breaks out the insurance and patient split, plus any discount applied
Fixed a cross-page inconsistency where a procedure marked excluded or non-coverable could still count toward the estimated insurance benefit on the patient view, dashboard, or signed PDF, even though the planner correctly left it out
Insurance-scan review table condensed with a collapse-all view, so it no longer dominates the Review screen on plans with a lot of procedures
Daily production summary card on Signed & Unsigned tabs — revenue collected, money on the table, acceptance rate, and AI morning huddle sentence
Yesterday default — always a complete picture for the morning huddle; Today shows live stats and generates AI insight after 6 PM
Wilson score interval for decline pattern detection — only flags statistically meaningful trends (not single-plan noise)
Insight cached in Firestore — API called once per period per office, subsequent loads are instant
Per-procedure insurance % dropdown — set exact coverage per procedure; choose between category rates or per-procedure mode
Tier card price band alignment — all three cards parallel across all DISC styles, expand/collapse states, and screen sizes
Acceptance rate color thresholds — green 60%+, amber 40–59%, red below 40%
Firestore daily backups — 7-day rolling retention on Blaze plan
Analytics AI insight route fixed — was returning 400 due to missing route decorator
Office param preserved on patient view exit redirect
Duplicate plan detection with EOD escalation at 5 PM — amber pulsing dot on tabs, Firestore-persisted daily dismissal
Unsigned plan preview modal in dashboard — UNSIGNED banner, decline reasons, procedures by tier
Paginated dashboard tabs — 20 plans per page, server-side, across Signed / Unsigned / Archived
Cross-tab search — 3-character minimum, auto-switches tab when plan found elsewhere
Remember my page position setting
Lightweight analytics payload — strips signature images, sends tier totals only
Hard delete protection — requires typing DELETE to confirm remove from analytics
Decline reasons overlay — Cost concerns, Insurance questions, Scheduling concerns, Anxiety / fear, Other
Restore / unarchive button on archived tab
Archive signed/unsigned filter chips
Full analytics tab — acceptance rate, tier distribution, DISC behavioral style breakdown
AI practice insights — Claude Haiku generates personalized actionable summary per analytics period
PDF export for signed plans from dashboard
Date range filters — this week, last week, this month, last month, all time
Per-procedure insurance exclusion toggle on planner page 2
Tier 1 < $3,000 no-insurance threshold
Dashboard themes — Default, Dark, Slate, Warm
Theme syncs from dashboard to staff planner
Show / hide recommended badge and not-covered label settings
Auto-archive timer — configurable, 0 = disabled
Signed / Unsigned / Archived dashboard tabs with bulk select and delete
Soft delete only — hard delete reserved for analytics exclusion
Cloud migration — Electron/native → Railway + Firestore web app
Provisional patent filed — Application No. 64/095,250 (June 21, 2026)
Cross-device by default — Chrome on the desk, any tablet in the chair
Office prefix routing — practice-specific patient URLs (/patient?office=ABC)
Cherry financing integration with 0% APR display
Per-office settings persisted in Firestore
All four DISC styles — Dominant, Influential, Steady, Conscientious
Each style has distinct palette, typography, language, and card layout
1-tier, 2-tier, and 3-tier plan modes
Drag-and-drop procedure reassignment on patient view
Insurance category rates with deductible and annual max
Electronic signature capture with terms checkbox
AI OCR — upload screenshot or paste text from any practice management system
Claude Haiku sorts procedures into Urgent / Proactive / Complete Care tiers
Staff can manually reassign procedures between tiers before sending
6-digit patient code for secure plan retrieval on iPad
Plain-language procedure name rewriting
Dashboard with Signed and Unsigned plan lists