In de afgelopen weken hebben we een spannend prototype ontwikkeld met behulp van AI: Jaraco Bills. Ons doel was om een van onze bedrijfsprocessen te verbeteren en opnieuw vorm te geven met moderne prompt-gedreven ontwikkeling en AI-technologieën.
Van idee tot applicatie -- Met prompt engineering
We begonnen met een heel concrete uitdaging: we zochten een tool voor e-facturatie die eenvoudig voor ons werkt -- zonder veel poespas, maar wel met de nodige functies om onze factuurgegevens analyseerbaar te maken met AI. Maar wat we vonden was ofwel te complex, te duur, of zo minimalistisch dat het niet aan onze eisen voldeed.
Dus namen we een beslissing: We bouwen zelf een tool. Met de hulp van GenAI.
Zo ontstond Jaraco Bills -- een AI-gegenereerd frontend en backend waarmee we de nieuwe tools en mogelijkheden die GenAI biedt konden evalueren. Het project toont aan hoe moderne prompt-gedreven ontwikkeling en AI-technologieën samen een praktisch systeem kunnen creëren.
Het frontend werd ontwikkeld met bold.new -- uitsluitend via prompt engineering. Bij het ontwerpen van de UI stond voor ons de ondersteuning van onze eigen werkwijze voorop. We wilden software die ons proces ideaal weerspiegelt en gemakkelijk te gebruiken is voor onze medewerkers. Een ander doel was om factuurgegevens analyseerbaar te maken met AI -- hiervoor werd een chatbot geïntegreerd die kan communiceren met een self-hosted LLM. Uiteraard moest de applicatie modern zijn en betrouwbaar en gebruiksvriendelijk werken op zoveel mogelijk apparaten.
Het backend werd gemaakt met behulp van Claude Code (Anthropic) op basis van een Spring Boot Kotlin backend-sjabloon dat onze code-richtlijnen en architectuurspecificaties bevat.
Wat we hebben geleerd
Het belang van een goed basispject
Het basispject is cruciaal. Het biedt niet alleen het technische raamwerk (bijv. logging, error handling, structuur, code first), maar ook de context waarin de AI kan werken. Het gebruik van een minimalistisch, goed gedocumenteerd basispject heeft als voordeel dat de gegenereerde service aansluit bij bestaande services die de code-richtlijnen en best practices bevatten. Dit maakt het voor ontwikkelaars gemakkelijker om de gegenereerde oplossing te begrijpen en later verder te ontwikkelen.
Code review & Git-synchronisatie
Ook AI-code heeft reviews nodig -- niet alleen voor de syntax, maar ook voor architectuur, veiligheid en onderhoudbaarheid. Het gebruik van Git stelt ons in staat om de wijzigingen van de AI netjes te volgen en handmatig te corrigeren of te verbeteren.
Prompt engineering met zorg
Een terugkerend pijnpunt: contextgrootte. Met name bij uitgebreide code moeten prompts zo worden ontworpen dat ze token-efficiënt blijven. Dat betekent: relevante imports, minimale maar begrijpelijke beschrijvingen, focus op individuele functies.
Met name bij het refactoren van gegenereerde code bereikte bold.new vaak zijn grenzen. Zo werd het hernoemen van variabelen bijvoorbeeld meerdere keren niet correct uitgevoerd. Dit is vooral problematisch bij het gebruik van TypeScript en JSON, omdat dergelijke fouten vaak pas tijdens tests of runtime aan het licht komen.
Zinvolle tests
Goede code is maar de helft van het werk -- we hebben ook zinvolle tests nodig. De vraag rijst: Hoe test je AI-gegenereerde code automatisch? Ook hier is de juiste setup cruciaal: realistische testdata, duidelijke verwachtingen en een focus op de centrale logische paden.
Volgende stappen
- AI-ondersteunde testing evalueren -- Kunnen Claude & Co. ons ook ondersteunen bij testgeneratie? Welke andere tools zijn beschikbaar en hoe integreren we ze zinvol in het ontwikkelproces met GenAI?
- Het basispject verder verfijnen -- Hoe robuuster de sjabloon, hoe beter de resultaten. Kunnen betere resultaten worden bereikt door hidden prompts?
- Deployment-pipelines opbouwen -- Van generatie tot uitrol: geautomatiseerd en traceerbaar. Hiervoor evalueren we onder andere: aparte DevOps-repo vs. K8s-sjablonen in het project, en Helm of Kustomize?
- Contextbeheer verbeteren -- bijv. door code-splitting of RAG (Retrieval-Augmented Generation), zodat ook grote projecten in de AI-contextvensters passen.
- Ontbrekende functionaliteit toevoegen -- zoals de integratie van Keycloak voor rolgebaseerde authenticatie en het aanbieden van een MCP-server voor het aansluiten van de factureringsfunctionaliteit en het gestructureerd aanbieden van relevante data voor eenvoudige interactie via de LLM.
Conclusie & Call to Action
Jaraco Bills is voor ons meer dan alleen een showcase. Het is een praktisch bewijs dat prompt-gedreven ontwikkeling, AI en DevOps succesvol samen kunnen werken.
We staan aan het begin van een spannende ontwikkeling! Als u geïnteresseerd bent in het aanpassen van software aan uw processen -- in plaats van uw processen aan de software:
Neem contact met ons op voor een individueel, gratis eerste consult -- of test Jaraco Bills zelf! Vragen hierover naar info@jaraco.de.