Overview
The end client of VoiceAgenten operates large locations nationwide with storage and self-storage space that they rent to private and business customers. The company is growing strongly and regularly opens new locations – and this is exactly where the challenge lay: before a new location can be considered, it must be thoroughly analyzed. What does the competition look like in the surrounding area, and at what prices? How many people live in the catchment area, what is their purchasing power, and what does the age structure look like?
Until now, the team handled this research manually – with expensive specialist tools that cost several thousand euros per year and days of manual work per location. A slow, expensive, and hard-to-scale process that slowed down expansion.
Together with VoiceAgenten, I turned this into a custom application: the user enters an address and a search radius – the app delivers a complete location report within seconds to minutes, including competitors, prices, travel times, demographics, and an AI-powered market assessment. What used to take days is now a single click.
My Role
I was brought in by VoiceAgenten, who held the contract with the end client, as a freelance fullstack developer and implemented the application from concept to production operation – from backend and frontend to AI integration, data pipelines, infrastructure, and deployment.
It all started with a workshop in which we worked with the client to define the requirements and a product vision. From there, we built the product iteratively and closely with the user: first the competitor analysis as the core, then step by step travel times, demographic data, and finally an autonomous deep-research component. This allowed the client to use real value at every stage and actively shape the direction.
Scope
The heart of the system is an AI-powered pipeline that automatically reads competitor websites and uses a language model to extract structured location and pricing data – robust against very different page structures. To make the prices found comparable at all, the application normalizes them to a uniform size (euros per square meter per month, net) and takes into account both weekly and four-week prices as well as VAT.
On this data basis, the actual location report is created. The app geocodes every address, calculates real car travel times between the target location and competitors, and enriches the catchment area with demographic indicators – from population and households to purchasing power and age structure. This is complemented by an AI agent that independently researches additional competitors, price trends, and market insights and backs up its results with sources. Everything flows into an interactive report view with maps and tables and can be exported as a comprehensive Excel file for internal further processing. In the background, a scheduled service keeps the competitor data automatically up to date, and the entire system runs containerized.
Technical Highlights
AI-powered scraping with a strategy pattern. Competitor websites are extremely heterogeneous – each has its own structure. Instead of writing a rigid parser for every site, I combined a flexible strategy pattern (scraping strategy, link filter, and scraper per provider) with an LLM as a universal extractor (via LiteLLM, model-independent). The HTML text is cleaned and converted into structured JSON data, including automatic correction of typical LLM errors and retry logic for failed extractions.
Precise geo analysis. Nearby competitors are determined directly in the database using the Haversine formula; for realistic accessibility, real travel times are calculated via the HERE Matrix Routing API and shown in the report (for example, “25 min”).
Demographics at the push of a button. Via the ArcGIS GeoEnrichment API, the app enriches every location in parallel for six catchment areas (travel time 10/20/30 minutes and radius 5/25/50 kilometers) – with residents, households, purchasing power (total, per capita, and as an index compared with the national average) and a population structure broken down by age group.
Autonomous deep-research agent. A background component based on Google Gemini Deep Research independently researches the market environment: previously unknown competitors, estimated prices, price trends, and a management summary, each with source references. The runs happen asynchronously with status tracking, so reports are available immediately and the deep analysis can be supplemented later.
Solid fullstack foundation. The backend is built on FastAPI, SQLAlchemy 2.0, and PostgreSQL (including Alembic migrations); the frontend on React 19, Vite, Tailwind CSS 4, and interactive Leaflet maps. A separate APScheduler service keeps competitor data automatically up to date without affecting API performance, and the results can be exported as a multi-sheet Excel file (competitors, market analysis, demographics, and maps). Deployment is fully handled via Docker.
Result & Impact
A location analysis that used to mean days of manual work is now created in seconds to a few minutes. At the same time, expensive external data-tool subscriptions worth several thousand euros per year could be replaced because the research now runs in a custom solution. Above all, however, the report bundles more information than the previous manual process – competition, prices, accessibility, demographics, and AI market analysis in one place – and makes location decisions more well-founded, more comparable, and repeatable at scale. The client is thrilled, not only because of the speed, but because the entire decision-making basis has noticeably improved.