AI-powered civic reporting app for abandoned vehicles with expired inspections in Varna, Bulgaria.
I built Signalo, an AI-powered civic reporting app for abandoned vehicles in Varna, Bulgaria, in 2 weeks using AI-assisted coding. The app automates license plate recognition, government database verification, and municipal report generation — reducing a 15–20 minute manual reporting process to a single photo.
There are abandoned cars everywhere in Varna — vehicles with expired technical inspections sitting on public streets for months, sometimes years. Most people don't even know they can report them, or what the rules are.
Those who do know face a confusing process: figure out if the inspection is actually expired, write a formal report, find the right email address, attach photos, include location details. It's enough friction that most people just walk past.
I built Signalo to make civic reporting as easy as taking a photo. The app handles everything else — identifying the vehicle, verifying its inspection status against the government database, generating a properly formatted report, and sending it directly to the responsible municipal department.
Reporting an abandoned vehicle in Bulgaria requires knowing several things most citizens don't:
Even for someone who knows all this, the process takes 15–20 minutes per vehicle. For a street with multiple abandoned cars, it's impractical.
The result: abandoned vehicles accumulate, neighborhoods deteriorate, and a solvable problem persists because the reporting friction is too high.
Signalo reduces the entire reporting process to a few taps:
The user's only job is to take a photo and confirm. Everything else — plate reading, inspection verification, report formatting, location tagging — is automated.
| Metric | Before (Manual) | After (Signalo) |
|---|---|---|
| Time per report | 15–20 minutes | Under 30 seconds |
| Required knowledge | Legal framework, government website, municipal contacts | None — app handles everything |
| Plate verification | Manual — government website + captcha | Automated — AI + browser automation |
| Report formatting | Manual — write email, attach photos, include coordinates | Auto-generated — plates, GPS, legal citation, photos |
| Multi-vehicle reports | 15–20 min per vehicle — impractical for streets with many | Scan all vehicles, one combined report |
| Borderline cases | Forgotten — no tracking for almost-expired vehicles | Watchlist with push notification at 3-month threshold |
I built the entire app solo in 2 weeks using AI-assisted coding. I had never touched React Native before — I used AI tools to learn the framework, design the architecture, and write the code as I went.
Key architectural decisions:
Signalo is currently in closed testing on Google Play. The app is fully functional — plate recognition, inspection verification, report generation, and watchlist notifications all work end-to-end.
Reports are sent to Отдел Репатриране Варна (Varna Repatriation Department), the municipal body responsible for handling abandoned vehicles.
The goal is to launch publicly and expand to other Bulgarian cities. The underlying system works for any municipality — only the recipient email address changes.
This project proved something I already believed: you don't need to be a mobile developer to ship a mobile app. I had never touched React Native before. Two weeks later, I had a working product with AI vision, browser automation, push notifications, and offline support — built entirely with AI-assisted coding.
The hardest part wasn't the technology. It was understanding the legal framework, the government verification process, and the municipal reporting structure well enough to automate it.
The AI wrote the code. I designed the system.
Signalo uses a multi-provider AI cascade. The primary provider is Google Gemini Flash for vision-based plate reading. If rate-limited, it falls back to Groq Llama-4. Google Vision API serves as a third fallback for basic OCR. The system identifies the plate number, vehicle brand, model, and color from a single photo.
The backend uses Playwright browser automation to query the Bulgarian Road Transport Agency website. It enters the plate number, solves the captcha using Google Vision API, and parses the inspection status. Up to 8 concurrent Playwright instances handle parallel verification requests. Valid inspection results are cached in Redis until their expiry date.
No. Signalo is designed with privacy by default. The backend is stateless — no user accounts, no signal database, no tracking. Reports go directly from the user's email client to the municipality. The app stores nothing on any server.
Under Bulgarian law (Наредба № 1), vehicles with inspections expired over 3 months are classified as end-of-life vehicles. Vehicles expired under 3 months don't qualify for reporting. Signalo adds these borderline cases to a watchlist and sends a push notification when they cross the 3-month threshold, so the user can report them at the right time.
Signalo is currently in closed testing on Google Play. The app is fully functional end-to-end. The goal is to launch publicly and expand to other Bulgarian cities — the underlying system works for any municipality, requiring only a change in the recipient email address.