# Jaraco Bills -- Een AI-gegenereerd factuurbeheersysteem

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.