# A voice assistant inside a family app

> A realtime voice assistant inside Juggle Ease, an existing family-organiser app. It is multilingual, turns what people say into real actions in the app across five task categories, and was delivered in about two months, on the day promised. I built the voice assistant, not the app or its API.

- Client: Juggle Ease, a family-organiser app
- Type: Realtime multilingual voice assistant
- Category: Voice AI
- Duration: About 2 months
- Status: Delivered on the day promised
- Stack: Realtime voice · Multilingual · Mapped to app actions · GPT Realtime 2 · Speech-to-text and text-to-speech · Android and iOS audio
- Role: The voice assistant, first call to delivery. Not the app or its API.
- Result: 5 task categories handled by voice (Delivery scope, not adoption or usage.)
- Result: 2 months from start to delivery, about (Delivery scope, not adoption or usage.)
- Result: On time delivered on the day promised (Delivery date against the one promised, not adoption or usage.)
- See Juggle Ease: https://juggleease.com
- Built by: Luka Abramović (https://lukaabramovic.com/)
- Canonical: https://lukaabramovic.com/work/juggle-ease-voice-assistant/

---

## The starting point

Juggle Ease already had a family-organiser app and its own API. Families used it for lists, todos, calendars, reminders and trackers, but every change still meant tapping, typing and finding the right screen. That made quick updates hard when someone was busy or away from the phone. Juggle Ease wanted voice for those moments.

The voice assistant had to live inside that app and work through the actions it already supported. It covers five task categories, which are lists, todos, reminders, trackers and events.

## Voice that does something.

A voice assistant that only talks back is a demo. This one had to turn what people say into something the app actually does, in more than one language, and arrive on the day promised.

### Realtime

Spoken requests handled as people speak, inside the app.

### Multilingual

More than one language. The demo runs in English, then Croatian.

### Real actions

Every request maps to an action the app already supports.

## My role

I built the voice assistant, from the first call and scope to delivery, and delivered it on the day I promised. I did not build the Juggle Ease app or its API: the assistant works through them.

1. First call
2. Discovery
3. Scope & proposal
4. Solution design
5. Build
6. Delivery

<StepDiagram
  label="Diagram: a person speaks a request, the voice assistant understands it in their language, maps it to an app action, and the Juggle Ease app carries it out through its existing API"
  steps={[
    { label: 'Speak', detail: 'A request, in the language the person uses' },
    { label: 'Understand', detail: 'The realtime voice assistant works out what they want' },
    { label: 'Map to an action', detail: 'One of the actions the app already supports', tone: 'accent' },
    { label: 'The app does it', detail: "Through Juggle Ease's existing API" },
  ]}
>
The assistant turns speech into the app's own actions. The app and its API stay as they were.
</StepDiagram>

<VideoFigure src="/media/juggle-ease-demo.mp4" poster={juggleEasePoster} label="Juggle Ease voice assistant demo, 1 minute 58 seconds, English then Croatian" tag="▶ Juggle Ease demo · 1:58" />

## From a spoken request to a change in the app.

The conversation and the app action run in the same realtime loop.

1. Speech-to-text captures the request through the app's voice interface.
2. The assistant works out the task category, the change asked for and any detail it still needs.
3. It creates, edits or deletes the list, todo, reminder, tracker or event through Juggle Ease's existing API.
4. Text-to-speech confirms what changed, so nobody has to go back to the screen to check.

### The existing API

Every change goes through the API Juggle Ease already had, so the assistant changes real data in the app.

### A realtime speech loop

Speech-to-text, the realtime model and text-to-speech keep the conversation responsive.

### Android and iOS audio

Microphone access, playback and interruptions behave differently on each platform, and the integration handles both.

### Several languages

The assistant speaks the major languages GPT Realtime 2 supports.

## Delivered on the day promised.

Five task categories by voice, delivered in about two months, on the day promised at the start. That is delivery scope: no claims here about adoption or usage. In the recorded demo, the assistant creates a picnic list and a packing task in English, then switches to Croatian and adds juice to the same list.

<MetricTiles
  size="m"
  items={[
    { value: '5', note: 'Task categories handled by voice. Delivery scope, not adoption or usage.' },
    { value: 'On time', note: 'Delivered on the day promised, in about two months.' },
  ]}
/>

## What this proves

A voice assistant is useful when what people say turns into the actions the product already supports, and when it lands on the date promised.
