If you've ever rented an apartment in Germany, you know about Nebenkosten. These are the "additional costs" on top of your base rent—heating, water, building insurance, garbage collection, and about twenty other things your landlord charges you for.
Every year, you receive a Nebenkostenabrechnung: a multi-page document breaking down exactly what you're being charged. And here's the thing: landlords get these wrong. A lot. Studies suggest that up to 50% of utility bills contain errors, usually in the landlord's favor.
Checking these documents is tedious, technical, and most people don't bother. Which is exactly why I built a tool to do it automatically.
The problem
Last month, our annual Nebenkostenabrechnung arrived. It was 8 pages of dense numbers, allocation keys, and legal citations. I had to pay an additional €347 on top of our monthly advance payments.
Something about it felt off. But to actually verify if the charges were correct, I would need to:
- Understand what each line item means
- Know the legal limits for each cost category
- Check if the allocation methods are correct
- Verify that the square meter calculations match our contract
- Compare against reference values for our region
This is hours of work, requiring specialized knowledge most tenants don't have. No wonder people just pay whatever the landlord asks.
The solution
NebenkostenPro is a web app that analyzes your Nebenkostenabrechnung using AI. You upload the document, the app extracts the relevant information, checks it against legal requirements and regional reference values, and tells you if something looks wrong.
The technical implementation is straightforward: PDF upload, OCR with Tesseract, text extraction, analysis with Claude, structured output. The hard part was building the domain knowledge into the system—what are the legal limits for administrative costs? What's a reasonable price per cubic meter of water in Berlin? When can landlords use which allocation keys?
German rental law is surprisingly complex. There's the BGB (civil code), the Betriebskostenverordnung (utility cost regulation), various court decisions, and regional differences in acceptable practices. I spent more time reading legal documents than writing code.
What it actually checks
Cost limits: Some costs are capped by law. Administrative costs, for example, can't exceed certain percentages. If your landlord is charging more, that's contestable.
Allocation keys: Costs can be distributed by square meters, by number of people, by consumption, or evenly across all units. The choice matters, and some costs have legal requirements about which method must be used.
Reference values: Heating costs in Munich are different from heating costs in rural Brandenburg. The app compares your costs against regional averages and flags significant deviations.
Formal requirements: The bill must arrive within certain deadlines, contain specific information, and follow a defined structure. Missing any of these can make the entire bill invalid.
Double counting: Sometimes landlords accidentally (or "accidentally") charge for the same thing twice under different names. The app looks for suspicious overlaps.
The business model
The basic analysis is free—you upload your document, get a quick overview of potential issues. If you want a detailed report with specific recommendations and template letters to send your landlord, that's a paid feature.
Why freemium? Because I want as many people as possible to at least check their bills. The detailed analysis is where the real value is, but even the free tier might save someone from paying a few hundred euros they don't owe.
There's also a referral component: if the tool saves you money and you want to support it, you can recommend it to friends. Each referral extends your premium access. This creates a nice flywheel—people who save money are happy to tell others.
The results
Remember my €347 bill? NebenkostenPro found two issues: the heating costs were allocated incorrectly (should have been by consumption, was by square meters), and the administrative costs exceeded legal limits.
I sent a letter to my landlord with the specific objections. Three weeks later, I got a revised bill. The new additional payment: €127. That's €220 saved by spending five minutes with the tool.
Since launching, the tool has analyzed several hundred bills. The average potential savings found is around €180. Not everyone will actually dispute their bill or recover all of that money, but even helping a fraction of users save money feels worthwhile.
What I learned
Domain expertise is the moat. The AI part is table stakes—everyone has access to the same models. The value is in understanding German rental law deeply enough to ask the right questions and interpret the results correctly.
Bureaucracy is a market. Germans deal with a lot of paperwork. Tax returns, insurance claims, utility bills, government forms. Each of these is a potential product—a tool that translates complexity into actionable recommendations.
Trust is everything. People are uploading sensitive financial documents. The privacy policy had to be rock-solid, the data handling bulletproof. I spent significant time on security and compliance, not because regulators required it, but because users need to trust the tool.
AI is great at structured analysis. The documents follow a predictable format, the rules are well-defined, and the task is essentially "compare these numbers against these rules." This is exactly the kind of work LLMs excel at—much more reliable than creative tasks.
What's next
The current version handles the annual Nebenkostenabrechnung. But there's more: Heizkostenabrechnung (heating bills), Mieterhöhungen (rent increases), Kündigungen (terminations). Each of these has its own rules, its own gotchas, its own opportunities for landlords to overcharge.
I'm also thinking about a "Nebenkosten-Simulator"—before you sign a lease, upload the expected costs and see if they're reasonable compared to similar apartments. Preventive protection instead of after-the-fact detection.
For now, though, I'm focused on making the core utility bill checker as good as possible. If you're renting in Germany and you've ever paid your Nebenkostenabrechnung without checking it, go upload it. You might be surprised what you find.