# A voicebot for the calls the centre can't pick up.

> A diagnostic imaging centre was missing one call in four. Now every unanswered call becomes a callback request, with name, reason and preferred time.

- Sector: Healthcare
- Practice: AI and automation
- Year: 2025-2026
- URL: https://cloudfactory.it/en/work/voicebot-missed-calls-diagnostic-centre/

## In brief

We built an AI phone assistant that answers when the front desk is busy or the centre is closed. It gives the centre's information in formal Italian, collects callback details and hands them to the front desk by email and on a live dashboard. Call audio is not stored.

- **3,489** business-hours calls in eight weeks, before the project
- **24%** of calls missed in the same period
- **38.7%** of calls missed in August
- **0** audio recordings kept

## Context

The centre handles around a hundred patient check-ins a day, with four people rotating on the front desk. The phone system is a carrier-hosted VoIP switchboard: call logs can be exported, but caller numbers come truncated by their last four digits, so they can't be used for callbacks.

## The problem

We analysed calls from 7 August to 30 September 2025, weekdays from 8am to 7pm: 3,489 calls, 836 missed. Losses cluster on Monday mornings and around 10am, when the front desk is busy with patients at the counter. The count includes people who hang up in the first seconds, but the signal is clear: every missed call is a booking that may go elsewhere.

## What we did

1. **Data before ideas.** A map of calls by day and hour, with the loss rate per hour. It told us when the voicebot should step in, and it explained the project to management.
2. **A bridge between telephony and the model.** The switchboard forwards calls to the voicebot when the line is busy, when nobody answers and when the centre is closed. A Node.js service connects the audio stream to the realtime model over WebSocket; Laravel handles calls, data and notifications.
3. **A conversation with strict rules.** It uses the formal register, speaks first, answers on services, opening hours and report pickup. It collects name, phone, reason and time slot one step at a time, then reads the details back and asks for confirmation before closing. The privacy notice is mentioned at the start.
4. **The front desk stays in charge.** Each request reaches the front desk by email and appears on a self-updating dashboard with a To call back filter and the transcript. Whoever calls back marks the request as handled.
5. **An Italian number, not a toll-free one.** Italian switchboards can't forward to toll-free numbers. We moved telephony to a local Italian number, so the centre uses standard call forwarding without changing its phone system.

## How it went

The service is live at the first centre and being extended to a second site of the same group. It became Dianix, our voicebot for medical centres, clinics, labs and care homes: each facility gets its own subdomain, each site its own number, greeting and notification email.

## Tools

Laravel, Node.js, WebSocket, OpenAI Realtime API, Telnyx, AWS SES, MariaDB, Laravel Forge

## FAQ

### Does the voicebot book appointments directly?

No. It collects the request and passes it to the front desk, which confirms the appointment in its own system. The calendar stays with the centre.

### Do we need a new phone system?

No. You set call forwarding to the dedicated number for busy, no answer and after hours. Nothing else changes.

### What data does it keep?

The request details and the transcript, on servers in Italy. Audio is not stored. The centre remains the data controller and Cloudfactory acts as data processor.

---

Cloudfactory S.r.l., Rome. Contact: hello@cloudfactory.it
