Room to Speak For judges

One photo of his room becomes his voice. Tap an object, and it speaks for him.

A communication aid for adults with aphasia after a stroke: they understand everything but can't find the words. No login, no install.

Open the app Story Pitch deck

The 30-second path

  1. Open roomspeak.edycu.dev on a phone. A laptop works too. It starts in Bahasa Indonesia; tap English at the top first for English phrases.
  2. Tap one of the four example rooms, or take a photo of a room. In about 4 seconds, rings appear on up to 8 things he'd want to talk about, each with a short first-person phrase. The example rooms are AI-generated.
  3. Tap Selesai (Done in English). The photo fills the screen.
  4. Tap an object. The device speaks its phrase and the rest of the room dims. The bottom row (Ya, Tidak, Tolong, Sakit, Toilet) always speaks too.

To edit again, hold the gear button (top right) for 2 seconds. The scene is saved on the device, so the app reopens straight into this mode.

Receipts

Six AI-generated rooms sent to the live production function on 2026-10-04 at 13:03 UTC, one call each, encoded exactly as the app sends them:

rooms answered
6 / 6
spots found
43
median wall clock
4.03 s
slowest room
7.38 s
provider cost
$0.00
Per room. Step 1 is gemini-3.8-flash, step 2 gemini-3.1-flash-lite.
Room (AI-generated)StepSpotsTime
Living room187.38 s
Stroke-recovery bedroom273.49 s
Dining area274.28 s
Family room at night273.38 s
Terrace284.07 s
Backlit kitchen263.99 s

Every response, with each spot's phrase and box: receipt-2026-10-04.json. How the run was made: DEMO.md in the code repo.

Reproduce it

No clone and no key. This sends the example bedroom to the live function and prints the spots, the model that answered, and the time:

Terminal · macOS or Linux, no clone
{ printf '{"lang":"en","image":"'; curl -s https://roomspeak.edycu.dev/samples/bedroom.jpg | base64 | tr -d '\n'; printf '"}'; } \
  | curl -s https://roomspeak.edycu.dev/api/detect -H 'Content-Type: application/json' --data-binary @- -w '\n%{time_total} s\n'

The full receipt, from a clone of the repo:

Terminal · in a clone of the repo
npm ci && npx playwright install chromium
npm run receipt   # the four example rooms → the live function, one call each

CI runs the tests and browser specs with detection and the device voice stubbed. That is the test suite, not the product. Both commands above call the real function.

Honest limitations