All work

Case study 02

AI exam preparation

OsceSetGo

Medical students preparing for OSCEs lack realistic practice partners.

Live — paying users

Explore the project

The actual website

Try it for yourself.

oscesetgo.com

Explore the actual website. Scroll and click inside the frame.

Open full website

01 The project

What we
built.

Real-time voice consultations with an AI patient, built on WebRTC and the OpenAI Realtime API, alongside text-based practice with full history. A station library spans 12 clinical systems, with subscriptions and usage limits handled in-app.

Built in

65 days

At a glance

  • Real-time AI voice consultations
  • Station library across 12 clinical systems
  • Subscriptions and usage limits

02 In practice

Inside the product.

Follow the experience from first step to outcome. These interactive illustrations use example data.

Explore OsceSetGo
Before the conversation

A station.
A new perspective.

Read the candidate brief, then open a voice or typed consultation.

OSCEYour next station
Voice practiceA real-time exchange

Illustrative walkthrough. Example data.

1 of 3

Choose a station

Read the candidate brief and choose a station. A voice or typed consultation follows, with a patient persona prepared for the scenario.

03 Design & engineering

Behind the build.

The decisions, the working parts and what connects them.

The core of the product is the voice consultation: a student talks to an AI patient in real time, the way they would in an exam. We built this on WebRTC with the OpenAI Realtime API, streaming audio in both directions so the conversation runs as a natural exchange rather than a walkie-talkie loop of recorded turns.

Around the consultation sits a station library spanning 12 clinical systems, plus a text-based practice mode that keeps the full history of past sessions so students can go back over how they handled a station. The platform is built on Next.js 15 and React 19 with Supabase as the backend.

Because the AI patient is metered usage, subscriptions and usage limits are part of the product itself rather than an afterthought — Stripe handles billing and limits are enforced in-app. OsceSetGo is live with paying users.

The working parts.

How the build is organised.

  1. Client

    • Student's browser
    • WebRTC audio
    • Text mode
  2. Server

    • Next.js 15 routes
    • Persona assembly
    • Marking
  3. Services

    • OpenAI Realtime
    • Supabase
    • Stripe

Built with

  • Next.js 15
  • React 19
  • Supabase
  • Stripe
  • OpenAI

For a similar project

The decisions
that matter.

Treat a voice session as part of a paid product. Opening a station, talking to a patient, reviewing feedback and returning to session history form one journey. WebRTC supports the live exchange, while the application handles the identity, context and records around it.

The platform is live with paying users, with subscriptions and usage limits built into the practice journey. If you are commissioning voice AI, scope the session limits, connection failures and review experience before treating a successful conversation demo as a finished application.

Voice AI & product integration

By Alwan Technologies · Updated

Have a project like this in mind?