Live offline simulator

Watch a missed dental call become a safe receptionist handoff

This offline simulator shows how the product follows up a missed call by SMS, checks simulated clinic records, suggests safe next actions, and hands reception the final decision.

Offline simulation — uses fixture records and a simulated appointment diary. No real patient data, PMS, Twilio, Supabase, or OpenAI calls.
  1. 1Missed call
  2. 2SMS sent
  3. 3Patient replies
  4. 4Record / diary checked
  5. 5Safety triage
  6. 6Reception handoff
A caller we don't recognise reports facial swelling and trouble swallowing. Safety triage fires regardless of whether we know the patient. Slot suggestions are deliberately blocked — only fixed NHS 111 wording goes out.

Patient phone (simulated)

Unknown caller

+44 77 ••• ••103

⬢ SMS thread

Press Run 60-second demo to play the scenario.

Sent from Camden Demo Dental's clinic number. Fixed safe wording.

Reception dashboard

What the receptionist sees

Live queue

Reception's view will populate as the demo runs.

Audit timeline

Events will appear here as the simulator runs.

Developer details
{
  "scenarioId": "red_flag",
  "patientRecord": {
    "state": "unknown_caller",
    "matchStatusLabel": "Unknown caller — details needed",
    "capturedInfo": [
      "Caller: +44 77 ••• ••103 — number NOT in simulated clinic records",
      "No name provided",
      "Symptoms reported: facial swelling, difficulty swallowing"
    ],
    "recordRecommendedAction": "NHS 111 escalation sent. Reception should review immediately and try to reach the caller — identity can be captured during callback."
  },
  "reception": {
    "urgencyLabel": "Red flag",
    "urgencyTone": "red_flag",
    "safetyStatus": "NHS 111 escalation sent",
    "aiStatus": "Handoff recommended",
    "recommendedAction": "Reception should review immediately and call the patient if appropriate."
  },
  "audit": [
    {
      "label": "Missed call received",
      "atSeconds": 0,
      "tone": "info"
    },
    {
      "label": "Caller number not in simulated clinic records",
      "atSeconds": 0,
      "tone": "warning"
    },
    {
      "label": "SMS follow-up sent",
      "atSeconds": 1,
      "tone": "success"
    },
    {
      "label": "Patient replied",
      "atSeconds": 4,
      "tone": "info"
    },
    {
      "label": "Simulated patient record checked — no match",
      "atSeconds": 4.5,
      "tone": "warning"
    },
    {
      "label": "Red flag detected: facial swelling, difficulty swallowing",
      "atSeconds": 5,
      "tone": "danger"
    },
    {
      "label": "Slot suggestions blocked — safety wording takes precedence",
      "atSeconds": 5.2,
      "tone": "muted"
    },
    {
      "label": "NHS 111 escalation wording sent (caller still unidentified)",
      "atSeconds": 6,
      "tone": "danger"
    },
    {
      "label": "Reception handoff escalated — identify caller during callback",
      "atSeconds": 6,
      "tone": "danger"
    }
  ]
}
Manual test mode(developer / QA — exercises the production triage fallback path)

This panel posts to /api/demo/simulate and runs the real deterministic triage modules. Output is verbose by design — it shows fallback / source / category as the production code reports them. Use the scripted scenarios above for sales demos.

Conversation

Type or pick a preset to start.

Raw audit events

Events from the production triage modules appear here.