DiscoveryBrain · Inquiry 007Company study19 Aug 2026

Product surface and patient journey

MEDvidi · A1

Four public JavaScript bundles read end to end: six clinic brands, four applications, one release train — and the pay-then-qualify sequence that produces the review distribution.

A112,836 words~58 minchapter 7 of 14
inquiry007-medvidi-vpp
areaproduct-surface-patient-journey
typefinding
sensitivityprivate
created2026-08-18
last_validated2026-08-18
reconciles
statusdraft

Proven rule. Every body claim traces to a source. Inferred or single-sourced-shaky claims live in section 4.

Kicker. What a patient buys from MEDvidi is not a treatment and not a subscription — it is a 30-minute video appointment with a licensed prescriber, paid in full before any clinical information is collected, with no guarantee that a prescription results. The company's own refill page says so out loud: "scheduling a prescription refill appointment does not automatically guarantee a prescription refill." Everything that looks like product — the Personal Portal, the intake form, the free DSM-5 self-tests, the 359-post blog, the 27 programmatic state pages — exists to route a search for a drug name into that one paid appointment slot. And the surface a VP of Product would inherit is much larger than medvidi.com: the production JavaScript config served publicly from the patient portal shows one multi-tenant platform running six clinic brands (EZCare Clinic — the default — plus Mango Clinic, MMJ Doctor, ESAcare, MDBerry and MEDvidi) across four separate Angular applications (patient, clinician, CRM, admin) on a shared platform domain, dctr.app. The job posting's "two product tracks" almost certainly maps onto that estate rather than onto medvidi.com. And the honest state of the experience, per 1,909 Google reviews aggregated at 3.9/5 with 24% one-star, is bimodal: patients who get their prescription love it, and patients whose prescription never reaches the pharmacy call it a scam — a failure mode the company's own refund policy explicitly refuses to refund.

Source legend

Tag Source
[JD] The VP of Product posting for MEDvidi, extracted verbatim by the Orchestrator to assets/vpp.md (Notion page 336be61c-1951-8039-94c0-dd077e10b082), read 2026-08-18. Names the org, the two product tracks and the three shipped AI features.
[WEB] MEDvidi's own public marketing pages on medvidi.com, fetched unauthenticated with curl on 2026-08-18. Specific URLs are given inline at each claim. This is the company describing itself to prospective patients.
[SM] MEDvidi's Squirrly-SEO XML sitemaps — medvidi.com/sitemap-pages.xml, -posts.xml, -custom-posts.xml?type=team — pulled 2026-08-18 and also held locally at assets/sm_*.xml. Used here for the <lastmod> date on every page, i.e. when each surface was last touched.
[LEGAL] MEDvidi's own consent and policy pages: /ai-usage-consent/, /consent-to-telehealth/, /payment-terms/, /about-us/refund-policy/, /patient-phe-update/, /faqs/pharmacy-issues/, /promo-codes/. Fetched 2026-08-18. These carry product mechanics the marketing pages do not advertise.
[ARC] Wayback Machine captures of medvidi.com/, /faqs/ and /reviews/, retrieved 2026-08-18 via the CDX API and the …id_/ raw-content endpoint. Used to date pricing changes, state-coverage growth and the disappearance of therapy. Timestamps are given inline.
[APP-PP] The patient portal production JavaScript bundle, https://join.medvidi.com/main-MJ3Z3VDY.js (1.93 MB), a public unauthenticated static asset fetched 2026-08-18. Angular app titled "User Dashboard". Contains the full route map, the analytics event catalogue, the status machines, the environment config and the patient-facing notification copy. Nothing behind a login was touched.
[APP-ADM] The admin console bundle, https://admin.medvidi.com/main-AWPCFFAT.js (1.96 MB), public static asset fetched 2026-08-18. Angular app titled "Admin Medvidi". Contains the admin navigation tree, the platform configuration entities and a shared cross-app analytics event catalogue.
[APP-DOC] The clinician app bundle, https://doc.medvidi.com/main-V2S2PPAN.js (2.80 MB), public static asset fetched 2026-08-18. Angular app titled "Doctor Medvidi". Contains the Chart Review AI and AI-Scribe endpoint surface and the clinician route map.
[APP-CRM] The Care Team CRM bundle, https://crm.dctr.app/main-T6J4M27N.js (2.89 MB), public static asset fetched 2026-08-18. Angular app titled "CRM Medvidi". Contains the operations route map (leads, tasks, calls, refunds, salary).
[HDR] Raw HTTP response headers from join.medvidi.com, admin.medvidi.com, doc.medvidi.com, crm.dctr.app, dctr.app/v/ and api.medvidi.com, captured 2026-08-18. Used for deploy timestamps and infrastructure identification.
[MKT-GTM] MEDvidi's public Google Tag Manager container GTM-T7TBQ8C, fetched from googletagmanager.com/gtm.js?id=GTM-T7TBQ8C on 2026-08-18. Public by design. Shows which conversion events and ad platforms are wired to the funnel.
[REV-TI] Trustindex's public aggregation page for medvidi.com, trustindex.io/reviews/medvidi.com (and its /sk locale variant), read 2026-08-18. Aggregates 1,828 Google reviews plus 81 Trustindex reviews. Self-selected, directional only — never treat as a sample.
[REV-BBB] The Better Business Bureau profile and complaint log for "Medvidi Inc", bbb.org/us/ca/san-jose/profile/mental-health-services/medvidi-inc-1216-1647461 and its /complaints page, read 2026-08-18. The seal is linked from MEDvidi's own homepage footer. Complaint narratives are consumer-written and unverified.
[REV-TP] Trustpilot's public profile for medvidi.com. Direct fetch was blocked (HTTP 403) from this environment; the aggregate figure quoted here came through a search-result snippet on 2026-08-18 and is therefore weaker than [REV-TI].
[COMP-MEDVI] Public material on MEDVi (medvi.com / medvi.org / en-medvi.net) — a different company selling compounded GLP-1 by subscription with medication shipped to the door. Gathered via search on 2026-08-18. Relevant only because MEDvidi's own BBB profile carries a disclaimer distinguishing itself from it, and some BBB complaints appear to be MEDVi's.
[REASON] This Area's own arithmetic. An estimate, never a fact. Inputs and assumptions shown in a fenced block every time.

1. What we found

1.1 The thing being sold is an appointment, not a treatment or a subscription

MEDvidi's public price list has exactly two numbers and has had the same two numbers for roughly three years: $195 for a 30-minute initial visit, $159 for a 15-minute follow-up, described as covering "the majority of our services" [WEB] (medvidi.com/faqs/, fetched 2026-08-18). There is no insurance. There is no published subscription. There is no bundled medication cost. What the $195 buys, in the company's own words, is that "a clinician will assess your symptoms, make a diagnosis, create a treatment plan, and provide you with a prescription if deemed necessary" [WEB].

That conditional is the whole product. The prescription-refill page states the risk without softening it: "The medication choice is based on the symptoms evaluation and treatment history and is subject to federal and state laws. Therefore, scheduling a prescription refill appointment does not automatically guarantee a prescription refill" [WEB] (medvidi.com/services/prescription-refill/, lastmod 2025-10-24 [SM]). The same page excludes a whole drug class outright — "Narcotic pain medications are not refilled on our platform" — and flags that "Controlled substances like anxiolytics, sedatives, and stimulants require additional assessment" [WEB].

There is no /pricing/ page. A request to medvidi.com/pricing/ returns the WordPress 404 template [WEB]. Price is disclosed inside the FAQ and repeated on service pages.

One service departs from the two-price model and is worth flagging because it is the only bundle on the site. The weight-loss page sells three SKUs: "Introductory Consultation $195", "Introductory + Follow-up Consultation Package $249 — Save $105", and "Follow-up Consultation $159" [WEB] (medvidi.com/services/weight-loss-treatment/, lastmod 2026-06-18 [SM]).

Weight-loss package arithmetic  [REASON]
  À-la-carte:  $195 initial + $159 follow-up      = $354
  Package:                                          $249
  Stated saving:                                    $105
  Check: 354 - 249 = 105  ✓ the site's own arithmetic is correct.
  Implied discount:  105 / 354 = 29.7% off two visits.

The ESA-letter page also says "Full ESA Package — From $195", listing "An online 15-minute consultation / ESA eligibility assessment / … / Issuance of the ESA letter / 24/7 support during a year / Over-the-phone verifications" [WEB] (medvidi.com/services/esa-letter/, lastmod 2026-05-08 [SM]). The same page's own process section contradicts that framing — see §3.

1.2 The information architecture is a drug-name funnel, and it converges on one URL

The site's navigation is organised primarily by branded medication, not by condition or by service. The Medications menu lists 9 ADHD drugs, 10 anxiety drugs, 9 depression drugs, 3 insomnia drugs, 3 OCD drugs and 6 weight-loss drugs, each linking to a blog post whose slug is a purchase intent — /blog/how-to-get-prescribed-adderall, /blog/how-to-get-xanax-prescribed-online, /blog/zoloft-sertraline-prescription-online, /blog/how-to-get-zepbound-prescription-online [WEB] (homepage nav, fetched 2026-08-18).

Underneath that sit eleven service pages (/services/adhd-treatment/, /anxiety-disorder-treatment/, /depression-treatment/, /insomnia-treatment/, /ocd-treatment/, /weight-loss-treatment/, /esa-letter/, /medication-management/, /prescription-refill/, /online-assessment/, /adhd-medication-online/), a nine-page ADHD topic cluster (/adhd/, /adhd/symptoms/, /types/, /diagnosis/, /treatment/, /medications/, /doctors/), two free self-tests, and 27 programmatic /services/adhd-treatment/<state>/ pages against only 5 for anxiety [SM].

The crucial mechanical fact is what happens at the end. Every call-to-action on every page resolves to the same bare URL: https://join.medvidi.com/signup. Counted in the served HTML: 7 occurrences on /services/adhd-treatment/, 9 on /services/esa-letter/, 15 on /services/adhd-treatment/ny/, 27 on /services/weight-loss-treatment/, 2 on /tests/adhd/ — with no query string on any of them [WEB].

This matters because the portal is built to accept one. The patient app reads at least sixteen parameters off its own URL, including service (repeatable — the helper is getMultiple, so several services can be pre-selected), promocode, the five utm_* fields, doctor_id, slot, autoSignInEmail, autoSignInPhone, intakeReminderSource, rescheduleSource, autoReschedule and nextVisitAction [APP-PP]. None of those are passed from the marketing site in the HTML as served. A patient who has just read four thousand words about Zepbound arrives at an undifferentiated signup screen and picks their service again from scratch.

Campaign attribution, by contrast, is handled: the GTM container configures a GA4 cross-domain linker across "medvidi.com, join.medvidi.com" with urlPosition: query and enableUrlPassthrough: true [MKT-GTM], and the portal separately reads the _ga cookie to recover a Google client ID [APP-PP]. So the gap is specific: attribution crosses the boundary, intent does not.

1.3 The step order is the single most consequential design decision: pay, then intake

The patient app's analytics screen-name enumeration spells out the booking flow in order, in the company's own words [APP-PP]:

"Registration window - personal info"
"Registration window - verify your email"
"Registration - thank you page after reg"
"Appointment flow - choose service/plan/date&time"
"Appointment flow - payment step"
"Appointment flow - successful payment page"
"Appointment flow - intake step"
"Appointment flow - thank you page"

Payment precedes intake. The route map confirms the same shape — /appointment/payment/intake/:uuid — and the lead status machine has a dedicated WAITING_FOR_INTAKE state entered after isPaid is true [APP-PP]. The patient-facing copy for that state reads: "Your intake form is incomplete. Please finish it in your account to secure your appointment. Your swift response is crucial." [APP-PP]

Then comes a gate almost nobody advertises. After intake there is a WAITING_FOR_VERIFICATION status whose patient-facing message is: "Dear {name}, your intake and PDMP forms are now under review! This process helps us ensure you are receiving the best possible treatment tailored for your needs." [APP-PP] PDMP is the state Prescription Drug Monitoring Program. The admin console has a first-class configuration entity for it — a navigation item literally labelled "Bamboo Health Credentials" [APP-ADM], Bamboo Health being the operator of the PMP AWARxE / NarxCare PDMP gateway — and bamboo-health/credentials appears in both the patient and clinician apps' lists of endpoints whose request and response bodies must be stripped from session recordings [APP-PP] [APP-DOC].

The verification stage has named failure reasons, visible as task types in the shared enumeration: intake_verification, pdmp_verification, verification_issues_intake_other, verification_issues_pdmp_drugs, verification_issues_pdmp_medication, verification_issues_provider_state_not_matching_patient_residence, add_patient_to_dosespot [APP-PP]. That last-but-one reason — provider state not matching patient residence — is the same failure the refund policy names as a full-refund condition ("Incorrect Provider Assignment: A patient is scheduled with a provider not licensed in their state") [LEGAL]. It happens often enough to have both a task type and a refund clause.

And a human call sits in the middle of the "book online in a minute" promise. The NEED_APPOINTMENT notification copy is: "Thank you for your payment! A representative will be contacting you shortly by calling the number provided on your application to schedule and/or confirm the date and time of your appointment, verify your information and inform if any additional documents are needed." [APP-PP] A second state, WAITING_CONFIRMATION, says "verification has been cleared and your appointment can now be scheduled. Our Care Team will reach out shortly to confirm the time and date." [APP-PP]

So the real sequence for at least some cohort is: land → sign up → choose slot → pay $195 → fill intake → wait for intake+PDMP review → get phoned by a human → then have the appointment. The homepage promises "Appointments within 24 hours" [WEB]; nothing observable tells us what share of leads take the fast path versus the reviewed-and-called path.

1.4 Documents the patient must supply, and what the portal records about them

The document-type enumeration in the patient app is: INTAKE, PDMP, PHARMACY_ISSUE, CL_LETTER, MEDICAL_RECORDS, RESIDENCY_PROOFS, ID, TC_FORM, DISCHARGE_LETTER, BY_PATIENT [APP-PP]. Read as a list of asks, that is: government ID, proof of state residency, prior medical records, a signed telehealth-consent form, plus system-generated PDMP reports, a "CL letter" (the companion/ESA letter — the same object the admin console manages under Letter Templates, with a letter-template/render endpoint [APP-ADM]), and a discharge letter for patients the practice ends care with.

Intake instrumentation confirms the uploads are real and where they hurt: PP — Intake — ID Upload, PP — Intake — Insurance Card Uploaded, PP — Intake — Selected Insurance Deleted, PP — Intake — Address ZIP Changed, PP — Intake — Step Opened, PP — Intake — Next Button Clicked, PP — Intake — Back Button Clicked and — the telling one — PP — Intake — Form Abandoned [APP-PP]. Abandonment inside intake is a named, tracked event, which means somebody is already watching it.

The insurance events are worth pausing on, because MEDvidi does not accept insurance for the visit. The intake asks for an insurance card anyway, and the API surface includes insurance/card [APP-PP]. The reason is visible in the pharmacy FAQ: the medication can go through the patient's own insurance at the pharmacy, and the company gives advice on non-coverage, prior authorisation, exceptions and appeals [LEGAL] (medvidi.com/faqs/pharmacy-issues/). The weight-loss page markets "Insurance coverage assistance" against semaglutide specifically [WEB]. So the correct statement is: the visit is cash-pay; the drug is not necessarily.

There is also a real identity-verification layer. passport/verification and lead-passport appear in the endpoint-masking list, and the string persona occurs 15 times in the patient bundle and 14 in the admin bundle [APP-PP] [APP-ADM] — consistent with Persona, an identity-verification vendor. Given Schedule II prescribing, an ID check is what one would expect; the exact vendor binding is parked in §4.

1.5 Intake is followed by clinical questionnaires, and they are a separate product surface

Distinct from the intake form, the portal has a /treatment/:leadId route whose analytics namespace is pp:questionnaires:screen_view, questionnaire_started, questionnaire_completed [APP-PP]. Four lead statuses exist purely to chase them: TREATMENT_INITIAL_NOT_COMPLETED, TREATMENT_OPTIONAL_NOT_COMPLETED, TREATMENT_FOLLOW_UP_NOT_COMPLETED, TREATMENT_SYMPTOM_NOT_COMPLETED [APP-PP].

The copy for each is specific and, frankly, well designed:

  • Initial: "Required pre-visit assessment — Your provider needs to review your {assessment} symptoms level before your visit."
  • Optional: "{condition} often occurs with other conditions, like {others}. Take an optional free assessment to help your provider better prepare for your visit."
  • Follow-up: "Your provider needs to review your {assessments} symptoms level before your visit."
  • Symptom: "What bothers you most? Please select the symptom that's bothering you most to help your provider prioritize your treatment." — button: "Select my focus symptom."

All quoted verbatim [APP-PP]. This is a standardised-measure layer: a required pre-visit instrument, an optional comorbidity screen used as a cross-sell into a second condition, a repeat measure at follow-up, and a single-symptom prioritisation prompt. It is the closest thing MEDvidi has to measurement-based care, and it is invisible from the marketing site.

There is a public, unauthenticated front door to the same idea. /services/online-assessment/ brands it SmartCare: "a brief mental health quiz", "A free and accurate DSM-5 assessment", "Only 5 minutes to complete", "The results are provided immediately after the completion", covering depression, ADHD, anxiety, insomnia and OCD [WEB] (lastmod 2024-11-20 [SM]). /tests/adhd/ implements it concretely: an 18-question, 5-minute instrument whose questions are the ASRS (Adult ADHD Self-Report Scale) item set — the page's form element is literally <form id="asrs-form">, with 18 radio groups scored 0–4 client-side [WEB] (lastmod 2024-10-18 [SM]).

And it captures nothing. There is no email field, no results-gate, no lead form on the test page — only "Consult a Professional" and the same bare join.medvidi.com/signup link [WEB]. A free, WHO-derived qualification instrument that scores the exact population the business monetises, publishing the score to the visitor and keeping no identifier.

1.6 The video visit runs on the company's own app, and the AI is listening

The portal route is /video-call/:leadId, and the production environment config names the target: videoChatHost: "https://dctr.app/v/" [APP-PP]. Fetching that host returns a separate Angular application whose <title> is "MEDvidi Video" [HDR] — a distinct build (Inter + Material Icons, older Angular hashing) from the four main apps (Manrope). So the visit does not run on Zoom or an embedded third-party room; it runs on an in-house video app on the shared platform domain.

Visit-quality and satisfaction are instrumented end to end: pp:appointment:attempted_to_join_call, joined_to_call, failed_to_join_call, stayed_at_call, left_call, attempted_to_leave_call, closed_appointment_in_progress_page, and then pp:appointment:appointment_rated and pp:appointment:provider_rated [APP-PP]. Two separate ratings — the visit and the clinician — collected in-product.

On the clinician side, during that same call, the AI Scribe is running. The shared event catalogue names it "AI Generation" and traces the whole pipeline [APP-ADM] [APP-DOC]:

Doctor Cabinet — Audio Recording — Pipeline Created / Streaming Started /
  Stream Data Sent / Track Changed / Streaming Stopped / Pipeline Error
Doctor Cabinet — Transcript — Updated / Error / Subscribed to Socket Events
Doctor Cabinet — AI Generation — AI Mode Toggle Clicked
Doctor Cabinet — AI Generation — Doctor Joined Appointment / Patient Joined Appointment
Doctor Cabinet — AI Generation — Doctor Audio Track Saved Locally
Doctor Cabinet — AI Generation — Chart Data Fetched / Chart Data Saved
Doctor Cabinet — AI Generation — Chart Fields Saved To Form / Chart Fields Updated
Doctor Cabinet — AI Generation — Chart AI Update Finished / Awaiting Last Generation
Doctor Cabinet — AI Generation — Resources Released / Error

The clinician app's endpoints match: POST doctor-area/appointment-charts/leads/:id/prefill (AI prefill of the chart), GET doctor-area/appointment-charts/leads/:id, PUT doctor-area/appointment-charts/:chartId (submit), POST …/addendums, and — importantly — PUT doctor-area/appointment/:id/turn-chart-generation {isGenerationActive} [APP-DOC]. There is a per-appointment kill switch and a UI toggle for AI mode. There is also a Doctor Cabinet — Chart Form — Save Conflict event, i.e. AI writes and human writes can collide [APP-ADM].

This is exactly what the patient-facing consent page discloses, and the disclosure is unusually blunt. /ai-usage-consent/ — titled "AI-User Disclosures", lastmod 2026-06-11 [SM] — has two halves [LEGAL]. The first, "Consent to Use Ambient Intelligence Tools", says the tools "'listen' to clinical conversations during your provider visit and write draft notes or summaries of the visit in real-time" and then states: "You will not know the ambient intelligence tool is being used; you will not interact with it." It also concedes scope beyond note-taking: "Some ambient intelligence tools do other activities to help support providers while they make diagnoses or decisions regarding your care and treatment."

The second half is titled "AI-Powered Text and Voice Communication Disclosure and Notice (SMS, Website Chat, and Voice)" and covers AI Agents across four channels: "SMS/text messaging, authenticated patient portal chat, public website chat, and voice interactions." It says users "should be aware that they are communicating with an automated system and not a human representative", and lists among collected categories "Call audio recordings and call transcripts (for voice interactions)" and "Inferences drawn from the above information to create a profile reflecting preferences and characteristics" [LEGAL]. That is the posting's "Agentic AI Receptionist" [JD], disclosed as patient-facing on four channels including voice. The booking form even instruments the click: pp:booking_form:ai_consent_link_clicked [APP-PP] — the AI consent is surfaced during booking, alongside telehealth consent, terms, privacy and refund policy links, each with its own click event.

1.7 Prescription and pharmacy: the longest, least-owned stretch of the journey

The e-prescribing vendor is DoseSpot: Dosespot/DOSESPOT appears in the patient, admin and clinician bundles, with a task type add_patient_to_dosespot, socket events DOSESPOT_ERX_DATA_UPDATE and MEDVIDI_ERX_DATA_UPDATE, and a clinician-side counter object {pendingPrescriptionCount, transmissionErrorCount, refillRequest…} [APP-PP] [APP-DOC]. There is a dedicated event Doctor Cabinet — Dosespot — System error occurred [APP-ADM].

The raw prescription status set is DoseSpot's: Entered, Printed, Sending, eRxSent, FaxSent, Error, Deleted, Requested, Edited, EpcsError, EpcsSigned, ReadyToSign, PharmacyVerified [APP-PP]. EPCS is Electronic Prescriptions for Controlled Substances — its presence, with a distinct error state, is the machinery for the Schedule II–V half of the business. Separately the app models pharmacy fill outcomes: FullFill, PartialFill, NoFill, Active, Discontinued, Completed, CancelRequested, CancelPending, Cancelled, CancelDenied, Changed, surfaced to patients as "Medication filled / partially filled / not filled / active / discontinued / …" [APP-PP].

Those thirteen raw states collapse into eight the patient sees: Preparing → Sent to pharmacy → Ready to pick up → Picked up, plus Partially filled, Discontinued, Cancelled and Prescription issue [APP-PP]. The company markets this as a feature — "Track your prescription online: Check your prescription status anytime and know when the medication is ready to pick up" and "Switch pharmacies: Your chosen pharmacy doesn't have your medication? Select another one in a minute" [WEB] (/services/prescription-refill/).

Pharmacy selection is itself a multi-item, ranked list. Intake events include Pharmacies Options Requested / Received, Pharmacy Option Selected, Pharmacy Option Removed and Pharmacy Value Re-Ordered [APP-PP], and the pharmacy service sorts candidates by computed distance [APP-PP]. A PostHog feature flag is_pharmacy_text_search_enabled suggests free-text pharmacy search is still being rolled out [APP-PP]. There are also migration-cleanup methods — getMigrationRemovedPharmacies, deleteMigrationRemovedPharmacies — meaning the pharmacy dataset has been through at least one messy migration [APP-PP].

And then the promise runs out. The pharmacy FAQ, last modified 2023-11-29 [SM] and therefore nearly three years stale, is the company's own account of everything that can go wrong [LEGAL]:

  • "Some pharmacies, large chains and small independents may not accept electronic prescriptions (eRx) from telehealth services due to their specific policies. These policies and the list of pharmacies vary from state to state."
  • "MEDvidi's providers cannot increase supply, order, or transfer controlled substances such as Ritalin, Adderall, etc. due to nationwide restrictions and remands. Also, due to the risk of electronic fraud and DEA guidelines, our providers do not send electronic scripts for controlled substances to multiple pharmacies for stock availability."
  • Refills: "processed by the Care Team by the end of the same working day. Then, your healthcare provider has to approve the refill and send it to the pharmacy, and this step may take up to 72 hours. You may need to have a follow-up appointment to refill your prescription."
  • "refills can be requested only 25 days after the previous prescription's fill date, and pharmacies usually dispense medication 30 days after the last fill date."

The portal has a first-class route for the fallout: /report-pharmacy-issue, plus a document type PHARMACY_ISSUE, a task type pharmacy_issue, a separate prescription_issue, and a query parameter ivr recorded as PHARMACY_ISSUE_IVR_SOURCE [APP-PP] — matching the PHE page's instruction to "contact our Hotline at (504) 414-5095 and press 6" [LEGAL]. So the phone IVR deep-links callers into the pharmacy-issue form. On the clinician side there is an entire Prescription Issue Resolution module: "Re-Prescription Count Notification Viewed", "Re-Prescription Task Viewed", "Medical Chart Viewed in Re-Prescription Task", "PDMP Report Requested OR Link to PDMP Website Clicked", "Re-Prescription Declined by Provider", "Prescriptions Sent to Pharmacy and Re-Prescription Task Is Closed" [APP-ADM].

A final, structural constraint that a VP of Product should be able to state from memory: the refill page notes that a Schedule II controlled substance cannot legally be refilled — "A new prescription should be issued every time" [WEB]. Every 30 days, an ADHD stimulant patient needs a new prescription, not a refill. That is the recurrence engine of the whole business, and it is a legal fact rather than a product choice.

1.8 Money mechanics the marketing pages do not mention

Three things sit in the legal surface and materially change the journey.

Split payment. The Payment Terms — last modified 2023-12-12 [SM], the stalest legal page on the site — say: "The payment might be divided into two parts. First part charges at the moment of the appointment booking. The rest charges just before the appointment starts." [LEGAL] The lead status machine implements exactly that: WAITING_FOR_FULL_PAYMENT, a task type SECOND_PAYMENT, and patient statuses CONFIRMED_AWAITING_FULL_PAYMENT and RESCHEDULED_AWAITING_FULL_PAYMENT [APP-PP].

Penalty fees. The Refunds & Fees Policy, last updated 5 May 2025 [LEGAL], sets a $50 Late Cancellation/Rescheduling Fee for changes inside 8 hours and a $100 No-Show Fee, where no-show means "failing to log in within 5 minutes of the scheduled appointment time when the provider is available". It adds: "Any outstanding No-Show or Late Cancellation/Rescheduling fees must be paid before a new appointment can be scheduled." The fee taxonomy in code is finer than the policy: no_show_lead, no_show_lead_reschedule, no_show_doctor, no_show_both, late_reschedule, technical_issue_lead, technical_issue_doctor [APP-PP] — the system tracks provider no-shows and provider-side technical failures as first-class events too, and has dedicated patient copy for them ("We're sorry your provider couldn't make it. Let's get you rebooked for your {plan}") [APP-PP].

Refund friction, and one explicit carve-out. Refund requests must be made within 15 days; support responds in "48–72 hours"; approved refunds process in "2–3 business days" and then "up to 28 additional business days" to land [LEGAL]. And: "Refunds will not be issued if a pharmacy refuses to fill a prescription due to their policies or stock availability." [LEGAL] The single most common patient complaint category (§1.10) is contractually non-refundable.

Payment rails are broad. The patient bundle wraps Stripe (a pk_live_… publishable key is embedded in the public config, as Stripe intends) and calls Stripe confirmation methods for PayPal, Klarna and Affirm among others [APP-PP]. Buy-now-pay-later on a $195 psychiatric consultation is a deliberate choice about who the patient is. A PostHog flag HSA_FSA_test1 indicates HSA/FSA payment is being tested [APP-PP].

Promo codes officially do not exist and mechanically do. /promo-codes/ (last modified 2025-02-19 [SM]) states: "At this time, MEDvidi does not offer promo codes or discounts to maintain transparent and fair pricing for all patients", and warns that third-party codes "are not valid" [WEB]. Meanwhile the portal reads a promocode URL parameter, persists it to localStorage as PROMOCODE, tracks a DISCOUNT_IS_CLOSED_BY_USER flag for a dismissible discount banner, and the admin console has full CRUD at /promo-code [APP-PP] [APP-ADM]. The page is best read as a defensive SEO asset against coupon-intent queries, not as a statement about the system.

1.9 Membership is being rebuilt — and this is the second time round

The portal has a complete subscription surface: /membership, /membership/cards, /membership/history, /membership/manage [APP-PP]. Its instrumentation is more thorough than anything else in the app — 21 distinct PP — Membership — … events including Screen Viewed, Went To Payment Info, Went To Billing History, New Card Added, Default Card Changed, Card Deleted, Went To Membership Cancellaton (sic), Membership Cancelled, Membership Reactivated, Went To Membership Reactivation, and two that reveal a save-the-customer flow: Stayed With Membership and Moved Next With Membership Cancellation [APP-PP]. The dashboard and header carry entry points — PP — Dashboard — Went To Membership Reactivation, PP — Dashboard — Went To Update Payment Card, PP — Header — Went To Manage Membership [APP-PP]. The booking form knows about it too: Membership Coverage Warning Viewed, Membership Visit Confirmed, Membership Visit Confirmation Error, Went To Join Membership [APP-PP].

It is gated behind flags, i.e. not fully launched: Membership_Launch_Test_1 and Targeted_release_late_reshedule_membership_offer (sic) [APP-PP]. That second flag is notable — a membership offer targeted at people who reschedule late, i.e. at the exact moment they would otherwise be charged the $50 fee.

The Wayback record shows this is a return, not a debut. On 2022-05-25 the FAQ described MEDvidi as a three-tier subscription business [ARC] (web.archive.org/web/20220525025124/https://medvidi.com/faqs/):

  • "If you're on the Medication management plan, your first month's membership will only cost $49! … The subscription includes unlimited messaging with our CareTeam and ongoing video sessions with a therapist or phone appointments with your prescriber."
  • "If you're on the Therapy & Medications management plan, your first month's membership will only cost $219. … plus bi-weekly sessions with a licensed therapist."
  • "The first month of MEDvidi's Therapy plan costs $199. This subscription includes bi-weekly sessions with a licensed therapist, unlimited messaging with our CareTeam…"

By 2022-12-08 the homepage had switched to variable per-visit pricing: "Book an initial appointment at a cost from $25 to $195, depending on the chosen service and your location", "A flexible system of follow-ups allows you to pay for one appointment at a time. Monitor your progress paying from $99 to $175 per visit!", and a discount hook: "Limited offer if joining today: from $25 for your initial visit and as low as $99 per visit afterward" [ARC]. By 2023-11-06 the FAQ shows the flat $195 / $159 that still stands today [ARC].

Pricing eras, dated from Wayback captures  [ARC]
  Era 1  ≤ 2022-05  subscription: $49 / $199 / $219 first month, therapy included
  Era 2  2022-12 → 2023-05  variable per-visit: $25–$195 initial, $99–$175 follow-up,
                            discount-led ("limited offer")
  Era 3  2023-11 → 2026-08  flat $195 / $159, publicly "no promo codes or discounts"
  Era 4  in progress  membership behind PostHog flag Membership_Launch_Test_1  [APP-PP]

Two things vanished on the way and have not come back. Therapy: the homepage mentioned "therapy" or "therapist" 49 times in December 2021, 27 times through mid-2023, once in December 2023, and zero times from December 2024 onward [ARC]. The current provider list is MD, DO, NP, PMHNP, PA — no therapists [WEB]. Unlimited CareTeam messaging: sold in 2022 [ARC], absent from today's portal route map, which has no messaging or chat route at all [APP-PP].

State coverage moved the other way. Counting two-letter state abbreviations on the homepage: 16 in December 2023, 20 in December 2024, 22 in May 2025, 34 in December 2025, 35 today [ARC] [WEB]. Roughly a doubling in two years, with the step change concentrated in the second half of 2025.

1.10 What patients say actually happens

All of this is self-selected and must never be treated as a sample. It is still the only outside view of the experience, and it is unusually consistent.

Trustindex, aggregating 1,828 Google reviews plus 81 of its own, reports 3.9 / 5 across 1,909 reviews, distributed 1,329 five-star, 56 four, 24 three, 41 two and 459 one-star [REV-TI].

Review distribution arithmetic  [REASON] over [REV-TI] counts
  Total check:  1329 + 56 + 24 + 41 + 459 = 1909  ✓
  Weighted mean: (1329·5 + 56·4 + 24·3 + 41·2 + 459·1) / 1909
               = (6645 + 224 + 72 + 82 + 459) / 1909 = 7482 / 1909 = 3.92  ✓ matches "3.9"
  Five-star share: 1329 / 1909 = 69.6%
  One-star share:   459 / 1909 = 24.0%
  Middle (2–4 star): 121 / 1909 = 6.3%   → a barbell, not a bell curve.

Fifteen reviews dated 11–17 August 2026 — the week before this Inquiry — split cleanly [REV-TI]. The five-star reviews almost all name an individual support agent for fixing something: "Sadie was incredibly helpful in resolving my payment issue quickly and efficiently" (5★, 2026-08-17); "Ene at Medvidi was wonderful… The whole process was seamless—easy to schedule" (5★, 2026-08-13); "Cameron was very helpful and directed me in the right direction" (5★, 2026-08-11); and, revealingly, "Elish was the best help in the world after speaking to several MEDvidi staff, she was the first one" (5★, 2026-08-15).

The one-star reviews cluster into five failure modes:

  1. Paid, prescription never arrived at the pharmacy. "Now on day 13 and still don't have it called in to the pharmacy. Have given them 3 different pharmacies. … Paid $195 for nothing!" (1★, 2026-08-16). "100% scam. No prescription, and no refund…they stopped responding" (1★, 2026-08-13).
  2. Paid, then declined or redirected. "I feel like I wasted my time and money…told that I don't qualify for treatment here" (1★, 2026-08-15). "I paid $200 to be referred to an alternate company" (1★, 2026-08-12). "I paid $200 for the online Doctor appt…Total waste of time and money!" (1★, 2026-08-12).
  3. The visit felt like an interrogation. "The consultation was uncomfortable from the beginning and felt more like an interrogation" (1★, 2026-08-13); "just to be interrogated, questioned" (1★, 2026-08-15). This is what the PDMP-plus-verification gate feels like from the patient's chair.
  4. Card retained and charged. "They will get your credit card number and long after you terminate your relationship…they keep charging" (1★, 2026-08-13).
  5. No escalation path. "Unbelievable and absolutely a scam. No way of talking to a 'manager' or a 'supervisor'" (1★, 2026-08-16). And the cost consequence: "IF I COULD GIVE 0 STARS I WOULD…NOW I CANT AFFORD TO GET MY MEDICATION" (1★, 2026-08-11).

BBB, whose seal MEDvidi links from its own footer, records 159 complaints in three years, 58 closed in the last twelve months, categorised as Service/Repair 70, Product 56, Customer Service 10, Sales/Advertising 9, Billing 8, Order 5, Delivery 1 [REV-BBB]. The profile carries an A+ rating and BBB accreditation since 2025-03-07; business start date 2020-04-08; address 4010 Moorpark Ave #114, San Jose, CA [REV-BBB]. Complaint narratives include one squarely on the core product: "$195 paid for telehealth ADHD consult" where the provider had internet issues and the prescription was submitted without patient confirmation (2026-06-16), and a provider who "agreed to fill out FMLA documents" then refused, "claiming requires in-person diagnosis" (2026-06-15) [REV-BBB].

For calibration, MEDvidi's own /reviews/ page (last modified 2026-07-01 [SM]) claims "4.85/5 — Our patients rated their providers", "89% of our patients rated their appointments 5 out of 5" and "33k+ patients rated their appointments" [WEB]. Wayback shows that stat block first appearing between 2025-04-23 and 2025-06-13 and carrying the identical three numbers ever since — through 2025-09, 2025-12, 2026-04 and today [ARC]. Fourteen months without a single digit moving. Treat "33k+" as a mid-2025 hardcoded marketing figure, not a live metric — though it is still a useful floor: at some point before mid-2025 the platform had accumulated over thirty thousand in-product appointment ratings.

Trustpilot, which the footer also links, shows a 4-star score across 1,248 reviews [REV-TP]. That figure came via a search snippet because direct fetches returned 403, so it is the weakest number here. A second support number, (415) 548-2062, appears on the Trustpilot profile alongside the (504) number used everywhere on the site [REV-TP].

1.11 The surfaces a VP of Product would actually inherit

This is the finding that reframes the role. The production environment object embedded in the public patient-portal bundle enumerates the estate [APP-PP]:

environment (verbatim keys, values abridged)
  adminAPI / crmAPI / doctorAPI / patientAPI  →  https://api.medvidi.com
  socketMedvidiAPI  →  https://socket.medvidi.com
  socketDctrAPI     →  wss://socket.dctr.app
  adminHost         →  https://admin.dctr.app
  doctorHost        →  https://doc.medvidi.com
  crmHost           →  https://crm.dctr.app
  videoChatHost     →  https://dctr.app/v/
  sessionKey        →  "dctrapp.api.sess"
  posthogApiHost    →  https://data.medvidi.com/   (PostHog project 149642)
  googleTagManager  →  { start.ezcareclinic.io: GTM-5G78WWS,
                         start.ezcareclinic.com: GTM-5G78WWS,
                         join.medvidi.com:       GTM-T7TBQ8C,
                         start.mangoclinic.com:  GTM-JVQKGW2 }
  websiteCode       →  { default: "start_ezcareclinic",
                         start.ezcareclinic.io / .com: "start_ezcareclinic",
                         start.mangoclinic.com:        "start_mangoclinic",
                         join.medvidi.com:             "join_medvidi" }
  clinicName        →  { default: "EZCare Clinic", start_ezcareclinic: "EZCare Clinic",
                         mmjdoctor: "MMJ Doctor", esacare: "ESAcare",
                         medvidi: "MEDvidi", start_mangoclinic: "Mango Clinic",
                         mdberry: "MDBerry" }

Read that carefully. The default brand is EZCare Clinic, not MEDvidi. MEDvidi is one tenant on a platform whose canonical domain is dctr.app and whose brand registry also holds Mango Clinic, MMJ Doctor, ESAcare and MDBerry. An independent source corroborates: MEDvidi Inc's BBB profile lists "EZCare Clinic" and "Mango Clinic" as alternate business names [REV-BBB]. Four Sentry projects — adminSentry, crmSentry, doctorSentry, patientSentry, all under org o1050997 — confirm four separately monitored applications [APP-PP], and the app-name constant is explicit: DOCTOR_APP="doctor_app", PATIENT_APP="patient_app", CRM_APP="crm_app", ADMIN_APP="admin_app" [APP-PP].

All four are live and titled [HDR]:

Host <title> Role
join.medvidi.com User Dashboard Personal Portal (patient)
doc.medvidi.com Doctor Medvidi Doctor Cabinet (clinician)
crm.dctr.app CRM Medvidi Care Team / ops
admin.medvidi.com Admin Medvidi Platform configuration
dctr.app/v/ MEDvidi Video Video visit app

join.medvidi.com and admin.medvidi.com returned the same last-modified timestamp — Fri, 14 Aug 2026 12:01:45 GMT — with different ETags and sizes, and both load the identical polyfills-E7553MJI.js [HDR]. One monorepo, one release train, four apps deployed together. api.medvidi.com is a single shared API behind AWS API Gateway and CloudFront (apigw-requestid, x-amz-cf-pop: JFK52-P8), returning 404 Not Found at root [HDR]. The front ends are served from nginx 1.18.0 on Ubuntu [HDR].

The route maps are the org chart of the product:

Patient portal [APP-PP]: signup, signin, verification-code, phone-verification, auto-login, dashboard, appointment, payment, intake/:uuid, thank-you, treatment/:leadId, video-call/:leadId, manage-appointment/:id, cancel-appointment/:id, update-zip, profile, membership, cards, history, manage, report-pharmacy-issue. Plus /engine.io — a Socket.IO connection, with a Shared — Socket — Disconnected event [APP-PP].

Doctor Cabinet [APP-DOC]: dashboard, home, appointments, schedule, patient, charts, my-charts, adherence, peer-review, reviewers, review/:reviewId, erx, letters, finances, help-desk, providers, personal, master-login, session-expired, doctor-area/doctor-event/.

Care Team CRM [APP-CRM]: lead, task, call, activity, appointments, schedule, letter, refunds, financial-reports, salary, providers, online-monitor, charts, my-charts, adherence, peer-review, reviewers, dashboard, master-login.

Admin console [APP-ADM], whose navigation groups are: States · Websites · Service Accounts | Services · Service State · Service Plan | Email Templates · Letter Templates | Event Config · Clinician Docs · Bamboo Health Credentials. Plus /user, /user-group, /permission-group, /doctor, /doctor-document, /promo-code, /task-attributes.

The configuration model is therefore Website × Service × State × Plan, with per-clinician credentialling documents and per-clinician PDMP credentials. That is precisely the abstraction that lets one codebase run six clinic brands in 35 states.

Two more surfaces exist in the portal's own service catalogue that the marketing site does not sell. The service-code enum is adhd, anxiety, depression, insomnia, narc (narcolepsy), weight_loss, esa, system_service [APP-PP]. Narcolepsy appears nowhere on medvidi.com [WEB] [SM]. And the lead-creation-type enum is WEBSITE, CALENDAR, MOBILE, FOLLOW_UP, INCOMING_CALL, SUBSCRIPTION, USER_DASHBOARD, BY_DOCTOR [APP-PP] — appointments can be created by a subscription and by a doctor, not only by the patient.

1.12 The support surface, and where the AI receptionist bites

The Care Team's inbound channel enumeration is: incoming_call, missed_call, incoming_email_message, incoming_sms, incoming_facebook_message, incoming_mobile_message, incoming_twilio_live_chat_message, twilio_task, manual, auto_task, other [APP-PP]. Outbound reply actions are reply_to_sms, reply_to_email, reply_to_twilio_live_chat, contact_to_pay, call_patient_on… [APP-PP]. Twilio is confirmed by call-state constants such as CONNECTION_CANCELLED_BY_THE_CALLER_BEFORE_ACCEPTED_BY_TWILIO_CLIENT [APP-PP], and the clinician bundle carries Twilio's call-quality warning thresholds (MOS floor 3, jitter max 30 ms, RTT max 400 ms) [APP-DOC] — so staff dial from the browser and the app watches line quality.

contact_to_pay deserves a sentence of its own: it is a named Care Team action for chasing payment. Combined with the split-payment terms, the CLOSED_PAYMENT_OVERDUE status and the copy "Sorry, the payment is now overdue, and the appointment information was canceled because of that" [APP-PP] [LEGAL], the picture is of a funnel where a meaningful number of booked appointments stall unpaid and get worked by humans on the phone.

That is the queue the "Agentic AI Receptionist that owns internal support processes" [JD] is pointed at, and the AI consent page confirms it is already live on SMS, portal chat, website chat and voice [LEGAL]. Note the mismatch worth asking about: the AI is disclosed as running a public website chat and an authenticated patient portal chat, yet the patient portal route map contains no chat route at all [APP-PP]. Either the chat is a widget rather than a route, or the disclosure runs ahead of the shipped surface.

The clinician-quality loop is the other AI bite point. Chart Review AI's API is chart-review/providers, chart-review/providers/protocol-adherence, chart-review/providers/protocol-rules-scores, chart-review/charts/:id, chart-review/charts/assign, chart-review/charts/status, chart-review/reviewers, chart-review/reviewers/summary — and, crucially, chart-review/charts/:id/report-ai-mistake [APP-DOC]. Its metrics are protocolAdherence and redFlagsPercentages, rendered RED or GREEN, with an adherence_score per chart and per-rule properties adherence_rule_type, adherence_rule_name, adherence_rule_number (reviewRuleId) and adherence_rule_action [APP-DOC]. Protocols are defined per condition and visit type: adhd_initial, adhd_follow_up, anxiety_initial, anxiety_follow_up, depression_initial, depression_follow_up, … [APP-DOC]. Reviewers are assigned charts; deviations paginate; clinicians file addendums. Time windows are today / 7 / 30 days / by month / custom / last 12 months [APP-DOC].

There is a human-in-the-loop eval channel (report-ai-mistake) and a peer-review structure (reviewers, peer-review, review/:reviewId) already wired into both the clinician app and the CRM [APP-DOC] [APP-CRM]. Whether anyone reads the mistake reports is the question a VP would ask on day two.

1.13 Analytics and experimentation: better than the marketing site suggests

The patient app runs PostHog (project 149642, reverse-proxied through data.medvidi.com) with session recording, feature flags, and a deliberate PHI-masking layer: 19 endpoint patterns whose request and response bodies are dropped entirely (user/login, password, token, bamboo-health/credentials, passport/verification, lead-passport, insurance/card, /files/, /s3/, payment/stripe, …), two patterns whose bodies are field-level redacted (chart-review/, appointment-charts/ — masking addendum, client, comment, explanation, failureReason, search, visitDate), URL query masking of search, and full input masking except in explicitly allow-listed elements [APP-PP]. Somebody thought hard about recording a HIPAA product.

The live feature-flag list is small and revealing: Membership_Launch_Test_1, patient_session_recording_split, patient_anonymous_signup_session_recording, is_pharmacy_text_search_enabled, Targeted_release_late_reshedule_membership_offer, HSA_FSA_test1 [APP-PP].

GA4 (G-BZMEPY2QES) sits in GTM alongside Google Ads and Microsoft/Bing UET, with conversion events purchase, book_appointment_payment, form_submit, screen_loaded, experience_impression and cookie_consent_update; consent is managed by Cookiebot [MKT-GTM] [WEB]. Notably absent from this container: any Meta or TikTok pixel — despite MEDvidi maintaining public Facebook, Instagram and TikTok profiles linked from its own footer [MKT-GTM] [WEB]. Segment is also present in the bundles [APP-PP].

The booking funnel is instrumented step by step: screen_viewed, sign_up_form_started, account_created, service_selected, start_with_adhd_selected, transfer_ongoing_care_selected, symptom_selected, challenge_selected, plan_selected, loaded_time_slots, loaded_next_days, loaded_previous_days, selected_time_slot, another_provider_selected, payment_method_selected, attempted_to_pay, purchase_succeeded, purchase_failed, toggled_sms_consent, toggled_terms_consent, plus a click event on each of the five legal links [APP-PP].

transfer_ongoing_care_selected is a strategic tell. The booking form branches between starting fresh with ADHD and transferring existing care — and the ADHD treatment page carries matching copy, "Already diagnosed, but need a change?" [WEB]. A patient already on a stimulant who needs a new prescriber is a materially different, higher-intent, lower-risk segment than an undiagnosed adult, and the product already knows which one it is talking to.

1.14 There is no native mobile app, and here is how that was established

Four independent checks, all on 2026-08-18:

  1. Apple App Store search via the public iTunes Search API for medvidi, ezcare clinic and mango clinic (US storefront, entity=software). 17, 19 and 8 results respectively, none of them MEDvidi's, EZCare's or Mango Clinic's — the hits are unrelated (MediRoutes, Practo Pro, Teladoc, Amwell, Zocdoc, "Mango Mango Dessert") [WEB].
  2. Google Play search pages for medvidi, ezcare clinic, esacare, mmj doctor and mdberry. No matching app appears in any result set [WEB].
  3. No app-store links anywhere on medvidi.com. Grepping every page fetched for this Area — homepage plus 18 service, test, legal and content pages — for apps.apple.com, play.google.com or itunes.apple.com returns nothing [WEB].
  4. The patient surface is a browser app. join.medvidi.com serves an Angular + Angular-Material SPA titled "User Dashboard" with a width=device-width viewport, and the app detects platform purely from the user-agent string (ANDROID / IOS / NOT_MOBILE) [APP-PP] [HDR].

Conclusion: as of August 2026 MEDvidi ships no native iOS or Android app. Its patient product is responsive web only. The MOBILE value in the lead-creation enum and the INCOMING_MOBILE_MESSAGE support channel are mobile-web and mobile-messaging, not an app [APP-PP]. Historical check: the December 2021 homepage contained no fetchable app-store badge either [ARC].

1.15 The clinical entity behind the consumer brand

One structural fact fell out of the legal read and belongs on the record. The Consent to Telehealth (last updated 17 March 2025) opens: "Medvidi Health, P.C., a California professional corporation (a 'Medical Group') provides mental health care services via telehealth" — and then repeatedly says "the applicable Medical Group", implying more than one [LEGAL]. That is the standard MSO / "friendly PC" split: MEDvidi, Inc. is the management and technology company; one or more professional corporations hold the clinical licence and the provider relationships. The consent also renews itself silently — "this consent will be considered renewed upon each new telehealth consultation" — and includes an authorisation to "share information regarding the telehealth exam with other organizations or individuals for treatment, payment, and health care operations purposes" [LEGAL].

The clinician app's finances route and the CRM's salary and financial-reports routes say providers can see their own earnings inside the product [APP-DOC] [APP-CRM], which is consistent with per-visit contractor compensation rather than salary. Detail is A5/A7's; it is recorded here because it came from A1's sources.

1.16 Content surfaces that have been abandoned

Worth naming because a VP inherits them. /webinars/ lists five titles — "Burnout Explained", "Neurodivergence & Mental health", "Self-love isn't selfish, it's necessary", "Mental health x vision", "A Holistic Treatment Approach to ADHD" [WEB] — whose landing pages (/burnout/, /neurodivergence/, /self-love/, /mental-health-x-vision/) were last modified 2024-09-25 and 2024-11-13 [SM]. The webinars index itself: 2025-10-21 [SM]. Two years untouched.

The staleness map across the legal and support surface is the sharper signal [SM]:

Page                          lastmod       age at 2026-08-18
/faqs/pharmacy-issues/        2023-11-29    ~2 yr 9 mo   ← the top complaint driver
/payment-terms/               2023-12-12    ~2 yr 8 mo   ← governs split payment
/terms-and-conditions/        2023-12-15    ~2 yr 8 mo
/services/online-assessment/  2024-11-20    ~1 yr 9 mo   ← the SmartCare front door
/tests/adhd/                  2024-10-18    ~1 yr 10 mo  ← the ASRS lead magnet
/promo-codes/                 2025-02-19    ~1 yr 6 mo
/consent-to-telehealth/       2025-03-17    ~1 yr 5 mo
/about-us/refund-policy/      2025-05-05    ~1 yr 3 mo   (page's own "Last updated")
/ai-usage-consent/            2026-06-11    ~2 mo        ← the only fresh legal page
/services/adhd-treatment/     2026-08-14    days
/faqs/                        2026-08-14    days

The pattern is unambiguous: the acquisition pages and the AI disclosure are maintained; the pages that govern money and the pages that explain what to do when the prescription fails are not.

2. Capability / object table

Item Status Evidence Notes
Initial visit, 30 min Live, $195 [WEB] faqs Unchanged since Nov 2023
Follow-up visit, 15 min Live, $159 [WEB] faqs Unchanged since Nov 2023
Weight-loss 2-visit package Live, $249 [WEB] weight-loss Only bundle on site
ESA "Full Package" Live, "From $195" [WEB] esa-letter Process implies 2 visits
Dedicated pricing page Absent [WEB] /pricing/ 404 Price lives in FAQ
Insurance for the visit Not accepted [WEB] faqs Drug may be covered
Late cancel/reschedule fee $50, under 8 h [LEGAL] refund policy Blocks rebooking if unpaid
No-show fee $100, 5-min grace [LEGAL] refund policy
Split payment In terms + code [LEGAL] [APP-PP] Second charge pre-visit
Refund window 15 days [LEGAL] refund policy 48–72 h response
Pharmacy-refusal refund Excluded [LEGAL] refund policy Top complaint, no refund
Promo codes, public stance "None offered" [WEB] promo-codes Page dated 2025-02-19
Promo codes, machinery Present [APP-PP] [APP-ADM] URL param + admin CRUD
Stripe Live (pk_live_) [APP-PP] Publishable key public by design
PayPal / Klarna / Affirm Wired via Stripe [APP-PP] BNPL on a $195 consult
HSA/FSA Flagged test [APP-PP] HSA_FSA_test1 Not confirmed live
Membership subscription Behind flag [APP-PP] Membership_Launch_Test_1
Membership save-offer Instrumented [APP-PP] Stayed With Membership
Late-reschedule membership offer Flagged [APP-PP] Targeted release
Subscription era 2022 Retired [ARC] 2022-05 $49 / $199 / $219 tiers
Therapy / therapists Retired [ARC] 49→0 homepage mentions
Unlimited CareTeam messaging Retired [ARC] 2022 No chat route today
SmartCare free assessment Live, ungated [WEB] online-assessment DSM-5, 5 min
ADHD self-test Live, ASRS 18-item [WEB] <form id="asrs-form"> No email capture
Anxiety self-test Live [WEB] /tests/anxiety/ lastmod 2024-12-20
Pre-visit questionnaires Live [APP-PP] pp:questionnaires: 4 chasing statuses
Comorbidity cross-sell screen Live [APP-PP] copy "often occurs with…"
Focus-symptom prompt Live [APP-PP] copy "What bothers you most?"
Intake, post-payment Live [APP-PP] screen order Payment precedes intake
Intake abandonment tracking Live [APP-PP] Form Abandoned
ID upload Live [APP-PP] Intake — ID Upload Doc type ID
Residency proof Doc type exists [APP-PP] RESIDENCY_PROOFS Guards state licensure
Insurance-card upload Live [APP-PP] + insurance/card For pharmacy, not visit
Identity verification vendor Persona (probable) [APP-PP] 15 hits Binding unconfirmed
PDMP review gate Live [APP-PP] WAITING_FOR_VERIFICATION Patient told explicitly
Bamboo Health credentials Admin entity [APP-ADM] nav Per-clinician PDMP creds
Care Team confirmation call In copy [APP-PP] NEED_APPOINTMENT Human in "instant" flow
Provider-state mismatch Named failure [APP-PP] [LEGAL] Task type + refund clause
Video visit app Live, in-house [HDR] dctr.app/v/ Title "MEDvidi Video"
Visit rating Live [APP-PP] appointment_rated
Provider rating Live [APP-PP] provider_rated Separate from visit
AI Scribe (ambient) Live [APP-DOC] [LEGAL] Per-appointment toggle
AI Scribe patient consent Published [LEGAL] ai-usage-consent "You will not know"
Chart Review AI Live [APP-DOC] chart-review/* Adherence + red flags
AI-mistake reporting Endpoint exists [APP-DOC] report-ai-mistake Human eval channel
Peer review of charts Live [APP-DOC] [APP-CRM] Reviewers, assignment
Agentic AI Receptionist Disclosed live [LEGAL] [JD] SMS, chat, web chat, voice
Patient portal chat route Absent [APP-PP] route map Disclosure vs surface gap
e-Prescribing DoseSpot [APP-PP] [APP-DOC] EPCS states present
Prescription status, patient 8 states [APP-PP] From 13 DoseSpot states
Pharmacy fill status Modelled [APP-PP] Full/partial/no fill
Multi-pharmacy, ranked Live [APP-PP] reorder event Distance-sorted
Pharmacy text search Behind flag [APP-PP] Not yet default
Report pharmacy issue Live route [APP-PP] IVR deep-link, press 6
Prescription Issue Resolution Live clinician module [APP-ADM] events PDMP in the loop
Refill lead time Up to 72 h [LEGAL] pharmacy FAQ Care Team same-day
Refill earliest 25 days post-fill [LEGAL] pharmacy FAQ Pharmacy dispenses at 30
Multi-pharmacy CS eRx Refused [LEGAL] pharmacy FAQ DEA-fraud rationale
Schedule II refill Legally impossible [WEB] refill page New Rx every time
Narcotic pain meds Excluded [WEB] refill page
Narcolepsy service In portal, unlisted [APP-PP] narc Not on medvidi.com
Native iOS app None [WEB] iTunes API 4-check negative
Native Android app None [WEB] Play search 4-check negative
Patient portal Angular web SPA [HDR] [APP-PP] "User Dashboard"
Doctor Cabinet Angular web SPA [HDR] [APP-DOC] doc.medvidi.com
Care Team CRM Angular web SPA [HDR] [APP-CRM] crm.dctr.app
Admin console Angular web SPA [HDR] [APP-ADM] admin.medvidi.com
Shared API api.medvidi.com [HDR] [APP-PP] AWS APIGW + CloudFront
Realtime Socket.IO [APP-PP] /engine.io socket.medvidi.com
Single release train Yes [HDR] same last-modified 2026-08-14 12:01:45 GMT
Multi-brand platform Confirmed [APP-PP] [REV-BBB] 6 brands, default EZCare
Admin config model Website×Service×State×Plan [APP-ADM] nav Multi-tenant by design
Letter templates Admin entity + render [APP-ADM] ESA/CL letters
PostHog Live, project 149642 [APP-PP] Session recording + flags
PHI masking in recordings Implemented [APP-PP] 19 endpoints stripped
GA4 + Google Ads + Bing UET Live [MKT-GTM] GTM-T7TBQ8C
Meta / TikTok pixel Absent from GTM [MKT-GTM] Social profiles exist
Cross-domain attribution GA4 linker [MKT-GTM] medvidi ↔ join
Service intent handoff Not passed [WEB] CTA hrefs Portal supports ?service=
Site self-reported rating 4.85/5, 89%, 33k+ [WEB] /reviews/ Frozen since ~Jun 2025
Google reviews aggregate 3.9/5, n=1,909 [REV-TI] 24% one-star
Trustpilot aggregate 4/5, n=1,248 [REV-TP] Snippet only, weak
BBB complaints, 3 yr 159 [REV-BBB] 58 in last 12 mo
BBB rating A+, accredited 2025-03-07 [REV-BBB] Start date 2020-04-08
Webinars surface Abandoned [WEB] [SM] Last touched 2024
Clinical entity Medvidi Health, P.C. (CA) [LEGAL] "applicable Medical Group"

3. Reconciliation notes

Reconciliation note — the review score. MEDvidi's own /reviews/ page says 4.85/5 with 89% five-star [WEB]; Trustindex's aggregation of 1,828 Google reviews plus 81 of its own says 3.9/5 with 24% one-star [REV-TI]; a Trustpilot snippet says 4/5 across 1,248 [REV-TP]. These are not the same measurement. The 4.85 figure is described on the page as "Our patients rated their providers" — an in-product post-visit rating of the clinician (pp:appointment:provider_rated [APP-PP]), asked of people who completed a visit. Public-platform reviews are volunteered by anyone, including people who never got a prescription. Resolved as: both are probably true of their own populations, and the gap between them is the finding — the clinical encounter rates well; the end-to-end service does not. Also resolved: the 4.85/89%/33k+ block has been byte-identical on the page from at least 2025-06-13 to 2026-08-18 [ARC], so it must be quoted as a mid-2025 hardcoded figure, never as current.

Reconciliation note — ESA pricing. The ESA page's package card says "Full ESA Package — From $195 … An online 15-minute consultation … Issuance of the ESA letter" [WEB], but the same page's process section says the letter is issued only at a follow-up consultation 30 days after the initial appointment ("After an initial appointment, you will have at least 30 days to follow the received treatment plan. Then, during a follow-up video visit, a healthcare provider will assess your health dynamics and prepare an ESA letter if deemed appropriate") [WEB]. Resolved in favour of the process section, which is more specific and internally consistent with the two-price model: the realistic cost of an ESA letter is $195 + $159 = $354 across two visits and at least 30 days, and "From $195" is the price of the first step only. The word "From" is carrying a great deal of weight.

Reconciliation note — promo codes. /promo-codes/ asserts no discounts exist "to maintain transparent and fair pricing for all patients" [WEB]; the portal reads a promocode parameter and stores it, and the admin console has promo-code CRUD [APP-PP] [APP-ADM]. Resolved as not a contradiction but a channel decision: no public codes, retained machinery, most plausibly used by the Care Team in save and win-back conversations. The page's real job is to rank for coupon-intent queries and defuse third-party fake-code sites. Whether codes are in fact issued is parked in §4.

Reconciliation note — the "shipped GLP-1" complaints. Several 2026 BBB complaint narratives describe things MEDvidi's published model does not do: GLP-1 medication that "arrived melted and hot to the touch" (2026-07-29), automatic monthly billing for medication refills the patient never requested ($399.01, 2026-08-03; "They auto billed me...July 15", 2026-07-22), and a second month that "would jump to $350" (2026-07-15) [REV-BBB]. MEDvidi sends prescriptions to the patient's chosen pharmacy and sells visits, not shipped medication [WEB] [APP-PP]. Meanwhile MEDVi — a different company — sells compounded semaglutide by subscription at roughly $179 first month then ~$299/month with medication shipped to the door, and received an FDA warning letter in February 2026 for marketing misbranded compounded GLP-1s [COMP-MEDVI]; MEDvidi's own BBB profile carries the disclaimer that it "is a separate and unaffiliated company from any other similar-sounding entities, including MEDVI" [REV-BBB]. Resolved partially: the shipped-medication and monthly-auto-billing narratives most plausibly belong to MEDVi and are misfiled, while complaints that name a "$195 telehealth ADHD consult" are clearly MEDvidi's. Not fully resolvable from public sources — see §4. This is a good question for the CEO, because if a quarter of the BBB complaint volume is a competitor's, that is both a reputational tax and a brand-defence problem.

Reconciliation note — "book in a minute" versus the confirmation call. Marketing says "Appointments within 24 hours", "Booking or rescheduling visits in a minute", "No waiting rooms. No paperwork." [WEB]. The portal's own post-payment copy says a representative will phone to schedule/confirm and verify, and a second status says the Care Team will reach out once verification clears [APP-PP]; the refund policy contemplates "no suitable appointment times are available within a reasonable timeframe" as a refund reason [LEGAL]. Resolved as: both paths exist; the self-serve path is real (there are time-slot loading and selection events [APP-PP]) but a reviewed cohort is routed through a human. The share is unknown and parked.

Reconciliation note — "no membership or hidden fees". The weight-loss page asserts "No membership or hidden fees" [WEB], while the portal ships a full membership surface behind a launch flag and the refund policy defines $50 and $100 fees [APP-PP] [LEGAL]. Resolved as true-at-time-of-writing but now fragile: it is accurate that weight loss is sold per visit today, and it will become false the moment Membership_Launch_Test_1 graduates. A page claim that a feature flag can falsify is a content-governance defect.

Reconciliation note — a PWA? join.medvidi.com/manifest.webmanifest and /ngsw.json both return HTTP 200 [HDR], which initially looked like an Angular service-worker PWA. Both in fact return the SPA index.html with content-type: text/html — nginx falls back for unknown paths. Resolved against the PWA claim; no installable-app claim is made here.

4. Open Questions / Parked

  1. What fraction of paid leads never reach a completed visit, and where do they die? The status machine names at least six terminal or stalled states — CLOSED_UNPAID, CLOSED_PAYMENT_OVERDUE, APPOINTMENT_EXPIRED, UNUSED_APPOINTMENT, REFUND, DISCHARGED [APP-PP] — and PP — Intake — Form Abandoned exists as an event. The rates are the whole business. Settled by: the PostHog funnel from pp:booking_form:purchase_succeeded to visit completion, which the Data team already has.
  2. What share of leads goes through the human confirmation call versus pure self-serve? Two statuses imply a manual routing step [APP-PP]. Settled by: CRM task volume by type divided by paid leads.
  3. What is the intake→verification rejection rate, and what happens to those patients' $195? verification_issues_pdmp_drugs, …_pdmp_medication, …_intake_other exist as task types [APP-PP], and reviews describe being told "I don't qualify for treatment here" after paying [REV-TI]. Settled by: count of leads entering WAITING_FOR_VERIFICATION that never reach APPROVED, and the refund disposition of each.
  4. Is service genuinely dropped at the marketing→portal boundary, or does GTM rewrite the href at click time? The served HTML has bare join.medvidi.com/signup on every CTA [WEB], and the portal supports ?service= [APP-PP]; curl cannot observe runtime DOM mutation. Settled by: loading a service page in a browser and reading the final href, or by a PostHog breakdown of service_selected conditioned on referrer path.
  5. Is Persona actually the identity-verification vendor? The string persona appears 15 times in the patient bundle and 14 in the admin bundle alongside passport/verification and lead-passport [APP-PP] [APP-ADM], but the occurrences could be PostHog's mask_personal_data_properties. Settled by: one network trace of the intake ID-upload step, or asking.
  6. Which WebRTC stack powers the video visit? dctr.app/v/ is a separate Angular app titled "MEDvidi Video" [HDR], but its bundle path could not be resolved without guessing, which this Area declined to do. Twilio Voice is confirmed for telephony [APP-PP] [APP-DOC]; video is unconfirmed. Settled by: the app's own network panel.
  7. Which model provider serves the AI Scribe and Chart Review AI? No openai, anthropic, deepgram, assemblyai or whisper strings appear in any of the four public bundles [APP-PP] [APP-ADM] [APP-DOC] [APP-CRM] — inference is entirely server-side, which is the correct design and also opaque from outside. Settled by: asking, or by the BAA list.
  8. Is the disclosed patient-portal AI chat actually shipped? The AI consent covers "authenticated patient portal chat" [LEGAL]; the portal route map has no chat route [APP-PP]. Could be a widget, could be disclosure ahead of shipping. Settled by: a look at the logged-in dashboard.
  9. Is the narcolepsy service live and sellable? narc is a service code in the portal [APP-PP] and appears nowhere on medvidi.com [WEB] [SM]. Narcolepsy drugs are Schedule II/III/IV. Settled by: the admin service × service-state table.
  10. What does Membership cost, what does it include, and is it live for anyone? No price or benefit copy for membership appears in the public bundle — the portal fetches membership from the API [APP-PP]. Settled by: the service-plan records in admin.
  11. Are promo codes actually issued today? Machinery yes, public stance no [APP-PP] [WEB]. Settled by: the admin /promo-code list.
  12. How much of the BBB complaint volume is MEDVi's, misattributed? See §3. Settled by: reading all 159 narratives and classifying by described product, or by BBB correspondence.
  13. What is the real time-to-first-appointment distribution? "Appointments within 24 hours" [WEB] versus "day 13 and still don't have it called in to the pharmacy" [REV-TI], which is a different clock (Rx transmission, not booking). Settled by: selected_time_slot timestamp minus purchase_succeeded timestamp, p50/p90.
  14. What is the eRx transmission failure rate? The clinician app tracks a transmissionErrorCount and there is a Dosespot — System error occurred event [APP-DOC] [APP-ADM]. Settled by: that counter over time, and the size of the re-prescription task queue.
  15. How many distinct chart-review rules exist, per condition and visit type? The API exposes protocol-rules-scores with reviewRuleId [APP-DOC]; the rule catalogue itself is server-side. Settled by: the adherence page.
  16. Does anyone action report-ai-mistake? The endpoint exists [APP-DOC]. Whether the reports feed an eval set is exactly the "AI Evals in practice" question the posting asks about [JD]. Settled by: asking the AI Clinic Track lead.
  17. Which surfaces belong to "Core Track" versus "AI Clinic Track"? Hypothesis, labelled as such (§6). No public source names the tracks beyond the posting [JD]. Settled by: one question in the interview.
  18. Why is there no Meta or TikTok pixel in the GTM container when Facebook, Instagram and TikTok profiles are linked from the footer [MKT-GTM] [WEB]? Could be a second container, server-side tagging, or genuinely no paid social. A2's question; flagged here because it was found in A1's sources.

5. What this does NOT cover

  • Anything behind the login wall. No account was created, no credential attempted, no consult purchased. Every statement about the portal, clinician app, CRM and admin console comes from public, unauthenticated static JavaScript assets and public HTTP headers. What a logged-in dashboard looks like — layout, copy, empty states, actual membership prices, the real intake question set — is unobserved.
  • Host enumeration. Only hostnames that MEDvidi itself publishes (linked from its pages or named in its own public environment config) were requested. No port scanning, no directory brute-forcing, no subdomain sweeps, no API probing beyond the documented root.
  • The API contract. api.medvidi.com returns 404 at root and no public schema was sought. Endpoint names quoted here come from the client bundles, not from calling the API.
  • Traffic, keyword and spend estimates. Volumes, CAC, conversion rates, channel mix → A2.
  • Unit economics. Any inference from $195/$159 to revenue, LTV, margin or visit volume → A3. This Area deliberately stops at the price list and the fee schedule.
  • The DEA regime and the 2026-12-31 cliff. The PHE page and the FAQ are quoted as product copy only; the regulation itself, its history and what actually changes → A4.
  • Clinician supply, licensure counts, capacity, compensation and the ops org. The 35 team profiles, the finances/salary routes and the MSO/PC structure are noted where they surfaced in A1's sources and handed to A5 and A7.
  • The competitive set. MEDVi appears only to resolve a source-attribution problem, not as a competitor analysis → A6.
  • Clinical judgement. Whether the protocols, the ASRS cut-offs, the 30-day ESA waiting period or telehealth stimulant prescribing are good medicine is out of scope by the Inquiry's own terms.
  • Individual clinicians and named support agents. First names appearing in public reviews are quoted only as evidence about the service-recovery pattern. No person was researched.
  • Non-US surfaces. None were sought; the regional Trustpilot domains used are locale mirrors of the same US profile.

6. What this means for a VP of Product

The first thing to say out loud in the room is that the surface is four apps and six brands, not one website. If Ilia walks in describing medvidi.com, he is describing the marketing veneer. The public environment config names PATIENT_APP, DOCTOR_APP, CRM_APP and ADMIN_APP, deployed from one release train, against one API, on a platform domain called dctr.app whose default brand is EZCare Clinic — with Mango Clinic, MMJ Doctor, ESAcare and MDBerry in the same registry, and BBB independently listing EZCare and Mango as alternate names of MEDvidi Inc. That reframes the job: this is a multi-tenant clinical operations platform with a consumer front end, configured as Website × Service × State × Plan, and the 30-plus engineers make sense in that light in a way they do not if you think the product is a WordPress site plus a booking form. The corresponding hypothesis about the posting's two tracks — and it must be offered as a hypothesis — is that Core Track owns the patient funnel and the Personal Portal (acquisition, booking, payment, intake, membership) while AI Clinic Track owns the Doctor Cabinet and CRM (Scribe, Chart Review, adherence, peer review, the receptionist and the task queue). The evidence for it is that the AI features are entirely clinician- and ops-side in the code, and the patient bundle contains no AI at all beyond a consent link. One question confirms or kills it.

The mechanical defect worth naming precisely is the step order: payment before intake, before verification, before the visit. This is not a bug; it is a deliberate, behaviourally sophisticated choice — sunk cost carries people through a long intake, and it stops clinician time being spent on unqualified leads. It is also the direct cause of the one-star cluster. When a patient pays $195, uploads their ID, completes the intake, waits for a PDMP review and then hears "you don't qualify here" or "we're referring you to another company", the company has converted a clinical screening decision into a consumer fraud perception. The Trustindex distribution is the receipt: 69.6% five-star and 24.0% one-star, with only 6.3% in the middle. A barbell like that is not a quality problem in the ordinary sense — it is two different journeys sharing one checkout. The tradeoff a VP has to actually make is explicit: move any qualification signal before the paywall and you lose revenue from leads you currently monetise before rejecting; leave it where it is and you keep buying one-star reviews and BBB complaints with money you already collected. The honest middle is a pre-payment eligibility check that is cheap to build and precise about what it excludes — state of residence, age, the handful of PDMP-visible patterns that reliably lead to declination, and the drugs the platform will never prescribe — plus a named, funded "declined after payment" refund path that does not require a 48–72-hour email exchange. Note what that costs: it will reduce paid initial visits. A VP who proposes it without saying so will be caught.

The second defect is that the longest, most failure-prone stretch of the journey is the one the company contractually disowns. Between "prescription written" and "medication in hand" sit DoseSpot transmission, EPCS signing, pharmacy acceptance of telehealth eRx (which "varies from state to state"), stock availability, the 25-day refill floor, the up-to-72-hour provider approval window and the explicit refusal to shop a controlled-substance script across pharmacies. Every one of those is real and defensible. And the refund policy says: "Refunds will not be issued if a pharmacy refuses to fill a prescription." So the company has built a /report-pharmacy-issue route, a PHARMACY_ISSUE document type, an IVR deep-link on option 6, a clinician-side Prescription Issue Resolution module with PDMP in the loop, and a patient-facing status literally called Prescription issue — and then told the patient the money is gone. That is where "day 13, three different pharmacies, paid $195 for nothing" comes from. The product answer is not a refund policy change; it is making the pharmacy hop a tracked commitment with an SLA and a proactive owner — pharmacy-level fill-success data already exists in the fill-status model, so the platform can rank pharmacies by observed telehealth-eRx acceptance per state per drug and steer the patient before the script goes out, rather than reacting after it bounces. That is a data product, it uses signals the company already collects, and it converts the single largest complaint category into a differentiator. It is also the highest-leverage thing in this Area.

The AI already shipped is better positioned than the posting implies, and the gap is evaluation rather than capability. Chart Review AI is not a demo: it has per-rule scores, protocol adherence and red-flag percentages per provider, protocols differentiated by condition and by initial-versus-follow-up, chart assignment to named reviewers, a paginated deviations view, an addendum workflow and — the detail that matters most — a report-ai-mistake endpoint. That endpoint is a human-in-the-loop eval channel that already exists in production. If nobody is turning those reports into a labelled eval set with a tracked precision and recall per rule, that is the single cheapest high-credibility thing a new VP can fix in the first month, and it maps one-to-one onto the posting's demand for "AI Evals in practice". The same holds for the Scribe: there is an AI-mode toggle, a chart-save conflict event and a per-appointment generation kill switch, which means clinician trust is already being measured implicitly by toggle-off rate. Ask for that number. If it is high, the Scribe is theatre; if it is low and falling, it is working.

Membership is the strategic question, and the company has been here before. In May 2022 MEDvidi sold three subscription tiers at $49, $199 and $219 with therapy and unlimited care team messaging included. By December 2022 it was selling variable per-visit pricing from $25. By November 2023 it was flat $195/$159 with a public page insisting it offers no discounts "to maintain transparent and fair pricing". Today there is a fully instrumented membership surface — cards, billing history, cancellation with a save-offer, reactivation — sitting behind Membership_Launch_Test_1, plus a flag for a membership offer targeted specifically at people who reschedule late. That history is the most useful thing in this Finding for a first conversation with a CEO, because it means the right question is not "should we do subscription?" but "what broke last time, and what is different now?" Two candidate answers are visible from outside: last time the subscription bundled therapy, which the company then exited entirely (49 homepage mentions in 2021, zero from 2024), so the bundle had a cost line it could not control; and last time there was no legal forcing function, whereas now the fact that a Schedule II prescription cannot be refilled and must be reissued every 30 days gives a monthly-cadence membership a genuine reason to exist that the patient can feel. A VP who arrives with that framing is arguing about the business, not about a pricing page.

What to leave alone. The $195/$159 price points, which have held for three years and are anchored on-site against a $400–500 in-person comparison. The drug-name information architecture, which is A2's asset and is clearly working. The video app, which is in-house and uninteresting. The 27 programmatic state pages. And the temptation to build a native mobile app: there is provably no iOS or Android app today, the patient product is responsive web, and nothing in the observable failure modes is caused by the absence of an app — the failures are payment-before-qualification and pharmacy hand-off. Building an app would be the most visible and least useful thing a new VP could do, and it should be on the cut list loudly and early.

Two smaller things worth a slide each. First, the free ASRS self-test: eighteen WHO-derived items, scored client-side, presented to a self-selecting population of people who suspect they have ADHD, with no email capture and no identifier — and a page last touched in October 2024. That is a lead magnet that magnetises nothing, and the fix is a week of work. Second, the handoff: every CTA on every page points at a bare join.medvidi.com/signup while the portal is built to read ?service=, ?promocode=, ?doctor_id= and ?slot=. Attribution crosses the boundary via the GA4 linker; intent does not. A patient who read four thousand words about Zepbound picks their service again from a blank list. Also on that theme: the pages that govern money and failure — Payment Terms (2023-12-12), the pharmacy-issues FAQ (2023-11-29) — have not been touched in nearly three years, while the acquisition pages were updated four days ago. Content governance follows revenue attention, and in a regulated cash-pay business that asymmetry is a liability as well as a bad experience.

Five questions this Area earns the right to ask. What percentage of paid initial visits end without a prescription, and what happens to that money? What is the p50 and p90 from purchase_succeeded to a completed video visit, and separately to a pharmacy-confirmed fill? What is the AI-mode toggle-off rate in the Doctor Cabinet, and does anyone read the report-ai-mistake queue? What killed the 2022 subscription, and what is different about Membership_Launch_Test_1? And — the one that shows he did the work — how much of the 159 BBB complaints are actually MEDVi's, and who owns getting them reattributed?

DiscoveryBrain Inquiry 007 · MEDvidi
Fourteen Areas · adversarially verified · nothing summarised away