Een gesproken groepschat voor plekken waar je elkaar niet kunt verstaan. Elke telefoon ondertitelt z'n eigen drager dichtbij de mond, en stuurt alleen de tekst via Bluetooth naar de schermen van de anderen. Geen internet, geen account.
Midden op de dansvloer van een technofeest. Een leuke klik met iemand die op je afkomt, iets in je oor probeert te roepen — en je verstaat er geen klap van. De bas dreunt door je borst, de zaal zit op ~100 dB. Dit is het ijkpunt waar Versta aan opgehangen is, en het hardste probleem dat er bestaat voor live verstaan.
Het inzicht: bijna altijd probeert iemand iets dicht bij je oor te zeggen. Dáár, vlak bij de mond van de spreker, is het geluid nog schoon — het is de afstand over de dansvloer die het kapotmaakt. Vang je de stem op precies waar 'ie wordt uitgesproken, dan is de halve strijd al gewonnen.
Op 11 juni 2026 postte Kevin Chau (@kchau) een iOS-app tegen luide restaurants — onafhankelijk dezelfde architectuur die Versta als geparkeerde v1.2 had liggen. Elke persoon heeft een iPhone + AirPods; de oortjes blokkeren de zaalruis én leveren een microfoon dicht bij de mond; de twee telefoons praten peer-to-peer over wifi (AirDrop-achtig, geen router). Effectief een lokale intercom waarbij je oren van de herrie geïsoleerd zijn.
Vier onafhankelijke testers hadden dezelfde paired-phone-behoefte al gesignaleerd (Tycho, Jan Nico, festival-jongeren, Olivia). kchau bouwde het en bevestigde: dit werkt, en zijn grootste open probleem is audio-latency.
kchau relayt audio — je moet nog steeds horen, dus elke milliseconde latency telt. Versta Duo zet om naar tekst, en dat is strikt robuuster:
Elke telefoon transcribeert z'n eigen drager. Jouw near-field mic (paar cm van je mond, hoge SNR ook in 100 dB) → jouw iPhone transcribeert jouw schone spraak on-device → alleen de tekst gaat naar de schermen van de anderen. Niemands telefoon hoeft ooit nog een stem uit de zaalherrie te vissen over een tafel of dansvloer heen. Dat lost het moeilijkste probleem — far-field stem in lawaai — volledig op, niet half.
Voor Onno is er een gratis near-field mic die kchau's AirPods evenaart: zijn hoorapparaten. Ingesteld als volledige Bluetooth-headset (niet alleen koptelefoon) levert het hoortoestel de microfoon precies bij het oor — exact waar iemand op de dansvloer in roept. Wat Tycho als "bug" meldde (de mic-sessie kaapt de Bluetooth-output) blijkt juist de beste feature: capture op de plek waar het woord valt.
Kanttekening uit de eerste test: iOS gebruikt steeds maar één van beide toestellen als headset-mic (10 jun: rechts), en het is onzeker of dat stabiel hetzelfde toestel blijft. Een aparte zelftest meet welke mic het beste oppikt — zie de Microfoon-Test.
Symmetrisch: beide kanten doen exact hetzelfde. Capture dichtbij de mond, transcribeer lokaal, stuur alleen tekst over de korte Bluetooth-link, lees op het scherm.
Bidirectioneel over één verbinding: jouw tekst gaat heen, die van hen komt terug. Geen audio verlaat ooit je toestel — alleen korte tekstpakketjes.
Op 11 juni gebouwd en door Onno getest: Versta Duo (com.terwisscha.verstaduo). ~15 minuten onafgebroken transcriberen op de iPhone, daarna de iPad-app geopend → in één klap alle opgespaarde tekst zichtbaar (de outbox flushte instant), daarna stabiel heen-en-weer.
Twee dingen maakten het verschil na een lange debug-grind:
De PoC draait op MultipeerConnectivity (AWDL — de AirDrop-radio). Dat werkte, maar bleek fragiel: koude discovery sliep tot AirDrop AWDL wakker maakte, geen reconnect na backgrounden, en het kan principieel niet met de wifi-radio uit. Het ontwerp verschuift daarom naar Core Bluetooth, achter dezelfde durable outbox — alleen het bezorg-mechanisme wisselt.
| Aspect | kchau (audio) | Versta Duo (tekst) |
|---|---|---|
| Wat reist | Live audio-stream | Korte tekstpakketjes |
| Latency-eis | Hard — elke ms telt | Tolerant — 1-2 s prima |
| Drop overleeft | Gemist woord | Ressynct onzichtbaar |
| Werkt zonder gehoor | Nee, je luistert | Ja, je leest |
| Wifi-radio uit | — | Kan met Core Bluetooth |
Eén abstractie houdt de spraak-, queue- en UI-laag ongemoeid; alleen de byte-link wisselt — zo zijn MC en BLE A/B-testbaar.
Valkuil die het stil sloopt: zonder de juiste Info.plist-sleutels (lokale-netwerk- of Bluetooth-permissie + service-declaratie) vind je nul peers — zonder foutmelding.
Kernspanning: wrijvingsloos (vanzelf verbinden) versus ondubbelzinnig (juist op een druk feest mogen er geen vreemden per ongeluk gekoppeld worden — en dáár wil je 'm gebruiken). Pure auto-connect breekt precies waar de app voor bedoeld is. De oplossing is adaptief, met een vriendelijke handle als sleutel.
iOS-toestelnamen zijn generiek ("iPhone"), dus elk toestel toont een automatisch gegenereerde, botsing-resistente handle: kleur + dier + emoji. Daarboven mag een vrije alias. Dit is een echte spec uit het ontwerp — genereer er een paar:
~16 kleuren × ~22 dieren = honderden combinaties — genoeg variatie als het viraal gaat. De handle is stabiel-by-default (regenereren = bewuste reset), wat straks her-ontmoeting mogelijk maakt.
Bij openen meteen adverteren + scannen — geen "start"-knop. BLE-signaalsterkte (RSSI) filtert: alleen mensen op ~arm-afstand tonen, verre vreemden in de zaal vallen weg.
Dezelfde QR is een Universal Link. Heeft de ander de app niet, dan opent de App Store; na installeren leidt dezelfde code direct naar koppelen. "Laat je code zien → zij installeren → meteen verbonden" is één doorlopende flow — het menigte-vangnet en de virale onboarding in één.
MVP-aanbeveling: nabijheid + handle + tik-met-bevestiging eerst (camera-loos, wrijvingsarm). QR als sterke tweede — het is zowel het vangnet als de groei-lus, dus vroeg waardevol.
De waardevolste case: iedereen praat in z'n eigen mic, iedereen léést een gedeelde live-transcriptie. Een groepsgesprek in lawaai is precies waar gehoor afhaakt. Geïnspireerd op Bitchat's BLE-mesh, opgebouwd in drie tiers.
Twee toestellen, directe BLE-verbinding. De huidige target en bewezen fundering.
Eén toestel is host/kamer; anderen joinen via kamer-QR; de host herzendt naar allen. Werkt als iedereen in bereik van de host is — een tafel of vriendencluster. Geen multi-hop.
Multi-hop relay met TTL + dedup; berichten hoppen via tussenliggende mensen, dus niet iedereen hoeft direct in bereik. Bereik-robuust, schaalt naar grotere groepen — maar zelf een substantieel project.
Ook al doet v1 alleen 1-op-1, het bericht wordt meteen mesh-klaar ontworpen — zo is groep een additieve feature, geen rewrite later.
Eerlijke grens: BLE houdt ~8 gelijktijdige verbindingen per toestel. Sweet spot = kleine co-locatie groep (tafel / vriendencluster, ~4–6), niet de hele club.
Op een dancefeest ben je een avond beste vrienden maar wissel je geen contactgegevens uit. Júíst omdat de app anoniem is (handle, geen telefoonnummer) is de drempel laag — je "maakt contact via de app". De anonimiteit is de feature, niet een beperking.
Omdat de handle / senderId stabiel is, ziet Bluetooth op een vólgend feest dezelfde persoon: "hé, 🦊 Blauwe Vos is er weer — daar kan ik wat tegen zeggen." Dat verandert het product van gereedschap naar een sociaal object: een lichte, anonieme, terugkerende band.
Klein toe te voegen, hoge delight: een lokale "eerder ontmoet"-rol (set van senderId's die je sprak) + bij her-ontdekking een highlight "Blauwe Vos is in de buurt". Blijft volledig on-device.
De werknaam RaveChat verschuift het frame: niet "Versta Duo, een ondertitel-utility", maar een sociaal object voor ravers — de app voor het feest waar je elkaar niet kunt verstaan, en waar je rave-vrienden via Bluetooth terugkomen. Zelfde transcribe-at-source-tech, sterkere viral-framing. (App heet technisch nog Versta Duo / com.terwisscha.verstaduo; hernoemen is een latere stap.)
Fundering staat. De spraak-naar-tekst is gefixt en de relay werkt bidirectioneel; de durable outbox vangt een drop op. De overstap naar BLE-transport is ontworpen maar nog niet gebouwd. 1-op-1 is de MVP-scope.
Scope-waarschuwing uit het ontwerp: dit is een nieuw product-mode (netwerklaag bovenop een nu schone on-device single-app), geen kleine feature. Hoort als eigen spoor, niet ingejat in lopend Versta v2-engine-werk.
Code: ~/Developer/useful-apps/VerstaDuo/ · bundle com.terwisscha.verstaduo · iOS 17, universeel. Spin-off van Versta (live in de App Store).