Unblocking a Revenue Stream at Check24
No one likes overpaying—but many do, simply because they don’t have time to research better options. Even the practical German customer isn’t immune.
Check24, Germany’s leading price comparison portal, saw an opportunity: automate that research and generate revenue in the process.

“The application was built by scientists, not developers. It failed because of the clunky architecture.”
The system, built by scientists not engineers, lacked technical robustness. It became so unstable that it had to be restarted weekly due to memory issues. Many transactions remained uncategorized, missing the point entirely.
We started by sitting with the client’s data scientists to study the problem. Once we discovered what the software did and where it failed, our team dove in to see how it worked.
At first glance, everything looked fine—Check24’s Python (3.7/3.8) app ran on internal servers with no cloud complexity. But digging deeper, we found Django and Celery were replicating the entire application in the background for task handling. And that application was a heavy, inefficient monolith.

Breaking the Monolith.
We saw the need for a bigger shift: breaking down the monolith into microservices.
We started with the most resource-intensive part, turning it into a scalable microservice. Instead of running four full monolith instances, we could now scale just the heavy part—eight instances if needed.
The result, a three-layered setup: FastAPI ran the ML algorithms, while Golang and Spring Boot services connected the logic to Check24’s banking backend.
This modular setup isolated the memory-heavy processes and stabilized performance. We implemented pytest-based testing and built a manual review UI so data scientists could validate transaction categorization and contract detection directly.

The system decoded transactions.
IBANs, amounts, and transaction notes reveal what each payment is for.
When only text notes offered clues, NLP extracted meaning from these cryptic snippets. A decision tree made the final call: transparent and traceable, just as Check24 required. No black-box AI.

Users passively discovered better deals: Check24 generated referral revenue.
We delivered on time and met all project goals. Over 18 months, our three-person team optimized the system, trained the data science team, and ensured a smooth handover.
The new architecture eliminated memory issues and fostered better engineering practices. We also made the app BaFin-compliant.
When regulations changed, Check24 launched C24 Bank—using our system as a core service. Today, it processes millions of transactions weekly across multiple banks.

So, what did we walk away with?
We got deep into the weeds of Python’s memory management, garbage collection, and the nitty-gritty of Celery. We learned how to tame messy monoliths and scale critical components without breaking things.
And a huge bonus: we picked up solid strategies for helping data scientists level up their engineering skills—bridging the gap between research code and production-grade systems.