Disclaimer: Independent educational project. Not affiliated with ZoomRx. Built by Kaushal Khodifad. Data from public sources; figures are estimates.return to portfolio
Disclaimer: Independent educational project. Not affiliated with ZoomRx.

PRD & Architecture

Conversational Qual. Real clinical reasoning at scale.

Sagan brings AI-moderated async In-Depth Interviews into pharma research so a brand team gets 12 oncologist conversations in 48 hours, not 8 weeks - at a quarter of the agency cost.

Live Moderator· 1L EGFR+ NSCLC
Preview loop
Coverage0%
Patient profile
Regimen chosen
Decision driver
CNS consideration
Alternatives weighed
Switch triggers
Probe rate0.00 / ≥0.60
This loop is illustrative. The real moderator runs a live AI interview.Run a real interview
Target depth

vs traditional surveys

48h
Target turnaround

vs 8 weeks

¼
Target cost

of agency IDI

02 · The Problem

Pharma qual produces decks, not decisions.

The bottleneck isn't the moderator's skill - it's the calendar. Every step is sequential, so the deck lands after the brand question has already moved. Async AI moderation collapses the sequence.

 Agency IDISagan
Timeline6-8 weeks48-72 hours
Cost (n≈20)$150K-$300K~¼ the cost
ExecutionSequential, human-bottleneckedAsync, runs in parallel
SynthesisAt study endFires on each session close
ArtifactA static deck (arrives stale)A live dashboard

03 · Users and Buyers

Four people, one product.

BUYER

Priya - Insights Director

Top-20 pharma

Job to be done
Get directional read on physician sentiment 6× faster than current agency cadence.
Top frustration
Spends 6 weeks waiting on a deck that arrives stale.
What success looks like
Decision-ready findings in <72h with verbatim depth.

CONSUMER

Marcus - Brand Manager

Lung cancer franchise

Job to be done
Understand why oncologists pick a regimen so I can sharpen messaging.
Top frustration
Insights team's deck doesn't answer my actual targeting questions.
What success looks like
Ask follow-up questions in plain English and get cited quotes back.

RESPONDENT

Dr. Patel - HCP Respondent

Academic oncology

Job to be done
Share clinical thinking without burning 90 minutes on a video call.
Top frustration
Email recruitment + Zoom scheduling = wasted week, no honorarium worth it.
What success looks like
20 minutes async, peer-to-peer feel, real clinical depth captured.

INTERNAL

Ankur - ZoomRx BD Lead

Internal commercial

Job to be done
Sell paid pilots faster by showing a live working demo, not slides.
Top frustration
Prospect sees pitch, asks to try it - and nothing exists to try.
What success looks like
Send a link, prospect runs a 5-min interview themselves, signs.

04 · Product Architecture

Deterministic where it matters. Probabilistic where it helps.

Deterministic · rule-based codeProbabilistic · LLM
Discussion Guidesection prompts + must-captureDETERMINISTICGuide retrievalkeyword-scored probes (BM25-lite)DETERMINISTICPrompt buildersystem prompt per turn, live gapsDETERMINISTICModerator LLMclaude-sonnet-4.5 turnPROBABILISTICValidation + branchcoverage-gated advancementDETERMINISTICSynthesisthemes / drivers (JSON schema)PROBABILISTICInsights dashboardcharts + NL query + drill-inDETERMINISTIC
Full component / model / determinism table
ComponentOutputModelDeterminism
Discussion Guide (typed)Section prompts + must-capture items-Deterministic · lib/sagan/discussionGuide.ts
Guide retrievalKeyword-scored probe + branch selection (BM25-lite, not vector RAG)-Deterministic · engine.ts selectProbes
Moderator Prompt BuilderSystem prompt per turn, fed the live gaps-Deterministic · moderatorPrompt.ts
OpenRouter LLMModerator turnclaude-sonnet-4.5Probabilistic
Validation + Branch EngineCoverage-gated section advancement + branch triggers-Deterministic · engine.ts
Quality metricsProbe rate / depth / coverage / brand-leakage, per transcript-Deterministic · engine.ts computeQualityMetrics
PV / AE listenerEphMRA 4-criteria adverse-event flags (patient / reporter / product / event) + seriousness-Deterministic · pvListener.ts
Supabase persistenceSessions + messages + synthesis-Deterministic
Synthesis PipelineThemes / drivers / brand perceptions / archetypesclaude-sonnet-4.5 (JSON mode)Probabilistic w/ schema
Insights DashboardCharts + NL query + transcript drill-in-Deterministic

Three deterministic guarantees · implemented in lib/sagan/engine.ts

  1. Mandatory section coverage - deriveSectionState extracts must-capture items from the respondent's words and blocks the transition until they are captured (an anti-stall cap of 2x target turns is the only turn-based guard). Watch the validator chips fill in the Live Moderator.
  2. Structured synthesis output schema - JSON-mode forces themes/drivers/brand/archetypes into typed shapes.
  3. Falsifiable quality SLAs - computeQualityMetrics scores probe rate, depth, coverage and brand-name leakage from each transcript, so a shallow interview fails on-screen rather than passing by assertion.

05 · Conversation Flow

Six beats. Then it synthesizes itself.

~20 minutes async. The last two nodes (accented) fire with no human in the loop - the same momentum you watch in the live progress bar.

  1. 01Warm-up~2 turns, persona context
  2. 02Patient walkthroughrecent case, branching
  3. 03Decision driverswhy this regimen
  4. 04Brand perceptionnamed brands, unaided
  5. 05Stimulus reactmessage / claim test
  6. 06Wrapfinal probe + close
  7. 07Synthesis firesthemes / drivers / archetypes
  8. 08Dashboard updatesnew completed session live

06 · Discussion Guide Framework

Six sections. Twenty-two minutes.

01

Warm-up

2 turns

Must capture

practice setting · avg new EGFR+ patients per quarter

02

Recent Patient Walkthrough

4 turns

Must capture

patient profile · chosen regimen · reason for choice

03

Decision Drivers

3 turns

Must capture

top 3 drivers · CNS handling preference · toxicity threshold

04

Regimen Perceptions

3 turns

Must capture

perceived strength and concern for each regimen

05

Stimulus React

2 turns

Must capture

shift trigger threshold

06

Wrap

1 turns

Must capture

one fix the respondent would make

07 · Quality Metrics

Three numbers that decide go / no-go.

All three are computed deterministically from the transcript by engine.ts and shown on the Live Moderator's summary scorecard - so a weak interview fails them on screen instead of passing by assertion.

Probe Rate

Computed

Probes per substantive answer, counted from moderator turns that dig vs. open a topic.

Target ≥ 0.6

Computed live in the Live Moderator (engine.ts). Measures digging, not just running the guide.

Depth Score

Computed

0-5 specificity of each respondent answer, scored on length, numbers, clinical markers and reasoning.

Target avg ≥ 3.5

Computed live per transcript. A generic interview scores low and visibly misses the SLA.

Brand-name integrity

Computed

Off-guide brand names (Tagrisso, Rybrevant, Lazcluze...) the moderator introduced first.

Target = 0

Computed live. Replaces the unfalsifiable '0 hallucinations' claim with a checkable rule break.

08 · Competitive Positioning

Pharma-native depth. No horizontal tradeoffs.

Pharma-native ◀───────────────▶ HorizontalPanel breadth ◀───▶ AI moderation depthSagan/ZoomRxOutsetStrellaListen LabsM3 GlobalSermoReckner

Sagan / ZoomRx

Verified pharma panel + clinical-context guide + regulatory rigor. The wedge competitors can't copy without rebuilding the panel.

Horizontal AI moderation

Outset, Strella, Listen Labs. Deep AI moderation but no pharma panel - every study needs custom recruitment.

09 · Roadmap

Twelve months, three horizons.

90 days
  • Land 3 paid pilots with Top-20 pharma BD relationships
  • Ship the EGFR+ NSCLC vertical end-to-end (live moderator + dashboard)
  • Probe Rate ≥ 0.6 across 50+ live interviews
180 days
  • Voice-first mobile capture for the respondent
  • Branching templates for 5 more oncology indications
  • Cross-session NL query graduates from beta
12 months
  • Expand from HCP qual to payer + patient async qual
  • Real-time client co-watch (insights director sees responses live)
  • API endpoint so client research teams can embed Sagan in their own workflows

10 · Provenance

Every claim is labelled.

What is real vs illustrative
Real code

Coverage-gated validator, branch engine, guide retrieval (engine.ts), the EphMRA 4-criteria AE listener (pvListener.ts), a live claude-sonnet-4.5 call, computed quality metrics and Supabase aggregation - each with a labelled deterministic fallback if no API key is set.

Public-sourced

ZoomRx panel scale (60,000+ HCPs), coverage of 19 of the top 20 pharma, and competitor raises - all from public disclosures.

Illustrative

Pricing, turnaround and cost targets, seeded dashboard figures (badged in-app), the sample synthesis shown when live AI is off, and PV routing after an AE flag (detection is real; the 24h sponsor-inbox handoff is not performed in a demo).

↑ Independent educational project by Kaushal Khodifad. ZoomRx is a real company in the AI-moderated qualitative pharma primary market research space; this design and the underlying prototype were built by Kaushal as a portfolio study. Not affiliated with, endorsed by, or representative of ZoomRx's actual product. Data is from public sources. Figures are estimates.

Return to portfolioOpen the live demo