Indaver — one of Europe’s larger waste-management and industrial-services companies — had around 1,300 documents scattered across countries and languages, and no real way for people to find the right one. I built them a document portal on TYPO3 that makes every file searchable, filterable and properly tagged — with the tagging handled by AI.
The problem
Roughly 1,300 files — PDFs, Word, Excel, plenty of them scanned — spread over several countries and five languages. Tagging all of that manually, and keeping it tagged as new documents arrive, was never going to happen. Without good metadata, search is useless.
What I built
Two parts, working together. A custom TYPO3 v13 search extension on the front: list and grid views, async filtering by country, language, category, keyword and Indaver location, and a multilingual interface in Dutch, French, English, German and Spanish.
Behind it, a separate Python service reads every new or updated file, extracts the text — with a vision-based fallback for scanned, watermarked PDFs that won’t extract cleanly — and returns the language, country, relevant locations, keywords, a short summary and a confidence score.
AI you can actually trust
- Multi-provider by design — OpenAI, Anthropic and OpenRouter sit behind one interface, switchable per document for the right cost-quality trade-off.
- Conservative confidence gates — when the model is unsure, it drops the guess instead of mislabelling a file. A location is only kept if its name actually appears in the text. A wrong tag is worse than no tag.
- Transparent cost — token usage is logged per document, so classifying 1,300 files is a number you can see, not a surprise.
The stack
- CMS — TYPO3 v13 with a custom search-and-filter extension.
- Classification — Python + FastAPI service, HMAC-signed webhooks, async processing.
- AI — OpenAI, Anthropic and OpenRouter, with a vision fallback for scanned documents.
- Infra — MySQL, Varnish caching, Docker, hosted on Cloudways.
1,300 documents that used to be impossible to find are now one search away — in whatever language you work in.
