Karavaan & Joker
Platform for volunteers with wanderlust
Client
Karavaan & Joker
Services
Webdesign, Branding, Mobile App, Web Development
Description
Wanted: digital treasure trove of information for world explorers
Challenge
Karavaan & Joker, the volunteer organization behind Joker's sustainable group travels and the travel organization for journeys with that extra touch, faced the challenge of digitalizing collaboration between volunteers and the organization.
They wanted to transform the trip preparation work, which was previously done mainly through word documents, into a dynamic platform where volunteers could exchange and manage information together.
The rich knowledge and experience that volunteers possess about the best locations, unique experiences, and local contacts could thus be brought together in a searchable database for future tour guides.
Aanpak
We zijn niet meteen beginnen bouwen. Samen met Frank van MeBioS hebben we de eerste weken het domein grondig doorgewerkt. Hoe werken lijmplaten? Wat is een meetmoment precies? Welke insecten zijn relevant bij welk gewas? Hoe verhouden onderzoekscentra zich tot landbouwbedrijven en individuele telers?
Dat leverde een domeinmodel op dat verrassend complex bleek: bedrijven die percelen beheren, percelen gekoppeld aan gewassen en target-insecten, meetmomenten met meerdere foto's per plaat, en een volledige AI-verwerkingsketen daarachter. Zonder dat voorwerk hadden we halverwege opnieuw moeten beginnen.
Van organisatie tot insectendetectie
Twee lagen: wie beheert de data en wat gebeurt er tijdens een meting?

Het inzicht: ontkoppel het model van de infrastructuur
Vrij snel werd duidelijk dat we het bestaande Python-model niet moesten herschrijven of aanpassen. We moesten het inpakken.
Het ML-model van MeBioS werkte. Research code, niet productie-ready, maar de detectie zelf was solide. We hoefden geen beter model te bouwen. We moesten zorgen dat 50 gebruikers tegelijk foto's konden uploaden zonder dat iemand een server draaide.
Serverless containers op Scaleway bleken de juiste fit. Het bestaande Python-model draait ongewijzigd in een Docker-container. Een Supabase edge function triggert die container zodra een gebruiker foto's uploadt. De container downloadt de foto's uit object storage, draait de detectie, uploadt de resultaten, en rapporteert via callbacks realtime progressie terug naar de webapp. Detecties landen in de database met bounding boxes, zekerheidsscores en uitsnedes per insect.
Geen eigen servers. De pipeline schaalt mee en staat stil als er niks te doen is. Voor een onderzoeksinstelling is dat precies goed: je betaalt voor wat je gebruikt.
Drie paden, één realtime resultaat
Upload, verwerking en terugkoppeling lopen apart. Er is geen vaste applicatieserver.

Van labo-tool naar veld-app
De frontend bouwden we als een client-side React-applicatie met Supabase als backend. Geen custom server nodig. Deployment via Cloudflare Pages, en de architectuur is zo opgezet dat KU Leuven het op termijn zelf kan hosten op hun eigen GitLab Pages.
Het dashboard toont recente metingen en trendlijnen per insectsoort, met waarschuwingen als drempelwaardes overschreden worden. Foto-upload werkt op mobiel, zodat telers in het veld direct aan de slag kunnen. Na verwerking toont de app bounding boxes op de foto met zekerheidsscores. Onderzoekers kunnen via een annotatie-interface resultaten verifiëren of corrigeren. Die validaties helpen op termijn ook om het model zelf beter te maken.
Onderzoekscentra beheren bedrijven en gebruikers, admins hun eigen team, telers zien hun eigen metingen en rapporten. Insectnamen en gewassen zijn drietalig (Nederlands, Engels, Frans). Alles is exporteerbaar naar CSV of Excel voor verdere analyse of publicatie.
Authenticatie gaat via magic links: een code via e-mail in plaats van wachtwoorden. Dat houdt de drempel laag voor telers die niet dagelijks met software werken.
Moeilijke foto's, eerlijke tijdsinschatting
Foto's van lijmplaten zijn groot. Soms meer dan 100 megabyte. Thumbnails genereren in de browser zonder de hele machine te laten vastlopen bleek een flinke klus. De oplossing: WebAssembly gecombineerd met canvas-rendering.
De keuze voor een client-side only architectuur bracht ook complexiteit mee bij authenticatie en Row Level Security. En het project heeft meer uren gekost dan oorspronkelijk ingeschat. Deels door die technische onverwachtheden, deels doordat de zomer voor een lossere werksfeer zorgde bij zowel ons team als de klant.
We hebben daar intern flink over nagedacht. Scherper afbakenen aan de start, en eerder aan de noodrem trekken als iets langer duurt dan verwacht.
Result
We developed an extensive web app and accompanying mobile app.
This platform is used to prepare hundreds of quality trips annually, with the ability to exchange information, and thanks to the mobile app, this information is always within reach.
Meanwhile, the application has been expanded with new features and there are many more on the organization's and volunteers' wish list. So our journey isn't over yet!