[{"data":1,"prerenderedAt":1028},["ShallowReactive",2],{"footer-vacatures-nl":3,"cases-nl":4,"case-overview-nl":932},[],[5,187,336,484,624,778],{"id":6,"title":7,"approach":8,"body":23,"build":30,"card":43,"connections":47,"cta":48,"dataExamples":47,"description":27,"extension":54,"facts":55,"featured":70,"guardrails":71,"hero":84,"integrations":47,"key":89,"meta":90,"navigation":70,"offers":91,"order":101,"path":102,"proof":103,"relations":116,"result":137,"seo":149,"situation":152,"stem":165,"summary":166,"usecases":167,"visuals":179,"__hash__":186},"cases_nl\u002Fcases\u002Frobo-helma.md","Robo Helma: AI-support die weet waar ze het over heeft",{"title":9,"steps":10},"Hoe hebben we het aangepakt?",[11,14,17,20],{"title":12,"text":13},"Kennis opdelen naar functie","We behandelen gedrag en supportregels als OpenAI Skills, productdocumentatie als doorzoekbare kennis in een vector store en actuele klant- of systeeminformatie als externe context. Daardoor heeft iedere soort informatie een duidelijke plek.\n",{"title":15,"text":16},"Context ophalen vóór het antwoord","Per supportvraag verzamelt Helma eerst de relevante context. Productkennis komt via File Search, klantinformatie kan via een externe MCP-koppeling worden opgehaald en actuele incidentinformatie komt uit een aparte gecontroleerde bron.\n",{"title":18,"text":19},"Engineering en support verbinden","Een supportticket kan aan een bestaand GitHub-issue worden gekoppeld. Helma volgt de technische status read-only. Als engineering een issue sluit of heropent, kan die nieuwe status worden meegenomen in een klantveilig conceptantwoord zonder interne ontwikkelinformatie bloot te geven.\n",{"title":21,"text":22},"De mens houdt de eindcontrole","Helma maakt een conceptantwoord voor human review. De medewerker kan het direct versturen of aanpassen. Het oorspronkelijke AI-antwoord en het uiteindelijk verzonden antwoord worden beide bewaard, zodat we meten hoe bruikbaar de AI werkelijk is.\n",{"type":24,"value":25,"toc":26},"minimark",[],{"title":27,"searchDepth":28,"depth":28,"links":29},"",2,[],{"title":31,"intro":32,"points":33},"Wat hebben we gebouwd?","Robo Helma is een complete supportworkflow waarin AI, kennis, integraties, ticketing en feedback samenkomen, geen losse chatbot naast een bestaande helpdesk.\n",[34,37,40],{"title":35,"text":36},"Een configureerbare kennislaag","Iedere brand kan eigen OpenAI Skills en een eigen vector store gebruiken. Skills bevatten bijvoorbeeld supportgedrag, tone of voice en escalatiebeleid. De vector store bevat productkennis zoals FAQ's, policies, known issues en documentatie.\n",{"title":38,"text":39},"Context uit echte systemen","Helma kan productkennis combineren met klantgebonden informatie, actuele incidenten, eerdere klantinteracties en gekoppelde engineeringcontext. Zo hoeft het model kritieke feiten niet zelf te bedenken.\n",{"title":41,"text":42},"Een volledige supportomgeving","Rond de AI bouwden we een multi-tenant inbox, ticketstatussen, interne notities, attachments, reporting, feedbackregistratie en koppelingen voor onder andere e-mail, Facebook Messenger, app-store reviews en GitHub.\n",{"tag":44,"title":7,"summary":45,"metric":46},"AI support · human-in-the-loop","Robo Helma combineert productdocumentatie, supportregels, klantdata, incidentinformatie en GitHub-status tot één gecontroleerde AI-workflow.","67% van de gegenereerde antwoorden wordt zonder aanpassing verstuurd.",null,{"title":49,"body":50,"primaryCta":51,"secondaryCta":52,"local":53},"Ook AI bouwen die méér moet kunnen dan een nette tekst genereren?","Laat zien welke kennis en systemen bij jouw proces betrokken zijn. We helpen je bepalen hoe je daar een betrouwbare AI-workflow van maakt, inclusief integraties, guardrails en human-in-the-loop.\n","Plan een gesprek","Bekijk aanbod","Senior AI- en software engineering vanuit Delft, voor organisaties in Delft, Den Haag, Rotterdam en omgeving.\n","md",{"title":56,"items":57},"Case in het kort",[58,61,64,67],{"label":59,"value":60},"Direct bruikbaar","67% zonder aanpassing verstuurd",{"label":62,"value":63},"Kleine aanpassing","18%",{"label":65,"value":66},"Volledig aangepast","15%",{"label":68,"value":69},"Kennis","Skills, vector search en live context",true,{"title":72,"intro":73,"points":74},"Betrouwbare AI vraagt meer dan goede prompts","Klanten kunnen alles in een bericht zetten en externe bronnen kunnen verouderde of onbetrouwbare informatie bevatten. Daarom behandelen we die input niet automatisch als instructie voor het model.\n",[75,78,81],{"title":76,"text":77},"Prompt injection wordt expliciet gecontroleerd","Helma controleert klantberichten op pogingen om instructies, veiligheidsregels, tools of verborgen prompts te manipuleren.\n",{"title":79,"text":80},"Iedere bron heeft een eigen rol","Productdocumentatie bepaalt productfeiten, klantdata bepaalt klantgebonden informatie en GitHub geeft alleen technische status. De ene bron mag niet zomaar iets overnemen van de andere.\n",{"title":82,"text":83},"Geen automatische beloften uit engineeringdata","Een gesloten GitHub-issue betekent bijvoorbeeld niet automatisch dat een fix al gedeployed of beschikbaar is. Die grens is expliciet opgenomen in de AI-workflow.\n",{"headline":85,"intro":86,"primaryCta":87,"secondaryCta":88},"Twee van de drie AI-antwoorden zijn in één keer goed genoeg om te versturen.","Een taalmodel kan in seconden een vriendelijk antwoord schrijven. Het moeilijke is dat het antwoord ook klopt: met de juiste productkennis, supportregels, actuele klantinformatie en de status van technische problemen. Robo Helma brengt die bronnen samen en maakt een conceptantwoord dat een medewerker controleert voordat het naar de klant gaat.\n","Bekijk hoe Helma werkt","Vertel wat je wilt bouwen","robo-helma",{},{"eyebrow":92,"primary":93},"Passend aanbod",{"key":94,"title":95,"text":96,"price":97,"result":98,"duration":99,"nextStep":100},"build-integrate","Build & Integrate","Heb je zelf een AI-vraagstuk waarbij meerdere kennisbronnen, bestaande systemen en betrouwbare AI samen moeten komen? Dan ontwerpen en bouwen we de benodigde workflow en integraties rondom jouw situatie.\n","Vaste prijs na scope","Productieklare AI geïntegreerd in je bestaande omgeving","Afhankelijk van scope","Eerst bepalen we welke kennis, systemen en controles echt nodig zijn",0,"\u002Fcases\u002Frobo-helma",{"title":104,"intro":105,"points":106},"Bewijs","De betrouwbaarheid komt uit de engineering rondom het model. Robo Helma bewaart per AI-run welke context is gebruikt en meet wat medewerkers uiteindelijk met het gegenereerde antwoord doen.\n",[107,110,113],{"title":108,"text":109},"67% directe AI-acceptance","Twee van de drie gegenereerde antwoorden worden momenteel zonder inhoudelijke aanpassing verstuurd. Nog eens 18% wordt slechts enigszins aangepast.\n",{"title":111,"text":112},"Broninformatie is zichtbaar","In de AI-analyse kan een medewerker zien welke kennisreferenties via File Search gebruikt zijn, inclusief de gebruikte bestanden en beschikbare relevantiescores.\n",{"title":114,"text":115},"Verbetering is onderdeel van het systeem","Reporting vergelijkt het gegenereerde concept met het werkelijk verzonden antwoord en classificeert het als accepted, edited of rejected. Daardoor kunnen we meten of de AI beter wordt en waar verbetering nodig is.\n",{"buyerTriggerKeys":117,"useCaseKeys":119,"offerKeys":125,"solutionKey":89,"capabilityKeys":126},[118],"ai-laten-bouwen",[120,121,122,123,124],"ai-agent-laten-bouwen","interne-ai-assistent-laten-ontwikkelen","eigen-data-en-kennis-gebruiken-met-ai","ai-toevoegen-aan-bestaande-software","tests-evals-monitoring-voor-ai",[94],[127,128,129,130,131,132,133,134,135,136],"ai-engineering","software-engineering","retrieval","vector-search","ai-agents","integrations","human-in-the-loop","evaluation","monitoring","security",{"title":138,"items":139},"Wat levert het op?",[140,143,146],{"title":141,"text":142},"67% kan direct naar de klant","Momenteel wordt 67% van de door Robo Helma gegenereerde supportantwoorden zonder aanpassing verstuurd. De medewerker hoeft het antwoord alleen nog te controleren en te verzenden.\n",{"title":144,"text":145},"Nog eens 18% heeft alleen een aanpassing nodig","Bij 18% is het gegenereerde antwoord grotendeels bruikbaar, maar past een medewerker nog iets aan voordat het wordt verstuurd.\n",{"title":147,"text":148},"De resterende 15% laat zien waar we verder kunnen verbeteren","Ongeveer 15% van de antwoorden wordt volledig aangepast. Omdat we het oorspronkelijke AI-concept en het uiteindelijke antwoord bewaren, kunnen we precies zien waar Helma nog tekortschiet en daarop verder verbeteren.\n",{"title":150,"description":151},"Robo Helma: AI-helpdesk met kennis en integraties | 9to5 software","Case: hoe 9to5 software Robo Helma bouwde, een AI-helpdesk die productdocumentatie, skills, klantdata en GitHub combineert. 67% van de AI-antwoorden wordt momenteel zonder aanpassing verstuurd.\n",{"title":153,"intro":154,"points":155},"Waar zat het echte probleem?","Support automatiseren lijkt op het eerste gezicht een promptprobleem. In de praktijk zit de moeilijkheid ergens anders. Een goed antwoord vraagt om verschillende soorten kennis die elk een andere bron, actualiteit en betrouwbaarheid hebben.\n",[156,159,162],{"title":157,"text":158},"Productkennis verandert continu","FAQ's, handleidingen, policies, known issues en andere documentatie moeten beschikbaar zijn voor de AI zonder alles in één enorme prompt te stoppen of kennis handmatig in code vast te leggen.\n",{"title":160,"text":161},"Niet alle kennis is documentatie","Tone of voice, supportbeleid, escalatieregels en werkwijze zijn instructies. Klantgegevens en actuele incidenten zijn juist live data. Die verschillende soorten context kun je niet betrouwbaar behandelen alsof ze allemaal hetzelfde zijn.\n",{"title":163,"text":164},"Een overtuigend antwoord kan nog steeds fout zijn","Een model kan heel netjes iets verzinnen wat plausibel klinkt. Voor support is dat niet genoeg. De AI moet weten welke bronnen leidend zijn, wanneer informatie ontbreekt en wanneer een mens moet controleren of overnemen.\n","cases\u002Frobo-helma","Robo Helma is een AI-first helpdesk die supportmedewerkers helpt om sneller goede antwoorden te geven. In plaats van alleen een taalmodel op een inbox te zetten, combineren we productdocumentatie, supportregels, klantdata, incidentinformatie en GitHub-status tot één gecontroleerde AI-workflow. Momenteel wordt 67% van de gegenereerde antwoorden zonder aanpassing doorgestuurd naar de klant.\n",{"title":168,"items":169},"Waar is dit relevant?",[170,173,176],{"title":171,"text":172},"Onze supportmedewerkers zoeken steeds dezelfde informatie bij elkaar","Productkennis, klantdata en technische status zitten verspreid over verschillende systemen voordat iemand een goed antwoord kan geven.\n",{"title":174,"text":175},"We willen AI-support, maar geen hallucinerende chatbot","Antwoorden moeten gebaseerd zijn op controleerbare kennis en actuele data, met duidelijke grenzen voor wat de AI wel en niet mag aannemen.\n",{"title":177,"text":178},"We willen weten of de AI daadwerkelijk beter wordt","Niet alleen aantallen gegenereerde antwoorden meten, maar hoeveel concepten zonder wijziging bruikbaar zijn en waar medewerkers nog moeten corrigeren.\n",{"hero":180,"situation":181,"approach":182,"build":183,"proof":184,"teaser":185},"\u002Fmedia\u002Fscreenshots\u002Fhelma-hero.webm","\u002Fmedia\u002Fscreenshots\u002Fhelma-knowledge.webp","ls-workflow-flow","\u002Fmedia\u002Fscreenshots\u002Fhelma-analysis.webp","\u002Fmedia\u002Fscreenshots\u002Fhelma-reporting.webp","\u002Fmedia\u002Fscreenshots\u002Fhelma-teaser.webm","EayLrYtoP47az4m0WOFZVVtJS0h2unCX11bgovcb09w",{"id":188,"title":189,"approach":190,"body":204,"build":208,"card":220,"connections":47,"cta":224,"dataExamples":47,"description":27,"extension":54,"facts":227,"featured":241,"guardrails":47,"hero":242,"integrations":47,"key":247,"meta":248,"navigation":70,"offers":249,"order":258,"path":259,"proof":260,"relations":272,"result":286,"seo":298,"situation":301,"stem":314,"summary":315,"usecases":316,"visuals":328,"__hash__":335},"cases_nl\u002Fcases\u002Fsoftwareplatform-overnemen-en-professionaliseren.md","Van onderhoudsmodus naar weer doorontwikkelen",{"title":9,"steps":191},[192,195,198,201],{"title":193,"text":194},"Eerst het systeem begrijpen","We brachten architectuur, actieve functionaliteit, databases, parsers, integraties en infrastructuur in kaart. Niet met de aanname dat alles vervangen moest worden, maar om te bepalen wat goed was en waar verandering werkelijk nodig was.\n",{"title":196,"text":197},"Feedback en monitoring organiseren","We richtten onder andere coverage-metingen, error monitoring en een acceptatieomgeving in. Daardoor werd sneller zichtbaar wat wijzigingen deden en hoefden problemen niet pas via gebruikers of handmatige controles ontdekt te worden.\n",{"title":199,"text":200},"Gericht refactoren en testen","We verwijderden ongebruikte code, brachten meer structuur en conventies aan en verbeterden onderdelen zodra we ze voldoende begrepen. Tegelijk bouwden we de automatische tests systematisch uit.\n",{"title":202,"text":203},"Daarna weer verder ontwikkelen","Naarmate de codebase beter bekend, getest en beheersbaar werd, konden we opnieuw features ontwikkelen en grotere technische verbeteringen uitvoeren zonder iedere wijziging als een gok te behandelen.\n",{"type":24,"value":205,"toc":206},[],{"title":27,"searchDepth":28,"depth":28,"links":207},[],{"title":31,"intro":209,"points":210},"Het belangrijkste resultaat was een professionele technische basis onder een bestaand product. We maakten de backend explicieter, testbaarder en beter te beheren zonder werkende onderdelen onnodig te vervangen.\n",[211,214,217],{"title":212,"text":213},"Een backend die we daadwerkelijk begrepen","We onderzochten en verbeterden de code totdat duidelijk was welke onderdelen waarvoor verantwoordelijk waren. Oude, dubbele of onduidelijke implementaties konden vervolgens gericht worden verwijderd of verbeterd.\n",{"title":215,"text":216},"Tests als veiligheidsnet","Test coverage werd onderdeel van de normale ontwikkelworkflow. De relevante backendcode groeide van circa 10% coverage bij de start naar 92%, met tests op de onderdelen waar die daadwerkelijk waarde toevoegden.\n",{"title":218,"text":219},"Professionele engineering rond de code","Naast de code zelf verbeterden we ook de omgeving eromheen, waaronder error monitoring, coverage tooling, acceptatie, infrastructuur en het technische beheer dat nodig is om een productieplatform verantwoord verder te ontwikkelen.\n",{"tag":221,"title":189,"summary":222,"metric":223},"Software rescue","Een bestaand softwareplatform was technisch zo moeilijk te veranderen geworden dat reguliere ontwikkeling vrijwel was stilgevallen. We brachten backend, tests, monitoring en ontwikkelproces weer onder controle.","Test coverage van circa 10% naar 92%.",{"title":225,"body":226,"primaryCta":51,"secondaryCta":52,"local":53},"Software waar niemand meer goed aan durft te komen?","Leg ons uit wat er staat, waar de ontwikkeling vastloopt en wat je probeert te bereiken. We kijken naar de techniek en zeggen snel wat verstandig is om te behouden, te repareren of opnieuw neer te zetten.\n",{"title":56,"items":228},[229,232,235,238],{"label":230,"value":231},"Resultaat","Van onderhoudsmodus naar actieve doorontwikkeling",{"label":233,"value":234},"Test coverage","Van circa 10% naar 92%",{"label":236,"value":237},"Opgeleverd","Refactor, tests, monitoring en technische grip",{"label":239,"value":240},"Vervolg","Jarenlange doorontwikkeling op dezelfde basis",false,{"headline":243,"intro":244,"primaryCta":245,"secondaryCta":246},"Een platform dat alleen nog onderhouden kon worden, weer doorontwikkelbaar maken.","De software werkte, maar veranderen was riskant. De vorige ontwikkelpartij deed geen reguliere ontwikkeling meer en greep alleen nog in wanneer iets kapotging. Wij begonnen niet met alles opnieuw bouwen. Eerst moesten we begrijpen wat er stond, wat goed was en waar de echte technische blokkades zaten.\n","Bekijk het resultaat","Leg ons je probleem voor","softwareplatform-overnemen-en-professionaliseren",{},{"eyebrow":92,"primary":250},{"key":251,"title":252,"text":253,"price":254,"result":255,"duration":256,"nextStep":257},"vibe-code-rescue-audit","Vibe Code Rescue Audit","We onderzoeken wat er staat, waar de echte technische risico's zitten en wat behouden, gerepareerd of vervangen moet worden.\n","€2.950 excl. btw","Technische analyse met concreet rescueplan","Vaste scope","Daarna weet je of een Rescue Sprint of grotere aanpak nodig is",1,"\u002Fcases\u002Fsoftwareplatform-overnemen-en-professionaliseren",{"title":104,"intro":261,"points":262},"De vooruitgang was niet alleen zichtbaar in schonere code. We konden hem meten en daarna jarenlang in de praktijk bewijzen door het platform verder uit te bouwen. De oorspronkelijke analyse liet bovendien zien dat niet alles slecht was. Onderdelen van infrastructuur, schaalbaarheid en performance stonden al behoorlijk. Daarom kozen we voor gericht professionaliseren in plaats van automatisch alles opnieuw bouwen.\n",[263,266,269],{"title":264,"text":265},"10% → 92% line coverage","Bij de start had een belangrijk backendonderdeel circa 3.400 regels code en bijna 10% line coverage. Uiteindelijk kwam de relevante backendcode op 92% test coverage.\n",{"title":267,"text":268},"Van break-fix naar jarenlang nieuwe features","Voor de overname was afgesproken dat de vorige ontwikkelpartij alleen nog zou ingrijpen als iets kapotging. Na de professionalisering hebben we het platform jarenlang verder ontwikkeld met nieuwe functionaliteit en technische verbeteringen.\n",{"title":270,"text":271},"Later zelfs eigen machine learning","Een van de latere ontwikkelingen was een zelfgetraind model voor het herkennen van aanbiedingen in PDF-winkelfolders. Een goed voorbeeld van hoeveel technische ruimte er na de overname en professionalisering weer was ontstaan.\n",{"buyerTriggerKeys":273,"useCaseKeys":275,"offerKeys":279,"capabilityKeys":281},[274],"vastgelopen-met-ai",[276,277,278],"ai-project-overnemen-van-andere-leverancier","developmentteam-loopt-vast-met-ai","prototype-naar-onderhoudbaar-softwareproduct",[251,280,94],"rescue-sprint",[128,282,283,135,284,285],"backend-engineering","testing","refactoring","machine-learning",{"title":287,"items":288},"Wat veranderde er?",[289,292,295],{"title":290,"text":291},"Van circa 10% naar 92% test coverage","De belangrijkste backendcode begon met ongeveer 10% line coverage. Tijdens de professionalisering brachten we de testdekking naar 92%. Daardoor konden wijzigingen veel sneller en met aanzienlijk meer zekerheid worden gecontroleerd.\n",{"title":293,"text":294},"Nieuwe ontwikkeling kwam weer op gang","Het platform bleef niet steken in onderhoud. In de jaren daarna ontwikkelden we veel nieuwe functionaliteit en voerden we grotere technische verbeteringen door op dezelfde codebase.\n",{"title":296,"text":297},"De basis werd sterk genoeg voor nieuwe technologie","De technische basis werd stabiel en begrijpelijk genoeg om verder te vernieuwen. Zo trainden we later onder andere een eigen machine-learningmodel om aanbiedingen automatisch te herkennen in PDF's van winkelfolders.\n",{"title":299,"description":300},"Bestaand softwareplatform overnemen en professionaliseren | 9to5 software","Case: 9to5 software nam een vastgelopen softwareplatform over, professionaliseerde de backend en verhoogde de test coverage van circa 10% naar 92%. Daarna werd jarenlang nieuwe functionaliteit gebouwd.\n",{"title":302,"intro":303,"points":304},"Waar liep het vast?","Het platform bestond uit meerdere apps, webomgevingen en een omvangrijke backend. Er zat veel waarde in de bestaande software, maar de technische schuld maakte nieuwe ontwikkeling steeds moeilijker. Voordat we iets veranderden, hebben we daarom eerst de bestaande code en architectuur systematisch onderzocht.\n",[305,308,311],{"title":306,"text":307},"Nieuwe ontwikkeling was praktisch stilgevallen","De vorige ontwikkelpartij deed geen reguliere development meer. Alleen wanneer iets daadwerkelijk kapotging werd nog ingegrepen. Het platform draaide, maar kwam technisch nauwelijks meer vooruit.\n",{"title":309,"text":310},"De backend was moeilijk te doorgronden","Functionaliteit was verdeeld over meerdere Elixir-apps binnen een umbrella-structuur. Namen als old, new, v2 en v3 leefden naast elkaar, documentatie ontbrak op belangrijke plekken en verschillende ontwikkelstijlen en conventies maakten moeilijk zichtbaar welke code nog leidend was.\n",{"title":312,"text":313},"Kritieke code was nauwelijks afgedekt","In een belangrijk backendonderdeel maten we bij de start ongeveer 10% line coverage op circa 3.400 regels code. Andere onderdelen hadden eveneens beperkte of vrijwel geen testdekking. Daardoor kon een wijziging ongemerkt bestaande functionaliteit breken.\n","cases\u002Fsoftwareplatform-overnemen-en-professionaliseren","Een bestaand softwareplatform was technisch zo moeilijk te veranderen geworden dat de vorige ontwikkelpartij alleen nog onderhoud deed. We namen het systeem over, brachten de backend onder controle en professionaliseerden code, tests, monitoring en ontwikkelproces. De test coverage groeide van circa 10% naar 92% en in de jaren daarna konden we het platform weer volop verder ontwikkelen.\n",{"title":317,"items":318},"Herken je dit?",[319,322,325],{"title":320,"text":321},"We hebben software waar niemand meer goed aan durft te komen","Iedere wijziging voelt riskant omdat tests, documentatie of kennis over de code ontbreken.\n",{"title":323,"text":324},"Onze vorige ontwikkelpartij is weg of komt niet meer verder","Het systeem moet worden overgenomen zonder eerst maandenlang alles opnieuw te bouwen.\n",{"title":326,"text":327},"Onderhoud lukt nog, maar nieuwe ontwikkeling niet","Het product draait, maar technische schuld maakt nieuwe features steeds duurder en onvoorspelbaarder.\n",{"hero":329,"situation":330,"approach":331,"build":332,"proof":333,"teaser":334},"sq-tangle-knot","\u002Fmedia\u002Fscreenshots\u002Fsoftware-rescue-situation.webp","ls-rescue-repair","\u002Fmedia\u002Fscreenshots\u002Fsoftware-rescue-build.webp","\u002Fmedia\u002Fscreenshots\u002Fsoftware-rescue-coverage.webp","\u002Fmedia\u002Fscreenshots\u002Fsoftware-rescue-teaser.webp","RiGUxWUmurhhy0XDh57vC6whVEz9LOJAPw9n0-ndLCM",{"id":337,"title":338,"approach":339,"body":354,"build":358,"card":370,"connections":375,"cta":388,"dataExamples":47,"description":27,"extension":54,"facts":391,"featured":241,"guardrails":47,"hero":405,"integrations":47,"key":409,"meta":410,"navigation":70,"offers":411,"order":28,"path":416,"proof":417,"relations":430,"result":437,"seo":449,"situation":452,"stem":465,"summary":466,"usecases":467,"visuals":478,"__hash__":483},"cases_nl\u002Fcases\u002Frobos-ai-agents-die-echt-werk-doen.md","Robo’s: AI-agents die echt werk doen",{"title":340,"steps":341},"Hoe bouwen we de Robo's?",[342,345,348,351],{"title":343,"text":344},"Eén Robo, één duidelijk probleem","We beginnen niet bij het model maar bij de taak. Helma doet support, Mae werkt aan softwareonderhoud, Indie aan incidenten, Mark aan marketing en Nola aan meetings. Daardoor blijft de context klein genoeg om goed te begrijpen en te testen.\n",{"title":346,"text":347},"AI krijgt toegang tot de juiste context","Afhankelijk van de taak gebruiken we onder andere Skills, vector stores, repository snapshots, live API's, historische data, bedrijfsregels en actuele informatie uit gekoppelde systemen.\n",{"title":349,"text":350},"Output wordt onderdeel van de workflow","Een Robo levert meer dan een suggestie. Output kan terechtkomen in een helpdeskticket, GitHub-issue, incidentregistratie, marketingplanning, backlog of notulen met actiepunten.\n",{"title":352,"text":353},"De mens blijft waar die waarde toevoegt","Human-in-the-loop is bij ons een ontwerpkeuze. Helma laat antwoorden controleren, Indie laat een incident eerst aanpassen of bevestigen en Mark heeft reviewmomenten voordat klantgerichte content verdergaat.\n",{"type":24,"value":355,"toc":356},[],{"title":27,"searchDepth":28,"depth":28,"links":357},[],{"title":31,"intro":359,"points":360},"De Robo's zijn losse tools en producten met ieder hun eigen workflow en integraties. Niet iedere Robo heeft daarbij een eigen applicatie nodig. Samen vormen ze ons interne laboratorium voor AI die daadwerkelijk in productie moet functioneren.\n",[361,364,367],{"title":362,"text":363},"Klant en marketing","Robo Helma combineert supportkennis, klantcontext en technische informatie voor klantantwoorden. Robo Mark haalt signalen uit onder andere RSS, Slack en ideeën, maakt content, ondersteunt review en planning, publiceert en gebruikt performance als input voor volgende generaties.\n",{"title":365,"text":366},"Engineering en operations","Robo Mae analyseert op vaste momenten een commit-pinned snapshot van een repository, combineert dat met actuele first-party documentatie en kan gevalideerde onderhoudsissues in GitHub aanmaken. Robo Indie maakt vanuit een Slack-thread een gestructureerd incidentconcept met interne uitleg, klantveilige uitleg en een eventuele workaround. Stanley werkt juist direct vanuit ChatGPT: hij bewaakt onze GitHub-backlog en draait de wekelijkse stand-up, zodat openstaande issues niet ongemerkt blijven liggen.\n",{"title":368,"text":369},"Meetings, media en het Robo-landschap","Robo Nola haalt Google Meet-opnames op en maakt via een eigen Nederlandse ASR-pipeline transcripties, samenvattingen, actiepunten en notulen. Robo Vidar is onze video-generation workspace voor onder andere Seedance en Veo. Robo Dolly houdt het overzicht van actieve Robo's en hun historie bij. Robo Rolf is de rollout-Robo in opbouw; de huidige applicatie bevat bewust alleen de technische foundation totdat de releaseworkflow scherp genoeg is gedefinieerd.\n",{"tag":371,"title":372,"summary":373,"metric":374},"AI agents","Robo's: AI-agents die echt werk doen","Specialistische Robo's voeren concrete taken uit in support, softwareonderhoud, marketing, incidentmanagement, meetings en andere operationele workflows.","AI gekoppeld aan echte kennis, systemen, acties en duidelijke grenzen.",{"title":376,"intro":377,"points":378},"De Robo's staan niet los van elkaar","Naarmate meer processen worden geautomatiseerd, kunnen specialistische agents ook elkaars gecontroleerde output gebruiken. Zo ontstaat een netwerk van kleine systemen met duidelijke verantwoordelijkheden in plaats van één alleswetende superagent.\n",[379,382,385],{"title":380,"text":381},"Indie voedt Helma","Robo Indie is de bron van waarheid voor actuele incidenten en biedt daarvoor een afgeschermde read-only API. Robo Helma kan die informatie gebruiken wanneer een supportantwoord afhangt van een actuele storing.\n",{"title":383,"text":384},"GitHub is voor meerdere agents een werkomgeving","Mae gebruikt GitHub om onderhoudswerk als concrete issues vast te leggen. Stanley gebruikt dezelfde backlog op een andere manier: bewaken wat blijft liggen en periodiek de aandacht terugbrengen naar openstaande werkzaamheden.\n",{"title":386,"text":387},"Dolly houdt het geheel zichtbaar","Robo Dolly geeft intern overzicht over welke Robo's actief zijn en bewaart hun historie. Daarmee blijft ook het groeiende landschap van specialistische agents zelf beheersbaar.\n",{"title":389,"body":390,"primaryCta":51,"secondaryCta":52,"local":53},"Welke terugkerende taak zou bij jullie een Robo verdienen?","Laat zien welk werk nu handmatig tussen mensen en systemen heen en weer gaat. We kijken waar AI daadwerkelijk iets kan overnemen en wat er nodig is om dat betrouwbaar in productie te laten werken.\n",{"title":56,"items":392},[393,396,399,402],{"label":394,"value":395},"Support","67% van Helma's antwoorden direct bruikbaar",{"label":397,"value":398},"Softwareonderhoud","Mae onderzoekt repositories en maakt concrete issues",{"label":400,"value":401},"Marketing","Mark gaat van signaal tot publicatie en feedback",{"label":403,"value":404},"Meetings","Nola maakt Nederlandse transcripties en notulen",{"headline":406,"intro":407,"primaryCta":408,"secondaryCta":88},"AI die onderdeel wordt van het werk, geen chatbot die advies geeft.","Een agent wordt pas interessant als hij verder komt dan tekst genereren. Onze Robo's lezen informatie uit echte systemen, nemen beslissingen binnen een afgebakende taak, maken concrete output en zetten processen verder in beweging. Soms zelfstandig, soms met een mens als controlepunt. Zo bouwen we stap voor stap een team van specialistische AI-tools voor ons eigen werk.\n","Bekijk de Robo's","robos-ai-agents-die-echt-werk-doen",{},{"eyebrow":92,"primary":412},{"key":94,"title":95,"text":413,"price":97,"result":414,"duration":99,"nextStep":415},"We ontwerpen en bouwen een AI-agent rond een concreet proces, inclusief de benodigde kennisbronnen, systeemintegraties, guardrails en human-in-the-loop.\n","Een productieklare AI-workflow die echt onderdeel is van je proces","Eerst bepalen we welke taak de agent precies moet uitvoeren en welke systemen daarvoor nodig zijn","\u002Fcases\u002Frobos-ai-agents-die-echt-werk-doen",{"title":418,"intro":419,"points":420},"Dit zijn geen losse AI-demo's","Achter de Robo's zitten gewone software-engineeringprincipes: authenticatie, autorisatie, queues, retries, structured output, tests, monitoring en expliciete datagrenzen. Het taalmodel is één onderdeel van het systeem, niet het systeem zelf.\n",[421,424,427],{"title":422,"text":423},"Meetbare kwaliteit in plaats van AI-magie","Robo Helma meet bijvoorbeeld wat medewerkers werkelijk met een AI-concept doen. Momenteel wordt 67% direct verstuurd, 18% enigszins aangepast en 15% volledig aangepast. Daarmee kunnen we gericht blijven verbeteren.\n",{"title":425,"text":426},"Autonomie wordt per taak verdiend","Mae mag binnen een vooraf ingestelde maintenancejob automatisch een beperkt aantal streng gevalideerde GitHub-issues publiceren. Indie maakt juist eerst een concept dat een medewerker kan aanpassen, annuleren of bevestigen. De mate van autonomie volgt het risico.\n",{"title":428,"text":429},"Niet iedere agent heeft een eigen applicatie nodig","Sommige Robo's hebben een volledige eigen interface en backend. Andere kunnen veel lichter worden ingezet. Stanley werkt bijvoorbeeld als agent in ChatGPT en gebruikt GitHub als werkomgeving voor backlogbeheer en de wekelijkse stand-up. De vorm volgt het probleem, niet andersom.\n",{"buyerTriggerKeys":431,"useCaseKeys":432,"offerKeys":434,"capabilityKeys":435},[118],[120,121,433,122,123],"processen-automatiseren-met-ai",[94],[127,131,128,132,436,129,133,134,135,136],"workflow-automation",{"title":438,"items":439},"Wat levert die aanpak op?",[440,443,446],{"title":441,"text":442},"AI neemt een afgebakend stuk werk echt over","De Robo's stoppen niet bij analyse. Ze leveren een bruikbaar artefact of brengen een workflow verder: een antwoord, GitHub-issue, incident, publicatie, backlogactie of set notulen.\n",{"title":444,"text":445},"Integraties maken het verschil","De waarde ontstaat doordat AI wordt verbonden met de systemen waarin het werk daadwerkelijk gebeurt. Een concreet voorbeeld is Robo Helma, die actuele incidentinformatie van Robo Indie kan gebruiken bij het beantwoorden van supportvragen.\n",{"title":447,"text":448},"We leren op echte productieproblemen","Omdat we de Robo's zelf gebruiken, komen problemen rond context, permissions, retries, security, evaluatie en human-in-the-loop niet pas bij een klant naar boven. We lossen ze op terwijl het systeem echt wordt gebruikt.\n",{"title":450,"description":451},"AI-agents die echt werk uitvoeren | Robo's van 9to5 software","Case: hoe 9to5 software specialistische AI-agents bouwt voor support, marketing, softwareonderhoud, incidentmanagement en meetings. AI gekoppeld aan echte data, systemen en workflows.\n",{"title":453,"intro":454,"points":455},"Waarom niet gewoon één AI-assistent?","Veel bedrijfsprocessen lijken geschikt voor AI, maar hebben in de praktijk heel verschillende context, rechten, risico's en acties. Een generieke assistent die overal een beetje toegang toe heeft wordt al snel moeilijk te controleren. Daarom kiezen we voor specialistische Robo's met ieder een duidelijk werkgebied.\n",[456,459,462],{"title":457,"text":458},"Het werk zit verspreid over echte systemen","De informatie die een agent nodig heeft zit niet in één prompt. Ze staat in GitHub, Slack, productdocumentatie, mailboxen, klantgegevens, Google Calendar, Meet, Drive, RSS-feeds en andere operationele systemen.\n",{"title":460,"text":461},"Alleen een antwoord genereren lost weinig op","Een onderhoudsagent moet een bruikbaar GitHub-issue kunnen opleveren. Een incidentagent moet informatie omzetten in een beheersbaar incident. Het proces moet daadwerkelijk verdergaan.\n",{"title":463,"text":464},"Iedere taak vraagt om andere grenzen","Soms mag een Robo zelfstandig handelen. Soms moet een medewerker eerst controleren of bevestigen. Die grens ontwerpen we per workflow, in plaats van achteraf te hopen dat het model het juiste doet.\n","cases\u002Frobos-ai-agents-die-echt-werk-doen","Bij 9to5 software bouwen we specialistische Robo's die een concreet stuk werk uitvoeren, geen verzameling chatbots. Support beantwoorden, softwareonderhoud signaleren, incidenten vastleggen, marketingcontent maken, meetings verwerken of een GitHub-backlog bewaken. Iedere Robo combineert AI met echte kennis, systemen, acties en duidelijke grenzen.\n",{"title":168,"items":468},[469,472,475],{"title":470,"text":471},"We willen een AI-agent die echt acties uitvoert","AI die informatie ophaalt, een taak uitvoert en het resultaat terugbrengt in jullie bestaande proces, in plaats van nog een chatvenster.\n",{"title":473,"text":474},"Onze kennis zit verspreid over verschillende systemen","De agent moet documentatie, live data en applicaties combineren zonder alles in één prompt of nieuwe database te kopiëren.\n",{"title":476,"text":477},"We willen automatiseren zonder de controle kwijt te raken","Sommige stappen mogen automatisch, andere hebben menselijke review nodig. We ontwerpen die grenzen expliciet in de workflow.\n",{"hero":479,"situation":480,"approach":481,"build":482,"proof":184,"teaser":479},"\u002Fmedia\u002Fproducts\u002Frobos\u002Fdolly-team.jpg","\u002Fmedia\u002Fproducts\u002Frobos\u002Fdolly-specialists.jpg","ls-agentic-loop","\u002Fmedia\u002Fscreenshots\u002Fnola-meeting-results.webp","NIbvxol4Emkbu8jnLhO3U2OrKPGZTV3FZeniUZlnrEg",{"id":485,"title":486,"approach":487,"body":501,"build":505,"card":517,"connections":47,"cta":521,"dataExamples":47,"description":27,"extension":54,"facts":524,"featured":241,"guardrails":47,"hero":538,"integrations":47,"key":542,"meta":543,"navigation":70,"offers":544,"order":549,"path":550,"proof":551,"relations":564,"result":576,"seo":587,"situation":590,"stem":603,"summary":604,"usecases":605,"visuals":616,"__hash__":623},"cases_nl\u002Fcases\u002Fomgevingsalert-data-bruikbaar-maken.md","OmgevingsAlert: van versnipperde data naar relevante meldingen",{"title":9,"steps":488},[489,492,495,498],{"title":490,"text":491},"Iedere bron betrouwbaar binnenhalen","We bouwden per bron de passende integratie: geplande imports, API-koppelingen, XML-verwerking, RSS en HTML-imports en processen die continu naar live datastromen luisteren. Importwerk draait asynchroon zodat grote of trage bronnen de rest van het product niet blokkeren.\n",{"title":493,"text":494},"Alles vertalen naar één gemeenschappelijk model","Bronrecords houden hun eigen specifieke informatie, maar worden daarna geïndexeerd naar een gemeenschappelijk Feature-model. Daardoor hoeven apps en andere afnemers niet te begrijpen hoe een KNMI-waarschuwing, bekendmaking of OV-bericht oorspronkelijk is aangeleverd.\n",{"title":496,"text":497},"Geografie als onderdeel van de kern","Met PostgreSQL en PostGIS koppelen we punten, gebieden en andere geometrie aan de locaties die gebruikers volgen. Assets kunnen bijvoorbeeld adressen, punten, polygonen of geïmporteerde KML-gebieden zijn.\n",{"title":499,"text":500},"Pas daarna bepalen wat relevant is","Na de geografische selectie passen we filters toe op onder andere categorie, afstand, woorden die moeten voorkomen en woorden die juist uitgesloten moeten worden. Alleen relevante combinaties worden aan de inbox van een gebruiker gekoppeld.\n",{"type":24,"value":502,"toc":503},[],{"title":27,"searchDepth":28,"depth":28,"links":504},[],{"title":31,"intro":506,"points":507},"De kern is een dataplatform dat zeer verschillende bronnen terugbrengt tot één bruikbare stroom van omgevingsinformatie. Daarboven zitten matching, filtering, notificaties en verschillende productinterfaces.\n",[508,511,514],{"title":509,"text":510},"Een brede importlaag","Het platform verwerkt onder andere officiële publicaties, ruimtelijke plannen, politieberichten, KNMI-weerswaarschuwingen, NDW-wegwerkzaamheden, NDOV-verstoringen, lokaal nieuws, aardbevingen en eigen berichten van gemeenten.\n",{"title":512,"text":513},"Eén genormaliseerde Feature-pipeline","Iedere bron wordt vertaald naar gedeelde velden zoals categorie, publicatiedatum, geometrie, broninformatie en de onderdelen die nodig zijn om het bericht in de verschillende producten te tonen. Nieuwe brontypen hoeven daardoor niet opnieuw door alle clients apart te worden geïmplementeerd.\n",{"title":515,"text":516},"Een geografische matching-engine","Nieuwe data wordt gekoppeld aan relevante locaties en objecten. Voor consumenten kan dat een punt met een straal zijn; professionele gebruikers kunnen ook grotere gebieden of eigen geometrie bewaken. Matching voor grotere aantallen assets wordt in batches verwerkt om de achtergrondqueues beheersbaar te houden.\n",{"tag":518,"title":486,"summary":519,"metric":520},"Data platform","Uiteenlopende publieke en live databronnen worden geïmporteerd, genormaliseerd, geografisch gekoppeld en pas daarna relevant gemaakt voor de juiste gebruiker.","Sinds 2012 · van overheids-XML tot live OV-feeds.",{"title":522,"body":523,"primaryCta":51,"secondaryCta":52,"local":53},"Data genoeg, maar nog geen bruikbaar systeem?","Laat ons zien waar de informatie vandaan komt en wat er uiteindelijk mee moet gebeuren. We helpen de datastroom zo neerzetten dat andere software er betrouwbaar op kan bouwen.\n",{"title":56,"items":525},[526,529,532,535],{"label":527,"value":528},"Product","Sinds 2012 in ontwikkeling",{"label":530,"value":531},"Databronnen","Van overheids-XML tot live OV-feeds",{"label":533,"value":534},"Matching","Geografisch en inhoudelijk per locatie",{"label":536,"value":537},"Output","Apps, dashboard, website, push en e-mail",{"headline":539,"intro":540,"primaryCta":541,"secondaryCta":88},"Data verzamelen is makkelijk. Bepalen welk stukje voor wie relevant is, is het echte werk.","OmgevingsAlert begon in 2012 met een eenvoudig idee: kies een locatie en ontvang relevante vergunningen en ruimtelijke ontwikkelingen in de buurt. Inmiddels verwerkt het platform veel meer soorten informatie. Iedere bron heeft zijn eigen formaat, ritme, kwaliteit en geografische logica. De engineering zit vooral in alles wat er moet gebeuren voordat je data kunt tonen.\n","Bekijk hoe de datastroom werkt","omgevingsalert-data-bruikbaar-maken",{},{"eyebrow":92,"primary":545},{"key":94,"title":95,"text":546,"price":97,"result":547,"duration":99,"nextStep":548},"We bouwen de technische laag tussen jullie databronnen en het product dat ermee moet werken: imports, API-koppelingen, normalisatie, processing, matching en betrouwbare integraties.\n","Een productieklare datastroom geïntegreerd in jullie software","Eerst brengen we bronnen, volumes, verwerking en gewenste output in kaart",3,"\u002Fcases\u002Fomgevingsalert-data-bruikbaar-maken",{"title":552,"intro":553,"points":554},"De complexiteit zit onder de motorkap","OmgevingsAlert laat goed zien waarom data-engineering meer is dan een API uitlezen en records opslaan. De waarde ontstaat pas wanneer onbetrouwbare, veranderende en ongelijksoortige input veilig door een complete productieketen kan bewegen.\n",[555,558,561],{"title":556,"text":557},"Batch, realtime en periodiek naast elkaar","De ene bron wordt dagelijks gecontroleerd, politiegegevens iedere tien minuten en OV-berichten komen via een permanent luisterend pub\u002Fsub-proces binnen. De backend moet al die vormen naast elkaar betrouwbaar kunnen verwerken.\n",{"title":559,"text":560},"PostGIS bepaalt wat waar relevant is","Features en assets bevatten echte geometrie. Matching gebruikt ruimtelijke berekeningen, afstandsregels en gebiedsrelaties in plaats van alleen tekstuele plaatsnamen of postcodes.\n",{"title":562,"text":563},"De pipeline eindigt niet bij opslag","Na import volgen normalisatie, matching, filtering, inboxstatus, toegangsregels en notificatie. Push kan direct of gebundeld worden verstuurd en Pro-gebruikers kunnen relevante meldingen via e-maildigest ontvangen.\n",{"buyerTriggerKeys":565,"useCaseKeys":566,"offerKeys":567,"solutionKey":568,"capabilityKeys":569},[118],[122,123],[94],"omgevingsalert",[128,282,570,132,571,572,573,574,575],"data-engineering","geospatial","postgresql","postgis","background-processing","api-engineering",{"title":138,"items":577},[578,581,584],{"title":579,"text":580},"Eén product bovenop totaal verschillende databronnen","Voor de gebruiker voelt een vergunning, een wegafsluiting of een weerswaarschuwing als hetzelfde soort productervaring, terwijl de onderliggende bronnen technisch nauwelijks op elkaar lijken.\n",{"title":582,"text":583},"Van landelijke data naar persoonlijke relevantie","De backend vertaalt grote stromen algemene informatie naar een veel kleinere selectie per locatie. Gebruikers hoeven dus niet zelf overheidssites, nieuwsfeeds en verkeersbronnen af te zoeken.\n",{"title":585,"text":586},"Een fundament waarop we kunnen blijven uitbreiden","Nieuwe categorieën kunnen dezelfde import-, normalisatie-, matching- en notificatie-infrastructuur gebruiken. Op die basis hebben we later ook AI-filters toegevoegd die voor bepaalde workflows inhoudelijk kunnen beoordelen of een melding relevant is.\n",{"title":588,"description":589},"OmgevingsAlert: complexe databronnen samenbrengen | 9to5 software","Case: hoe 9to5 software voor OmgevingsAlert uiteenlopende publieke en live databronnen importeert, normaliseert, geografisch matcht en beschikbaar maakt in apps, dashboards en notificaties.\n",{"title":591,"intro":592,"points":593},"Waar zit de complexiteit?","De gebruiker wil maar één ding weten: wat gebeurt er in mijn omgeving dat voor mij relevant is? Achter die eenvoudige vraag zit een dataplatform waarin informatie uit verschillende organisaties, protocollen en formaten bij elkaar moet komen.\n",[594,597,600],{"title":595,"text":596},"Iedere bron werkt anders","Officiële publicaties komen uit mutation-event XML en metadata, wegwerkzaamheden uit een gzipped DATEX-feed, OV-verstoringen via een continu ZeroMQ pub\u002Fsub-kanaal, weerswaarschuwingen via KNMI open data en lokaal nieuws via RSS, Atom of HTML. Eén generieke importer bestaat dus niet.\n",{"title":598,"text":599},"Brondata zegt nog niet voor wie iets relevant is","Een vergunning, verkeersmaatregel of waarschuwing kan landelijk beschikbaar zijn, maar een gebruiker wil alleen informatie voor zijn eigen huis, buurt, route of beheerd object. Daarvoor moet de data betrouwbare geografische informatie krijgen en vervolgens tegen locaties en gebieden worden gematcht.\n",{"title":601,"text":602},"Dezelfde data moet op meerdere plekken werken","De genormaliseerde informatie wordt gebruikt door de mobiele apps, Mijn OmgevingsAlert, OmgevingsAlert Pro, de publieke website en OverUwBuurt. Daarnaast stuurt dezelfde backend pushnotificaties, e-maildigests en andere productflows aan.\n","cases\u002Fomgevingsalert-data-bruikbaar-maken","OmgevingsAlert brengt uiteenlopende publieke en live databronnen samen in één product. Officiële bekendmakingen, ruimtelijke plannen, politieberichten, weerswaarschuwingen, wegwerkzaamheden, OV-verstoringen, lokaal nieuws en andere bronnen komen allemaal anders binnen. We bouwden de backend die deze data importeert, normaliseert, geografisch koppelt aan locaties en uiteindelijk alleen de relevante informatie bij de juiste gebruiker laat terechtkomen.\n",{"title":168,"items":606},[607,610,613],{"title":608,"text":609},"We hebben veel data, maar krijgen er nog geen bruikbaar product van","De informatie zit in verschillende bronnen, formaten en systemen en moet eerst worden samengebracht voordat gebruikers er iets mee kunnen.\n",{"title":611,"text":612},"Onze data moet gekoppeld worden aan locaties of andere context","Alleen de records opslaan is niet genoeg. Het systeem moet kunnen bepalen welke informatie relevant is voor welke klant, locatie, object of proces.\n",{"title":614,"text":615},"We willen nieuwe bronnen toevoegen zonder het hele product te verbouwen","Een goede normalisatielaag voorkomt dat iedere nieuwe koppeling opnieuw wijzigingen vereist in alle apps, dashboards en andere afnemers.\n",{"hero":617,"situation":618,"approach":619,"build":620,"proof":621,"teaser":622},"\u002Fmedia\u002Fscreenshots\u002Fomgevingsalert-hero.webm","\u002Fmedia\u002Fproducts\u002Fomgevingsalert-sources.webp","ls-route-converge","\u002Fmedia\u002Fscreenshots\u002Fomgevingsalert-map.webp","\u002Fmedia\u002Fscreenshots\u002Fomgevingsalert-notifications.webp","\u002Fmedia\u002Fscreenshots\u002Fomgevingsalert-teaser.webm","lPKoR8AP8x-OOR4bIjCFYpsoKkSwALhH9ij3IXDNHTk",{"id":625,"title":626,"approach":627,"body":641,"build":645,"card":657,"connections":47,"cta":661,"dataExamples":664,"description":27,"extension":54,"facts":677,"featured":241,"guardrails":47,"hero":691,"integrations":47,"key":695,"meta":696,"navigation":70,"offers":697,"order":702,"path":703,"proof":704,"relations":717,"result":730,"seo":741,"situation":744,"stem":757,"summary":758,"usecases":759,"visuals":770,"__hash__":777},"cases_nl\u002Fcases\u002Fnummi-data-driven-product.md","nummi: productontwikkeling sturen met data",{"title":9,"steps":628},[629,632,635,638],{"title":630,"text":631},"Eerst meten waar het echt misgaat","We analyseerden niet alleen totalen, maar de hele gebruikersreis: first open, signup, eerste acties, engagement, D1- en D30-retentie, acquisitiebron, sociale interactie, platform en user value. Daardoor konden we bottlenecks van symptomen onderscheiden.\n",{"title":633,"text":634},"Van analyse naar concrete productkeuze","Uit de retentiedata bleek dat de registration wall veel gebruikers verloor terwijl spelers na signup juist gezond spelgedrag lieten zien. In plaats van eerst meer gameplayfeatures te bouwen, voegden we guest accounts toe zodat nieuwe spelers direct kunnen beginnen.\n",{"title":636,"text":637},"Nieuwe ideeën meetbaar uitrollen","Nieuwe onboarding wordt niet simpelweg voor iedereen aangezet. De apps ondersteunen een control- en treatmentvariant via remote configuration en loggen aparte milestones door de hele onboarding. Zo kunnen we achteraf beoordelen waar gedrag daadwerkelijk verandert.\n",{"title":639,"text":640},"Productdata koppelen aan businessdata","Naast gameplay en retentie kijken we naar subscriptions, advertentie-opbrengsten, acquisitie en attribution. Daardoor kunnen we bijvoorbeeld per platform beoordelen welk verdienmodel en welke productinvestering het meest logisch zijn.\n",{"type":24,"value":642,"toc":643},[],{"title":27,"searchDepth":28,"depth":28,"links":644},[],{"title":31,"intro":646,"points":647},"Data-driven productontwikkeling vraagt meer dan een analytics-script. De meetbaarheid moet door de hele technische architectuur heen zitten, zonder dat het product zelf afhankelijk wordt van één dashboard of tool.\n",[648,651,654],{"title":649,"text":650},"Een complete productiebackend","De Rails-backend beheert accounts, games, moves, vrienden, rankings, ratings, chat, bots, puzzels, subscriptions, notificaties en steeds meer afzonderlijke gebruikersstatistieken. Achtergrondwerk en terugkerende processen draaien via jobqueues.\n",{"title":652,"text":653},"Productanalytics in beide mobiele apps","Firebase Analytics vormt de primaire productanalyticslaag. De apps registreren gebeurtenissen rond onder andere signup, gameplay, uitnodigingen, puzzels, ads, purchases, streaks en onboarding. Daarnaast worden relevante user properties bijgehouden om gedrag tussen groepen te kunnen vergelijken.\n",{"title":655,"text":656},"Experimenten en acquisitie meetbaar gemaakt","Onboarding heeft een eigen meetbare funnel met milestones vanaf exposure en de eerste oefenactie tot guest-accountcreatie, uitnodigingen, practice games en completion. Android gebruikt daarnaast AppsFlyer voor specifieke acquisitie- en purchase-attributie.\n",{"tag":658,"title":626,"summary":659,"metric":660},"Product engineering","Een online multiplayerproduct waarin retentie, onboarding, engagement, acquisitie, advertenties en subscriptions rechtstreeks productkeuzes sturen.","Slechts 54% kwam voorbij signup\u002Flogin. Die analyse leidde tot guest accounts.",{"title":662,"body":663,"primaryCta":51,"secondaryCta":52,"local":53},"Wel veel productdata, maar nog weinig antwoorden?","Laat zien wat je product doet, welke data je al verzamelt en welke beslissingen nu vooral op gevoel worden genomen. We helpen zowel de software als de meetbare productflow goed neerzetten.\n",{"title":665,"intro":666,"points":667},"Meer dan één dashboard","We combineren alleen data die helpt om een productbeslissing te nemen.\n",[668,671,674],{"title":669,"text":670},"Retentie en activatie","We kijken waar gebruikers voor het eerst afhaken, wanneer ze terugkomen en welk gedrag samenhangt met langer gebruik.\n",{"title":672,"text":673},"Engagement en sociale effecten","De analyse liet bijvoorbeeld zien dat 25,3% van gebruikers spellen met vrienden startte en dat actieve chatters gemiddeld bijna dertig berichten verstuurden. Sociale interactie bleek daardoor een interessanter retentiesignaal dan simpelweg meer solo-functionaliteit.\n",{"title":675,"text":676},"Revenue en acquisitie","Ads, subscriptions, attribution en user value worden naast productgedrag gelegd. Zo kun je onderscheiden of groei ontstaat uit meer gebruikers, betere retentie, betere monetisatie of slechts uit duurder ingekochte instroom.\n",{"title":56,"items":678},[679,682,685,688],{"label":680,"value":681},"Grootste gevonden bottleneck","Slechts 54% kwam voorbij signup\u002Flogin",{"label":683,"value":684},"Productbeslissing","Retentiedata leidde tot guest accounts",{"label":686,"value":687},"Experimenten","Onboarding met control\u002Fvariant en eigen funnel",{"label":689,"value":690},"Platform","Backend, iOS, Android, analytics en monetisatie",{"headline":692,"intro":693,"primaryCta":694,"secondaryCta":88},"Meten waar gebruikers afhaken, in plaats van raden wat ze nodig hebben.","Bij een digitaal product kun je eindeloos features bouwen. De moeilijkere vraag is welke verandering daadwerkelijk iets oplevert. Bij nummi combineren we productontwikkeling daarom met analytics, cohortanalyses, experimenten en businessdata. Soms bevestigt de data een idee. Soms laat die juist zien dat we aan het verkeerde probleem wilden werken.\n","Bekijk hoe we met data werken","nummi-data-driven-product",{},{"eyebrow":92,"primary":698},{"key":94,"title":95,"text":699,"price":97,"result":700,"duration":99,"nextStep":701},"We bouwen of professionaliseren een softwareproduct waarin data, productlogica, analytics en bestaande systemen samenkomen. Van backend en integraties tot de meetpunten waarmee je daarna betere productbeslissingen kunt nemen.\n","Productieklare software met een meetbare productflow","Eerst bepalen we welke beslissingen de software en data daadwerkelijk moeten ondersteunen",4,"\u002Fcases\u002Fnummi-data-driven-product",{"title":705,"intro":706,"points":707},"Data verandert de discussie","Het meest leerden we van de aannames die wel of niet klopten. Daardoor wordt productontwikkeling veel concreter.\n",[708,711,714],{"title":709,"text":710},"De registration wall werd zichtbaar","Slechts 54% passeerde signup\u002Flogin. Van de mensen die wel begonnen, bereikte 68% al de eerste belangrijke gameplaydrempel van 30 punten. Het probleem zat dus veel eerder in de funnel dan we met alleen featuregebruik hadden kunnen zien.\n",{"title":712,"text":713},"Niet iedere nieuwe gebruiker is even waardevol","In de retentie-analyse lag D1-retentie van CPC-gebruikers rond 21%, tegenover ongeveer 39% voor organische gebruikers. Dat was een belangrijk signaal om niet simpelweg meer betaalde instroom te kopen zolang de onboarding zelf nog frictie bevatte.\n",{"title":715,"text":716},"Platformdata beïnvloedt het businessmodel","In dezelfde analyse hadden Android en iOS vergelijkbare engagement, maar een duidelijk andere gemeten 120-dagen user value. Dat gaf een concrete aanleiding om monetisatie per platform anders te benaderen: meer advertentie-optimalisatie waar dat werkt en meer aandacht voor subscriptions waar advertentie-inkomsten achterblijven.\n",{"buyerTriggerKeys":718,"useCaseKeys":719,"offerKeys":721,"solutionKey":722,"capabilityKeys":723},[118],[123,122,720],"ai-toevoegen-aan-bestaand-product",[94],"nummi",[128,282,724,570,725,726,727,728,574,729],"product-engineering","analytics","experimentation","mobile-development","subscriptions","production-engineering",{"title":287,"items":731},[732,735,738],{"title":733,"text":734},"Data stuurde ons naar de signup, niet naar nóg een feature","Slechts 54% van nieuwe gebruikers kwam in de analyse voorbij signup en login en ongeveer 44 tot 45% kwam op dag 1 terug. Tegelijk deden gebruikers die wél begonnen gemiddeld al veel acties op hun eerste dag. Dat maakte duidelijk dat de eerste productdrempel belangrijker was dan extra gameplay erachter.\n",{"title":736,"text":737},"Guest accounts kwamen rechtstreeks uit die analyse","Nieuwe spelers kunnen daardoor direct starten zonder eerst een volledig account aan te maken. Na de introductie zagen we al minder afhakers. Deze beslissing begon met gedrag dat we in de data konden aanwijzen, niet met een brainstorm.\n",{"title":739,"text":740},"De volgende onboarding kunnen we daadwerkelijk vergelijken","Inmiddels zit er een uitgebreidere onboarding in het product als experiment. Control en variant blijven per installatie consistent en iedere belangrijke stap heeft eigen analytics. Daardoor kunnen we straks niet alleen zeggen dat een flow 'beter voelt', maar zien of meer gebruikers daadwerkelijk geactiveerd raken.\n",{"title":742,"description":743},"nummi: data-driven softwareproduct bouwen | 9to5 software","Case: hoe 9to5 software nummi bouwt en doorontwikkelt op basis van productdata, retentie, experimenten, analytics en productie-engineering. Van backend en mobiele apps tot dashboards, subscriptions en A\u002FB-tests.\n",{"title":745,"intro":746,"points":747},"Waar zat de uitdaging?","nummi is technisch een uitgebreid product: multiplayer games, vrienden, chat, rankings, bots, puzzels, notificaties, advertenties en subscriptions. Maar meer functionaliteit bouwen betekent niet automatisch dat het product beter wordt. Om gericht te kunnen verbeteren moesten productgedrag, technische events en businessresultaten met elkaar verbonden worden.\n",[748,751,754],{"title":749,"text":750},"Een feature kan logisch voelen en toch weinig opleveren","Leaderboards, badges, streaks, bots, onboarding, advertenties en subscriptions kunnen allemaal interessant klinken. Zonder data weet je alleen niet welke investering het grootste probleem oplost.\n",{"title":752,"text":753},"Het probleem kan ergens anders zitten dan je denkt","Onze retentie-analyse liet bijvoorbeeld zien dat gebruikers die daadwerkelijk begonnen al behoorlijk actief speelden. De grootste uitval vond juist daarvoor plaats: slechts 54% van nieuwe gebruikers kwam voorbij signup en login.\n",{"title":755,"text":756},"Product, techniek en business beïnvloeden elkaar","Een wijziging in onboarding kan retentie beïnvloeden. Acquisitie heeft effect op de kwaliteit van nieuwe gebruikers. Advertentie-opbrengsten verschillen per platform en subscriptions vragen weer om andere productkeuzes. Die beslissingen kun je niet los van elkaar nemen.\n","cases\u002Fnummi-data-driven-product","nummi is een online multiplayerproduct dat we al jaren bouwen en doorontwikkelen. Data gebruiken we om te beslissen wat we bouwen, niet voor rapportage achteraf. Retentie, onboarding, engagement, acquisitie, advertenties, subscriptions en gameplay worden gemeten en gebruikt om productkeuzes te maken. Zo leidde een retentie-analyse bijvoorbeeld direct tot guest accounts en bouwen we nieuwe onboarding als meetbaar experiment in plaats van als grote gok.\n",{"title":168,"items":760},[761,764,767],{"title":762,"text":763},"We bouwen veel features, maar weten niet wat echt verschil maakt","Productontwikkeling heeft een backlog vol ideeën, maar er ontbreekt betrouwbare data om prioriteiten te bepalen.\n",{"title":765,"text":766},"We hebben analytics, maar gebruiken ze vooral voor rapportages","De events bestaan al, maar metrics en productbeslissingen zijn nog niet aan elkaar gekoppeld.\n",{"title":768,"text":769},"We willen experimenteren zonder ons product onnodig complex te maken","Nieuwe flows moeten gecontroleerd uitgerold, gemeten en indien nodig weer teruggedraaid kunnen worden zonder een aparte experimenteerwereld naast het echte product te bouwen.\n",{"hero":771,"situation":772,"approach":773,"build":774,"proof":775,"teaser":776},"\u002Fmedia\u002Fproducts\u002Fnummi-hero.webm","\u002Fmedia\u002Fproducts\u002Fnummi-situation.webp","ls-optimize-flow","\u002Fmedia\u002Fproducts\u002Fnummi-build.webp","\u002Fmedia\u002Fproducts\u002Fnummi-proof.webp","\u002Fmedia\u002Fproducts\u002Fnummi-teaser.webm","ocwQdQyt72k8Wg-74szAMBcgq0CKBLUBXx3RDlND-o8",{"id":779,"title":780,"approach":781,"body":795,"build":799,"card":811,"connections":47,"cta":815,"dataExamples":47,"description":27,"extension":54,"facts":818,"featured":241,"guardrails":47,"hero":831,"integrations":835,"key":848,"meta":849,"navigation":70,"offers":850,"order":855,"path":856,"proof":857,"relations":870,"result":883,"seo":895,"situation":898,"stem":911,"summary":912,"usecases":913,"visuals":924,"__hash__":931},"cases_nl\u002Fcases\u002Fparkmybike-software-en-hardware.md","ParkMyBike: software die ook buiten de browser moet werken",{"title":9,"steps":782},[783,786,789,792],{"title":784,"text":785},"Eén domein voor verschillende hardware","In de backend modelleren we locaties, kluizen, sloten, poorten en IoT-devices los van het specifieke merk. Daardoor kan dezelfde reserverings- en gebruikerslogica boven verschillende technische oplossingen blijven werken.\n",{"title":787,"text":788},"De backend bepaalt wat er moet gebeuren","De mobiele app hoeft niet zelfstandig alle protocollen en slotlogica te kennen. Bij BLE-flows coördineert de backend de sessie en geeft hij opdrachten voor onder andere connect, read, write en disconnect. De telefoon voert het lokale Bluetoothwerk uit en stuurt resultaten terug.\n",{"title":790,"text":791},"Bestaande hardware koppelen waar dat slimmer is","We bouwen niet automatisch onze eigen oplossing voor alles. ParkMyBike integreert onder andere met Particle, EVVA, SAS en iLOQ en we bouwden ook een koppeling waarmee hardware van Epsilon Cities via een berichteninfrastructuur met onze backend communiceert.\n",{"title":793,"text":794},"Eigen hardware bouwen waar dat nodig is","Voor use cases waar bestaande hardware niet goed genoeg aansluit, ontwikkelen we ook eigen BLE-controllerfirmware. Zo kunnen software, protocol en fysieke aansturing als één systeem worden ontworpen in plaats van als losse onderdelen.\n",{"type":24,"value":796,"toc":797},[],{"title":27,"searchDepth":28,"depth":28,"links":798},[],{"title":31,"intro":800,"points":801},"ParkMyBike is een keten van software en hardware die samen een fysieke dienst levert.\n",[802,805,808],{"title":803,"text":804},"Apps die echte sloten bedienen","De iOS- en Android-apps ondersteunen reserveringen, abonnementen en het openen van fietskluizen. Voor BLE maakt de telefoon lokaal verbinding met het apparaat, terwijl de backend de workflow, autorisatie en protocolstappen coördineert.\n",{"title":806,"text":807},"Een backend voor zowel software als fysieke infrastructuur","De Elixir-backend beheert gebruikers, locaties, reserveringen, subscriptions, betalingen, kluizen, sloten, IoT-devices en poorten. Hij verwerkt bovendien realtime updates, hardware-events, onderhoudstaken en integraties met externe systemen.\n",{"title":809,"text":810},"Controller- en fabrikantintegraties","We hebben meerdere hardwarepaden ondersteund, van Particle-devices en BLE-controllers tot externe slotplatforms. Voor Epsilon Cities maakten we bijvoorbeeld tweerichtingscommunicatie waarbij apparaten hun status doorgeven en de backend acties naar specifieke poorten kan sturen.\n",{"tag":812,"title":780,"summary":813,"metric":814},"Software + hardware","Mobiele apps, backend, dashboard, betalingen, BLE, IoT en fysieke sloten vormen samen één production-ready systeem.","2025: 23 nieuwe locaties · 122 parkeerplekken · 900 nieuwe gebruikers.",{"title":816,"body":817,"primaryCta":51,"secondaryCta":52,"local":53},"Moet je software ook iets in de echte wereld laten gebeuren?","Laat zien met welke hardware, leveranciers en bestaande systemen je moet werken. We helpen de complete keten ontwerpen en bouwen, tot en met de lastige stukken tussen API, app en fysiek apparaat.\n",{"title":56,"items":819},[820,822,825,828],{"label":527,"value":821},"App, dashboard, backend én hardware",{"label":823,"value":824},"Hardware","BLE, IoT en verschillende slotsystemen",{"label":826,"value":827},"Uitbreiding in 2025","23 nieuwe locaties en 122 parkeerplekken",{"label":829,"value":830},"Praktijk","900 nieuwe gebruikers in diezelfde uitbreiding",{"headline":832,"intro":833,"primaryCta":834,"secondaryCta":88},"De software is pas klaar als het slot echt opengaat.","Bij veel softwareprojecten eindigt de verantwoordelijkheid bij een API of scherm. Bij ParkMyBike begint daar juist een belangrijk deel van het probleem. Een fietser reserveert een plek in de app, staat vervolgens fysiek voor een kluis en verwacht dat precies het juiste slot opent. Daarvoor moeten app, backend, rechten, reservering, netwerkverbinding, controller en hardware allemaal hetzelfde verhaal vertellen.\n","Bekijk hoe het systeem werkt",{"title":836,"intro":837,"points":838},"Eén platform, meerdere soorten hardware","We proberen de werkelijkheid niet in één technisch model te dwingen. Verschillende installaties vragen soms om verschillende vormen van communicatie, zolang de bovenliggende productflow maar consistent blijft.\n",[839,842,845],{"title":840,"text":841},"Cloud-connected controllers","Particle-hardware kan gebeurtenissen naar de backend sturen en opdrachten vanuit het platform ontvangen. Inkomende events worden eerst duurzaam gequeued voordat de verdere verwerking plaatsvindt.\n",{"title":843,"text":844},"Bluetooth dichtbij de gebruiker","Bij BLE zit de telefoon fysiek dicht bij het slot. De app verzorgt scanning en GATT-communicatie, terwijl de server bepaalt welke acties toegestaan zijn en welke protocolstap volgt.\n",{"title":846,"text":847},"Externe ecosystemen","Voor systemen zoals iLOQ en andere hardwarepartners integreren we met hun eigen toegangstechniek en infrastructuur in plaats van die opnieuw uit te vinden. ParkMyBike blijft daarbij de productlaag voor gebruiker, reservering en beheer.\n","parkmybike-software-en-hardware",{},{"eyebrow":92,"primary":851},{"key":94,"title":95,"text":852,"price":97,"result":853,"duration":99,"nextStep":854},"We bouwen de softwarelaag rond bestaande systemen en hardware, inclusief backend, integraties, apps, protocollen, monitoring en de foutafhandeling die nodig is om het in de praktijk betrouwbaar te laten werken.\n","Productieklare integratie tussen software en de echte wereld","Eerst brengen we systemen, hardware, protocollen en kritieke failure modes in kaart",5,"\u002Fcases\u002Fparkmybike-software-en-hardware",{"title":858,"intro":859,"points":860},"De integratie stopt niet bij een API-call","Het interessante aan ParkMyBike is dat fouten niet abstract blijven. Als een integratie niet klopt, staat iemand voor een kluis die niet opengaat. Daarom zitten betrouwbaarheid, retries, state management en observability in de kern van het product.\n",[861,864,867],{"title":862,"text":863},"Bluetooth met timeouts en retries","De mobiele BLE-flows hebben expliciete timeouts voor onder andere scanning, verbinden en commando's. Bij herstelbare fouten kunnen sessies opnieuw worden opgebouwd, waarbij oude callbacks niet een nieuwe verbinding mogen verstoren.\n",{"title":865,"text":866},"De fysieke handeling is onderdeel van de businessflow","Een succesvolle openactie kan een reservering van 'gereserveerd' naar 'gehuurd' zetten en realtime updates starten. Hardwaregedrag is dus onderdeel van de productlogica zelf en geen losse technische koppeling.\n",{"title":868,"text":869},"Hardware wordt operationeel gemonitord","IoT-devices hebben onder andere online-, offline- en low-battery-statussen. Hardware-events worden verwerkt en acties worden opgeslagen, zodat problemen onderzocht en onderhoud gericht uitgevoerd kunnen worden.\n",{"buyerTriggerKeys":871,"useCaseKeys":872,"offerKeys":876,"solutionKey":877,"capabilityKeys":878},[118],[873,874,875],"ai-koppelen-aan-bestaande-systemen","tools-vervangen-door-maatwerkflow","ai-prototype-naar-productie",[94],"parkmybike",[128,282,727,132,879,880,881,882,729,135],"iot","bluetooth","embedded-software","realtime-systems",{"title":884,"items":885},"Wat levert dat op?",[886,889,892],{"title":887,"text":888},"Dezelfde software kan met verschillende fysieke oplossingen werken","Een provider hoeft niet altijd zijn complete hardwarepark te vervangen om ParkMyBike te gebruiken. Door de hardware achter een duidelijke integratielaag te zetten kunnen verschillende lockers, controllers en toegangstechnieken binnen hetzelfde platform bestaan.\n",{"title":890,"text":891},"Hardwareproblemen worden softwarematig beheersbaar","Status, last-seen informatie, batterijwaarschuwingen, lock events en onderhoudsflows maken zichtbaar wat er buiten gebeurt. Daardoor kan support veel gerichter bepalen of een probleem in account, reservering, app, netwerk, controller of fysiek slot zit.\n",{"title":893,"text":894},"Het systeem werkt op echte locaties","In 2025 breidde ParkMyBike uit met 23 locaties en 122 nieuwe parkeerplekken, onder andere in het Verenigd Koninkrijk en België. In diezelfde periode kwamen er ongeveer 900 nieuwe gebruikers bij. De techniek draait dus in echte fietsparkeerinfrastructuur, niet alleen in een lab.\n",{"title":896,"description":897},"ParkMyBike: software en hardware integreren | 9to5 software","Case: hoe 9to5 software voor ParkMyBike mobiele apps, backend, BLE, IoT, slimme sloten, betalingen en hardware-integraties samenbrengt tot één production-ready platform voor slim fietsparkeren.\n",{"title":899,"intro":900,"points":901},"Waarom is software + hardware lastig?","In de ideale wereld stuurt de app een commando en gaat een slot open. In de echte wereld zijn er Bluetooth-permissies, slechte verbindingen, verschillende controllers, batterijen, externe leveranciers, timeouts, verouderde statusinformatie en gebruikers die letterlijk voor een dichte deur staan.\n",[902,905,908],{"title":903,"text":904},"Niet iedere locatie gebruikt dezelfde hardware","ParkMyBike ondersteunt verschillende typen sloten, controllers en IoT-opstellingen. Sommige sloten worden via een cloudverbinding aangestuurd, andere rechtstreeks via Bluetooth of een externe toegangsoplossing. De software moet die verschillen kunnen opvangen zonder voor iedere installatie een nieuw product te worden.\n",{"title":906,"text":907},"Digitale status en fysieke werkelijkheid kunnen uit elkaar lopen","Dat een backend denkt dat een commando succesvol is verstuurd, betekent nog niet automatisch dat een mechanisch slot daadwerkelijk heeft bewogen. Daarom registreren we acties, hardwarestatus, verbindingen en lock events en behandelen we fouten expliciet door de hele keten.\n",{"title":909,"text":910},"Problemen gebeuren buiten","Slechte dekking, Bluetooth dat uitstaat, een lege batterij, een verkeerde poortconfiguratie of een controller die niet reageert: dit zijn productieproblemen die je niet tegenkomt in een nette lokale developmentomgeving.\n","cases\u002Fparkmybike-software-en-hardware","ParkMyBike is een smart bicycle parking platform waarin mobiele apps, backend, dashboard, betalingen en fysieke sloten één product vormen. Een reservering is pas geslaagd als de fietser daadwerkelijk voor een kluis staat en het juiste slot opengaat. We bouwden daarom niet alleen de software, maar ook de integratielaag naar BLE-controllers, IoT-apparaten, externe slotsystemen en hardware van verschillende fabrikanten.\n",{"title":168,"items":914},[915,918,921],{"title":916,"text":917},"Onze software moet communiceren met fysieke apparaten","Een app of backend moet niet alleen data verwerken, maar ook een apparaat, machine, sensor of toegangsoplossing betrouwbaar bedienen.\n",{"title":919,"text":920},"We hebben bestaande hardware die gekoppeld moet worden","De businesslogica moet bovenop apparatuur van leveranciers kunnen werken zonder het volledige bestaande systeem te vervangen.\n",{"title":922,"text":923},"Een prototype werkt, maar nu moet het buiten betrouwbaar worden","De happy flow werkt al, maar timeouts, slechte verbindingen, stateverschillen, monitoring en onderhoud maken productie veel ingewikkelder dan de demo.\n",{"hero":925,"situation":926,"approach":927,"build":928,"proof":929,"teaser":930},"\u002Fmedia\u002Fproducts\u002Fparkmybike-hero.webm","\u002Fmedia\u002Fproducts\u002Fparkmybike-situation.webp","ls-system-connect","\u002Fmedia\u002Fscreenshots\u002Fparkmybike-build.webp","\u002Fmedia\u002Fscreenshots\u002Fparkmybike-controller.webp","\u002Fmedia\u002Fproducts\u002Fparkmybike-teaser.webm","uKGiTh0jhgi3FmdP12uyo5MV6c0HxZ4z_5nF73AJNKo",{"id":933,"title":934,"body":935,"collection":939,"cta":943,"description":27,"extension":54,"featured":949,"hero":953,"meta":958,"navigation":70,"path":959,"sampler":960,"seo":1020,"stem":1023,"teaserCta":1024,"visuals":1025,"__hash__":1027},"caseOverview_nl\u002Fpages\u002Fcases.md","Cases",{"type":24,"value":936,"toc":937},[],{"title":27,"searchDepth":28,"depth":28,"links":938},[],{"eyebrow":940,"title":941,"intro":942},"Alle case studies","Wat we hebben gebouwd en opgelost.","Elke case begint bij het probleem dat opgelost moest worden. Je ziet de systemen, de technische keuzes en de resultaten.\n",{"title":944,"body":945,"primaryCta":946,"secondaryCta":947,"local":948},"Heb jij iets dat technisch serieus moet gaan werken?","Leg uit wat je wilt bereiken, wat er al staat en waar het ingewikkeld wordt. We vertellen snel of en hoe we kunnen helpen.\n","Bespreek je idee","Hulp met AI?","Delft · Den Haag · Rotterdam · remote waar het past.",{"eyebrow":950,"title":951,"intro":952},"Uitgelicht","Een AI-workflow die in echte support moet kloppen.","Robo Helma laat zien wat er nodig is als AI meer moet doen dan iets moois genereren: betrouwbare output leveren, met echte kennis, echte systemen en menselijke controle.\n",{"eyebrow":954,"headline":955,"lead":956,"primaryCta":957,"secondaryCta":88},"Case studies","Dit hebben we gebouwd.","Van AI-workflows en integraties tot software + hardware en technische rescue. Hieronder staan echte systemen, met de keuzes en resultaten erachter.\n","Bekijk de cases",{},"\u002Fpages\u002Fcases",{"eyebrow":961,"title":962,"intro":963,"clusters":964,"note":1018,"cta":1019},"Herken je iets?","Loop jij tegen iets vergelijkbaars aan?","Van een eerste AI-vraag tot een probleem in productie. Kijk welk vraagstuk het dichtst bij dat van jou komt.\n",[965,983,1000],{"label":966,"title":967,"useCases":968},"Uitzoeken","We moeten eerst weten wat slim is.",[969,972,975,977,980],{"useCaseKey":970,"label":971},"ai-idee-technisch-haalbaar","Is ons AI-idee technisch haalbaar?",{"useCaseKey":973,"label":974},"is-ai-nodig","Is AI eigenlijk nodig voor dit probleem?",{"useCaseKey":433,"label":976},"Welke processen kunnen we automatiseren?",{"useCaseKey":978,"label":979},"interne-ai-assistent-met-eigen-kennis","Kunnen we een assistent maken met onze eigen kennis?",{"useCaseKey":981,"label":982},"ai-betrouwbaar-genoeg","Welke aanpak is betrouwbaar genoeg voor echte gebruikers?",{"label":984,"title":985,"useCases":986},"Bouwen","We weten wat we willen maken.",[987,989,991,994,997],{"useCaseKey":120,"label":988},"We willen een AI-agent laten bouwen.",{"useCaseKey":123,"label":990},"We willen AI toevoegen aan bestaande software.",{"useCaseKey":992,"label":993},"documenten-en-mails-automatisch-verwerken","We willen documenten automatisch verwerken.",{"useCaseKey":995,"label":996},"ai-prototype-laten-bouwen","We willen een werkend AI-prototype.",{"useCaseKey":998,"label":999},"product-goed-opzetten-voor-ai-development","We willen zelf bouwen, maar de fundering eerst goed zetten.",{"label":1001,"title":1002,"useCases":1003},"Vastgelopen","Er staat al iets, maar het werkt niet goed genoeg.",[1004,1006,1009,1012,1015],{"useCaseKey":875,"label":1005},"Ons AI-prototype moet naar productie.",{"useCaseKey":1007,"label":1008},"ai-agent-niet-betrouwbaar","Onze agent werkt niet betrouwbaar genoeg.",{"useCaseKey":1010,"label":1011},"gegenereerde-code-niet-meer-begrijpelijk","Niemand begrijpt de gegenereerde code nog.",{"useCaseKey":1013,"label":1014},"ai-code-breekt-steeds","Iedere wijziging breekt iets anders.",{"useCaseKey":1016,"label":1017},"vibe-code-project-vastgelopen","We hebben onszelf in een hoek gevibecoded.","Staat jouw situatie er niet tussen? Dat zegt waarschijnlijk meer over deze lijst dan over jullie probleem.\n","Bekijk alle use cases",{"title":1021,"description":1022},"Case studies: AI-agents en software | 9to5 software","Wat 9to5 software bouwde: AI-agents, AI-workflows, integraties, software + hardware en technische rescue, met de keuzes en resultaten per case.\n","pages\u002Fcases","Bekijk case",{"hero":1026},"\u002Fmedia\u002Fcases-overview\u002Fhero.webp","_6UQjG_dJAOxtUqnGz1RQPUJ26pAaAynFMHGQ-FA1Do",1792049914207]