In recent weeks, we developed an exciting prototype with AI assistance: Jaraco Bills. Our goal was to improve and redesign one of our business processes using modern prompt-driven development and AI technologies.
From Idea to Application -- With Prompt Engineering
We started with a specific challenge: We needed an e-invoicing tool that works simply for us -- without unnecessary complexity, but with the necessary features to make our invoice data analyzable with AI. However, what we found was either too bloated, too expensive, or so minimalistic that it didn't meet our requirements.
So we made a decision: We would build our own tool. With the help of GenAI.
Thus, Jaraco Bills was born -- an AI-generated frontend and backend that allowed us to evaluate the new tools and possibilities offered by GenAI. The project demonstrates how modern prompt-driven development and AI technologies can together create a practical system.
The frontend was developed with bold.new -- exclusively through prompt engineering. In designing the UI, our focus was on supporting our own workflow. We wanted software that ideally reflects our process and is easy for our employees to use. Another goal was to make invoice data analyzable with AI -- for this, a chatbot was integrated that can communicate with a self-hosted LLM. Of course, the application should be modern and work reliably and user-friendly on as many devices as possible.
The backend was created with the help of Claude Code (Anthropic) based on a Spring Boot Kotlin backend template that contains our code guidelines and architectural specifications.
What We Learned
The Importance of a Good Base Project
The base project is crucial. It not only provides the technical framework (e.g., logging, error handling, structure, code-first), but also the context in which the AI can work. Using a minimalistic, well-documented base project has the advantage that the generated service aligns with existing services that contain code guidelines and best practices. This makes it easier for developers to understand and further develop the generated solution.
Code Review & Git Synchronization
AI-generated code also needs reviews -- not just for syntax, but also for architecture, security, and maintainability. Using Git allows us to cleanly track the AI's changes and manually correct or improve them.
Prompt Engineering with Care
A recurring pain point: context size. Especially with extensive code, prompts must be designed to remain token-efficient. This means: relevant imports, minimal but understandable descriptions, focus on individual functions.
In particular, refactoring generated code often reached the limits of bold.new. For example, renaming variables was often not performed correctly. This is particularly problematic when using TypeScript and JSON, as such errors often only become apparent during testing or runtime.
Meaningful Tests
Good code is only half the battle -- we also need meaningful tests. The question arises: How do you automatically test AI-generated code? Here, too, the right setup is crucial: realistic test data, clear expectations, and a focus on central logic paths.
Next Steps
- Evaluate AI-assisted testing -- Can Claude & Co. also support us in test generation? What other tools are available, and how do we integrate them meaningfully into the development process with GenAI?
- Refine the base project -- The more robust the template, the better the results. Can better results be achieved through hidden prompts?
- Build deployment pipelines -- From generation to rollout: automated and traceable. For this, we are evaluating, among other things: separate DevOps repo vs. K8s templates in the project, as well as Helm or Kustomize?
- Improve context handling -- e.g., through code splitting or RAG (Retrieval-Augmented Generation), so that large projects also fit into AI context windows.
- Add missing functionality -- such as the integration of Keycloak for role-based authentication and the provision of an MCP server to connect the invoicing functionality and provide structured data for simple interaction via the LLM.
Conclusion & Call to Action
Jaraco Bills is more than just a showcase for us. It is practical proof that prompt-driven development, AI, and DevOps can work successfully together.
We are at the beginning of an exciting development! If you are interested in adapting software to your processes -- instead of adapting your processes to the software:
Contact us for an individual, free initial consultation -- or test Jaraco Bills yourself! Inquiries to info@jaraco.de.