Mobile Developer Flutter iOS & Android (m/v/x)
Waarom wij werken aan Claritalk
Het beste naar boven brengen tijdens gesprekken tussen mensen. Dat is de visie van Claritalk. We focussen op een aantal expert verticals waar er door tijdsgebrek een grote meerwaarde kan gerealiseerd worden door gesprek- en dossierassistentie.
De mobiele app is voor veel gebruikers het eerste en vaakst gebruikte contactpunt met Claritalk: die app staat op de telefoon in hun broekzak, tijdens een echt gesprek, met een echte klant. Als de opname faalt, is het gesprek weg. Geen retry, geen "we halen het uit de logs". Dat maakt dit werk tegelijk het leukste en het minst vergeeflijke stuk van ons product.
Waarom jij wil werken aan Claritalk
- dit is een scale-up met direct en regelmatig contact met de founders
- het product zelf is een echte gebruikstool, geen software die in de achtergrond draait: mensen gaan dit kennen
- er is dan ook directe feedback van gebruikers
- praktische AI met directe invloed op de prestaties bij klanten
- als we iets doen is het omdat het zin heeft
- compact team, dus automatisch veel inspraak en invloed. Keerzijde: verantwoordelijkheid. Moet je willen.
- je eigen werk staat in de App Store en Play Store, met release notes waar je naam onder hangt
Wat moet je kunnen om aan Claritalk te werken?
Voor deze rol is de Flutter app (Dart 3.7+) je thuisbasis. Wat je daar aantreft:
- Clean Architecture + BLoC. Elke feature is opgesplitst in domain (pure Dart), data en presentation. Geen cross-feature imports: delen doe je via core of via geinjecteerde interfaces. Dependency injection met GetIt, een composition root.
- Opname in de achtergrond, en dat is de moeilijke helft. Op Android draait opnemen en uploaden in foreground-task handlers in een aparte isolate, die communiceren met de main isolate via streams. Op iOS werken we met native audio session handling en BGTaskScheduler. Twee platformen, twee verhalen, een interface waar de rest van de app tegen programmeert.
- Audio-interrupties. Een inkomend telefoontje, een bluetooth-oortje dat wegvalt, de gebruiker die van app wisselt: allemaal scenario's die we in productie tegengekomen zijn en waarvoor guards in de code staan met een reden erbij.
- Uploadpipeline. Audio wordt gechunkt en met exponential backoff verstuurd, met structured logging naar Sentry. Lokale persistentie via SQLite, files op disk. Offline werken is geen edge case, het is een dinsdagnamiddag in een kelder bij een klant.
- Security. Alle HTTP gaat door een client met certificate pinning. Tokens gaan via secure storage, payloads worden versleuteld.
- Meertaligheid. Alle user-facing strings via ARB-bestanden en gegenereerde localisaties. Geen hardcoded tekst, ook niet "even snel".
- Routing met auto_route, codegen met build_runner, lints strak gezet, tests met flutter test, en Sentry met symbol upload op de release-pipeline.
- Je bent een gedreven Flutter/Dart ontwikkelaar met een aantal jaar ervaring en hebt al apps door de App Store en Play Store review gekregen. Je weet dus ook wat er allemaal kan mislopen tussen flutter build en een gebruiker die klaagt.
- Je bent niet bang van het platformniveau: Android foreground services, iOS background tasks, permissions, notificaties, batterijgedrag. Waar nodig duik je in Kotlin of Swift.
- State management met BLoC (of gelijkwaardig) is voor jou een gewoonte, geen ontdekkingstocht.
- Je hebt gevoel voor asynchroon werk: isolates, streams, queues, retries, races. Je weet dat "het werkt op mijn toestel" geen bewijs is.
- Je begrijpt hoe AI samenwerkt met de andere processen: de app zelf is geen model, maar wel de plek waar de input vandaan komt en het resultaat toekomt.
- Basiskennis van onze backend (Laravel/MySQL) is een plus, want je zal API-contracten mee vormgeven in plaats van ze alleen consumeren.
- Je weet hoe je de codegenerator in check moet houden.