About the Project
Rounds is a virtual patient encounter system for health-professions education, built at Rutgers Health Hack 2026.
Medical and nursing students get almost no low-stakes practice at clinical conversations before graded OSCEs (Objective Structured Clinical Examinations). Trained standardized patients cost real money and scheduling time, so the practice students need is scarce, and when it exists it is rarely audited. Chatbots do not fix this. They invent clinical facts, give away information the student never earned, and produce feedback that cannot be traced back to anything the student actually said. Faculty cannot build new cases quickly, and they cannot see what a whole class keeps missing.
Rounds answers that with three connected pieces: a faculty Patient Studio, a hands-free voice encounter, and a debrief where every score cites the transcript.
How it works
The Patient Studio
A faculty member describes a patient in plain language, typed or spoken. The system drafts a complete profile onto a fixed checklist, then fills every clinical value from data rather than a model's guess: NHANES age- and sex-matched distributions, published reference intervals, guideline rules (an A1C of 6.5% or higher per ADA, an eGFR of 30 to 59 per KDIGO), or explicit formulas (the race-free CKD-EPI 2021 equation, estimated average glucose from A1C). Every value carries its source, and faculty can override anything. A rule-based consistency checker flags contradictions, missing drug indications, allergy-to-medication conflicts, and mismatched linked values before a student ever meets the case. Publishing freezes a version, so an imported host sample profile or a hand-authored case runs with no code changes. Faculty can bring in existing profiles, attach labs and imaging as openly licensed artifacts, set what releases and when, and preview the finished case with AI test students before publishing.
The encounter
The student gets a briefing card with doorway vitals, then talks. The microphone is always live with streaming transcription (ElevenLabs Scribe v2 Realtime). There is no push-to-talk and no hidden text box, because real patients do not wait for a button. The patient sits centered in a 16:9 call frame with the live transcript below, the assignment goal and exam panel on the left, and a chart on the right that fills in as the student discovers things. The student can perform a narrated physical exam ("I'm going to listen to your heart") and only faculty-approved findings appear.
The patient only states faculty-approved facts and opens up as trust is earned. Trust is real and deterministic: named trust events (explaining a term, following up on something personal, an empathic reflection; a blunt sensitive question before rapport, unexplained jargon) each add or subtract, and no event exists without a quoted span of the transcript.
Why it cannot hallucinate
The LLM never decides facts. Each turn runs through a fixed pipeline:
- Streaming speech-to-text commits the student's words with timestamps.
- A classifier at temperature 0 labels the turn from closed vocabularies, with an evidence span per label.
- The disclosure engine, pure unit-tested code, decides which facts are allowed, what the chart releases, and whether a trust event occurred. The model has no say here.
- The LLM's only job is to phrase the allowed facts in the patient's voice, citing what it used.
- A verifier fails closed: every number in the reply must equal a cited fact, every clinical claim must pass a judge, and every citation must have been allowed. If a check fails, the reply is regenerated once, then a deterministic template takes over.
So the answer to "how do you know it isn't making things up" is architecture: the AI is a speaker, not a doctor. Nothing unsupported reaches the student, and every turn is logged (transcript, intents, disclosures, trust ledger, verifier results, model and prompt versions) so any encounter can be replayed.
The debrief
The debrief is where the learning happens, and its core rule is simple: every judgment points at evidence.
- The official SHP 7-domain rubric scores each domain 1 to 4 or N/A, for a maximum of 28 points, using the school's own descriptors.
- Every non-N/A score cites verbatim transcript spans. A score with no citation is rejected and regenerated.
- Learners see their tier (Fail, Pass, High Pass, or Honors), their percent, and their recent average, never domain scores or review flags. Faculty set tier cutoffs (60% / 75% / 88% by default), optional per-domain minimums, and each tier's name and color. A missed domain minimum fails the visit.
- Faculty see the full picture: a flagged review if the professionalism or safety domain scored 1, plus score overrides with reasons.
Beyond the rubric, the debrief answers what actually happened in the room: what the student elicited and what they missed (with the question that would have found it), a trust timeline with quoted moments, communication metrics in the style of the Motivational Interviewing Treatment Integrity code (open versus closed questions, reflection-to-question ratio, jargon, interruptions), a fabrication check on the student's own documentation note, and audio playback that jumps to the cited moment. The debrief asks before it tells: what was missed stays blurred until the learner chooses to look. One safety rule is absolute: a student asking about suicidal ideation is never penalized, no matter how early it comes.
Patients who change
Encounters are single moments, but real patients return. Faculty author 2 to 4 yes/no decision points per visit, evaluated deterministically from tagged events, with outcomes the faculty wrote: nothing probabilistic, nothing the model extrapolates. The patient comes back different depending on what the student did and failed to do, and the debrief shows the path taken beside the paths not taken. Replay a logged encounter and you get the same disclosures and the same trust ledger, every time.
What faculty see after
A dashboard shows each student's tier over their recent visits and the misses a whole class holds in common, so the next assignment targets the gap. Faculty can export an editable paragraph for the MSPE (Medical Student Performance Evaluation), or an anonymized class export for review.
Validation, on the record
Every number we publish comes from a script in backend/scripts/ with its output saved in docs/validation/. The offline test-student run audits 234/234 delivered replies against the facts the engine allowed. A verifier evaluation of 13 adversarial items over 2 runs passed 26 of 26, with zero false blocks and zero missed inventions. The latency report records sampled timings and explicitly does not claim our 2-second commit-to-first-audio goal is met with live vendor timing. We measure the system: grounding rate, disclosure accuracy, grader agreement against a physician's hand-scored transcripts, difficulty calibration. We make no claim about learning gains, because we did not measure them.
Built on AWS
Bedrock hosts the Claude models for drafting, classification, phrasing, and verification, with model IDs in configuration. The API runs FastAPI on an EC2 t3.small behind CloudFront, with RDS PostgreSQL storing the case documents, encounter logs, and feedback; the React frontend ships from S3. Six CloudFormation stacks deploy the whole environment, and GitHub Actions assumes a deploy role through OIDC. Cognito handles sign-in with email, password, and Google. Everything is synthetic data only, documented how it was made, and every third-party tool is credited.
Built With
- amazon-web-services
- bedrock
- bun
- cloudformation
- cognito
- ec2
- elevenlabs
- fastapi
- github-actions
- iam
- kms
- openapi
- postgresql
- pydantic
- python
- rds
- react
- s3
- shadcn
- ssm
- sts
- tailwind
- tavus
- typescript
Log in or sign up for Devpost to join the conversation.