Raiffeisenbank Ships a Kotlin RAG Assistant With No Python and No New Hires

Raiffeisenbank's team has rolled out an AI assistant for internal users, including product owners, tech leads and CTOs. They built it on Kotlin and Spring Boot, without Python. The problem was information scattered across Excel spreadsheets, emails and notes. RAG pulled the answers into one place. The unexpected takeaway: the assistant's quality depends directly on the quality of the documentation. The team had to clean that up first.

AI-processed from Habr AI; edited by Hamidun News
Raiffeisenbank Ships a Kotlin RAG Assistant With No Python and No New Hires
Source: Habr AI. Collage: Hamidun News.
Listen to article
Article Fact Sheet & Key Figures
ParameterDetails
Primary sourceHabr AI ↗
Editor-in-Chief
Key metric #1Maintenance and scalability stay within the existing team
Key metric #2No need to hire Python developers or retrain current ones
Key metric #3Spring Boot provides ready-made infrastructure: security, logging, deployment

Raiffeisenbank's team built a RAG assistant on Kotlin and Spring Boot without writing a single line of Python. Their experience shows that a JVM stack handles AI workloads no worse than a Python stack, provided the team already works in it and doesn't want to take on new skill sets.

Where the problem came from

A large bank's internal systems are layers of documents, spreadsheets and informal agreements that aren't collected in any single place. Product owners, tech leads, CTOs, B-1 level managers and cost-management staff all spend time not on the actual work in the system but on hunting for the information they need: Excel files, emails, local notes, calls to colleagues. For experienced employees, this is just friction. For new hires, it's a real barrier.

The idea behind the AI assistant is simple: gather the answers in one place and serve them up in plain language. The point isn't an interface for its own sake but real savings of a few minutes on every work query. New employees feel the pain most acutely, since they don't yet have informal channels or someone they can ask without a lot of explaining.

Why JVM, not Python

Python is the de facto standard for AI development. LangChain, LlamaIndex, HuggingFace Transformers: the entire mature AI ecosystem grew up on Python and works best there. It would seem the logical choice for an AI project.

But the bank's product team lives on the JVM: Kotlin, Java, Spring Boot. Switching to Python would have meant bringing in new specialists, building a new stack around a single product, creating new areas of responsibility, and taking on extra maintenance risk. The team chose differently and stayed in a familiar environment. It was a deliberate decision, not inertia.

The key arguments for the JVM:

  • Maintenance and scalability stay within the existing team
  • No need to hire Python developers or retrain current ones
  • Spring Boot provides ready-made infrastructure: security, logging, deployment
  • The LLM is connected via API, so the language model doesn't require Python on the server
  • The JVM ecosystem has working libraries for embeddings and vector stores

The result: a full-fledged RAG pipeline in Kotlin, with no need to bring in new skill sets for a single internal tool.

Documentation as a hidden problem

One of the project's key lessons: RAG works exactly as well as its source data. When the assistant started giving inaccurate or contradictory answers, the team found the cause wasn't the model or the pipeline architecture. The cause was the documents themselves.

Scattered Excel spreadsheets with different versions of the same data, outdated instructions nobody had updated in years, duplicate records from different sources: all of it became visible as soon as the AI started relying on them. The project gave the team a reason to clean up knowledge that had previously just piled up without structure or periodic cleanup.

In effect, the AI assistant became a documentation audit tool, even though nobody originally planned it that way. Part of the effort went not into development but into getting the sources in order. This is a non-obvious but practically unavoidable part of any RAG deployment.

What this means

JVM teams don't have to switch to Python for AI. If the expertise and infrastructure are already in place, they can be used directly. A RAG pipeline on Kotlin and Spring Boot comes together without fundamental losses in functionality, and with full control inside a familiar stack.

For banks and fintech companies, where the JVM is the de facto standard, Raiffeisenbank's experience is an important precedent: AI tasks can be solved without changing tools.

Story

Key Questions Answered

Where the problem came from?

A large bank's internal systems are layers of documents, spreadsheets and informal agreements that aren't collected in any single place. Product owners, tech leads, CTOs, B-1 level managers and cost-management staff all spend time not on the actual work in the system but on hunting for the information they need: Excel files, emails, local notes, calls to colleagues. For experienced employees, this is just friction. For new hires, it's a real barrier. The idea behind the AI assistant is simple: gather the answers in one place and serve them up in plain language. The point is

Why JVM, not Python?

Python is the de facto standard for AI development. LangChain, LlamaIndex, HuggingFace Transformers: the entire mature AI ecosystem grew up on Python and works best there. It would seem the logical choice for an AI project. But the bank's product team lives on the JVM: Kotlin, Java, Spring Boot. Switching to Python would have meant bringing in new specialists, building a new stack around a single product, creating new areas of responsibility, and taking on extra maintenance risk. The team chose differently and stayed in a familiar environment. It was a deliberate decision,

What are the key details on Documentation as a hidden problem?

One of the project's key lessons: RAG works exactly as well as its source data. When the assistant started giving inaccurate or contradictory answers, the team found the cause wasn't the model or the pipeline architecture. The cause was the documents themselves. Scattered Excel spreadsheets with different versions of the same data, outdated instructions nobody had updated in years, duplicate records from different sources: all of it became visible as soon as the AI started relying on them. The project gave the team a reason to clean up knowledge that had previously just pil

ZK
Zhemal Khamidun — CPO at Alpina Digital, product manager of AlpinaGPT. Building AI products since 2019. Hamidun News is a pet project that grew into a production aggregator with 6,000+ readers.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
What do you think?
Loading comments…