Dashboard
By tier
Activity
Finances
Daily Drill Funnel
Recent Revenue
Handoff Board
I read this board at the start of each session, do the work, and flip your items to ✅ with a note on what happened. Nothing to save - the click is the save.
Sign-up Sources
Where new accounts are coming from. Sources are captured from URL parameters at registration:
signup (came via ?signup=1 direct CTA),
invite (cohort invite link),
course:<name> (course-restricted link),
organic (landed on the site bare).
(pre-tracking) is everyone who registered before 2026-05-10.
| Source | Total | Last 30 days | Last 7 days | Last sign-up |
|---|
Members
| First Name | Last Name | Start Date | Uses | Last Active | Cost | Paid | Tier | Status | Actions |
|---|
Profile Summary
Subscription
Admin Notes
Quick Actions
Cohorts
Progress
Payment History
Practice sessions
Activity Timeline
Revenue
Paying Members
| Name | Plan | Amount |
|---|
Activity Log
| Time | User | Action | Path |
|---|
Student Reflections
Cohorts
Create new class cohort
Generate invites
Paste one address per line. Plain email or Name <email> format — when a name is present, the email greets by first name.
Open invite link
Single share-with-anyone link. Anyone who opens it and registers/logs in joins this cohort. Optionally grant legacy access on join.
Members
Add someone who already has an account (e.g. a resident who signed up on their own) straight into this cohort - no invite needed.
Invites
Daily Drill
Author today's client persona for the Conversational Drill template (?try=daily-conversation-drill). The persona lives in D1 - same data shows up here and via Claude Code. Editing mid-day takes effect for NEW sessions; in-flight sessions keep the persona they started with.
A paragraph or two is plenty. Put anything they actually say in quotes and the first one becomes their opening line.
Substack link
https://mi-ai-practice.com/?try=daily-conversation-drill
Same URL every day. Today's persona above is what users will meet when they click it.
Spanish link
https://mi-ai-practice.com/?try=daily-conversation-drill&lang=es
Same persona, fully in Spanish - UI, coaching, and report all localize. Share this with Spanish-speaking practitioners.
Saves the form to the selected date first, then opens that day's drill in a new tab (daily cap bypassed, capped at 3 turns then the report). The Spanish button is your one-click check that today's drill renders correctly in Spanish.
Paths Review
What the analytics mean
- Reach — distinct users who tried this scenario at least once. Strips out power-user inflation.
- Sessions — total session starts (a single user can start many).
- Completion % — % of starts that reached the end of the scenario. Low completion = people bailing mid-session.
- ★ Rating — average rating from user reflections, with sample size in parentheses. Stated quality.
- Reflection % — % of sessions that ended with a written reflection. Strong signal that the practice landed deeply enough to write about.
- Repeat % — % of users who came back for the same scenario. Real-world signal of value.
No single number captures "engagement" — triangulate. High reach + low completion = a popular scenario that's bailing people out. High rating + low repeat = enjoyed once but not worth coming back to. Etc.
Practice Links
Every practice has its own link. Copy one and send it to someone - the link drops them straight into that practice (guests get the quick name form first; member-only practices show the sign-up gate). Generated from the same catalog the app uses, so it never goes stale.
Practice Hub Funnel
Tracks how users move from arriving at the Practice Hub → clicking a card → starting → completing. Instrumented events only show data captured after deploy; completions are pulled from practice_sessions for full history.
Activation gap
Onboarding step progression
| Step | Distinct users reached |
|---|
Per-scenario click → start → complete
| Scenario | Clicks (users) | Starts (users) | Completes | Click→Start % | Start→Complete % | Avg ex on abandon |
|---|
Settings
Loading prompts...
Brand Identity
Direct link to your logo image (PNG or SVG recommended)
Colors
Typography
Landing Page
Buttons
AI & Payments
AI Model
Maximum length of AI responses (256-8192)
Number of previous messages included for context (2-50)
Stripe & API Status
All keys are managed via CLI (wrangler secret put KEY_NAME). Contact your developer to update.
Webhook Setup
Add this URL as a webhook endpoint in Stripe Dashboard:
Subscribe to these events:
checkout.session.completedcustomer.subscription.updatedcustomer.subscription.deletedinvoice.payment_succeededinvoice.payment_failed
Customer Portal
Enable in Stripe Dashboard > Settings > Billing > Customer Portal. Lets members change plans, update payment methods, and cancel from their profile page.