Offline AI for Civic Reporting: Kerbside Explained
See how Kerbside uses offline Whisper and Gemma to turn a neighborhood walk into a reviewed, mapped civic report without sending voice data to the cloud.

Kerbside Turns a Neighborhood Walk Into a Civic Report
A broken footpath is easy to spot, and - somehow - easy to leave unreported. Filing a complaint that actually helps can mean stopping to take a photo, pulling out your phone, choosing a category, writing a clear description, and pinning a location. Do that for every issue on a walk and the effort starts to feel like the whole point.
Kerbside takes a different approach. Instead of asking people to fight through a structured form on the spot, it has you record what you notice while you walk, then uses local AI to turn that recording and your GPS track into a map and a draft report. Speech recognition and Gemma run on a laptop, not a cloud service, and a person checks the output before anything gets shared.
That human review step is the key part. The tool isn't trying to replace people in civic reporting - it's trying to take out the repetitive work while keeping verification and judgment with the person who was there. In this article, I look at how Kerbside works, what a real walk revealed, and what the project suggests about building privacy-conscious AI tools for everyday public problems.
What Kerbside does - and what it does not do
Kerbside is a small open-source tool that turns observations made on a walk into structured civic information. A resident records a voice memo and a GPS track on a phone. Later, an organiser processes those files on a laptop. The output can include a map, a short report, and tabular data for a portal or community group.
A walk can capture problems like a damaged footpath, a blocked drain, a road dug up for construction, or a streetlight that isn't working. It can also capture positive observations, like a tree providing shade. The broader view matters: a street audit should describe what's there, not only collect defects.
The workflow targets one specific form of friction. People can often describe what's wrong in plain speech, but turning that into something consistently located, categorized, and shareable takes time. Kerbside uses transcription plus a language model to draft a report by placing each observation along the route you walked, then producing outputs you can share.
It does not file complaints automatically. The person who walked the route reviews the findings, removes mistakes, and edits the wording before sharing anything. That boundary is a deliberate product choice, not a small interface detail. If an incorrect report goes to a city department, it wastes staff time, confuses residents, and can make people stop trusting the tool. Automatic submission might be faster, but for uncertain input, human approval is the safer fit.
The intended users include residents, resident welfare associations, students, and non-governmental organisations running walkability audits. Not everyone has to install or run the software. Residents can record walks on their phones; one organiser can process the files and share the map or report.
Open the live map from the project's real campus walk to see how findings appear. The project is available in the Kerbside GitHub repository, under the MIT license.
How the offline AI pipeline works
Kerbside takes a voice recording plus a GPS track and processes them on the user's laptop. It uses faster-whisper for speech recognition and Gemma 3 4B through Ollama to classify what was said.
The basic flow is:
- Work out when the voice recording began.
- Transcribe the recording into timestamped sentences with faster-whisper.
- Match each sentence's timestamp to a location on the GPS track.
- Ask Gemma to classify the sentences and draft findings.
- Generate a map, report, GeoJSON, and CSV.
- Let a person review and edit the findings before sharing.
You can run it from the command line or through a local web interface. The creator tested it on a Windows laptop with an Intel i5 processor, 16 GB of RAM, and no GPU. The local interface listens on 127.0.0.1, so the processing stays on that machine instead of sending recordings to a remote service.
Turning speech into locations
Speech recognition is only part of the job. A transcript needs accurate timing so each spoken observation lines up with where it was made. Kerbside runs the small faster-whisper model in int8 mode on the CPU. In the project's test, an 8.5-minute recording took about 30 seconds to transcribe.
A timing bug showed why you can't just trust the model output in isolation. With silence skipping enabled, one sentence was timestamped 66 seconds before it was spoken. At walking speed, that could place the reported issue about 80 metres from the right spot. Switching to the timestamp of the sentence's first word fixed the problem.
There's also a confidence boundary for location matching. If the nearest GPS fix is more than 30 seconds away from the sentence, Kerbside marks the location as approximate and uses a dashed outline on the map. Instead of pretending everything is exact, the system makes uncertainty visible.
Making a small model more dependable
Gemma's job is to label each sentence, not to write a free-form summary of an entire walk. It decides whether a line describes a problem, a positive feature, a follow-up to something already found, or something that isn't an observation at all. The output is structured to a defined schema, including categories and severity levels.
This setup comes from problems in an earlier version. That version asked the model to produce a list of findings from chunks of 12 sentences. In testing, it merged unrelated lines, skipped others, and sometimes produced different answers across identical runs. Asking a small model to "fill in" a list can sound reasonable - but it also gives it room to omit relevant material.
The revised approach labels every line. Numbering lines within each chunk prevents confusion about sentence positions. Follow-up remarks can be attached to the previous finding in code. Some safety rules are deterministic rather than left to the model - for example, open drains, missing covers, manholes, and holes get a severe rating. Those rules are easier to test than hoping prompt wording alone will keep judgments consistent.
On the tested CPU, Gemma took about one to two minutes per 12 sentences. A 96-sentence walk took roughly 12 minutes to process. It's not instant, but for an organiser preparing a report after a walk, it may be a reasonable trade-off for local processing without API fees.
What a real walk revealed
The most useful test wasn't a clean scripted demo. It was a 12-minute evening walk on a college campus, recorded on an iPhone and processed on a laptop. The first system had been tested against scripted examples; real speech behaved differently.
People don't talk like issue trackers. They narrate what they pass: greenery, the back of a shop, a tennis court, or a change of direction. On the real walk, Gemma initially generated 47 findings - about 40 of them were scenery, not actionable observations.
Adding more prompt instructions about what not to count helped only a little. The bigger improvement was to classify what each sentence was before trying to turn it into a finding. If a sentence looked like general description or chatter, the code dropped any attached issue category. The project also moved some predictable work into code. For instance, if a sentence adds details without naming a new street feature, it can be joined to the previous finding - even across chunk boundaries.
After those changes, the walk produced 11 draft findings. Six were genuine observations: construction materials, a road barricaded with tape, cut trees, and an unfinished road. Five came from speech recognition errors. For example, Whisper misheard a phrase about a volleyball court, and another named building was transcribed in a way that Gemma treated as "a chair blocking the footpath." The model's guess was plausible based on the transcript - but the transcript was wrong.
The reviewer removed the false findings, corrected wording, and moved two observations to where they were actually seen. The pattern - 47 initial outputs, then 11 drafts, then six reviewed findings - makes the division of labour clearer: AI can draft and organize, and the person who made the observation decides what's accurate.
That same walk also found a non-AI problem: the GPS tracker didn't have background location permission. When the phone locked, tracking stopped, leaving only the first and last minute of the route. The resulting report showed 143 metres walked, with most locations marked approximate. Kerbside flagged the weak location data, but it couldn't recover GPS points the phone never recorded. The project's instructions now tell users to set location access to Always before starting.
This is a useful reminder for anyone building AI-assisted products. Better model output can't compensate for missing or poor input data. A working system has to account for the phone, its permissions, file timing, model behavior, and the person reviewing the result.
Why the design choices matter
A voice recording plus a GPS track can reveal where someone lives, when they leave home, and the route they take. It also contains their voice. For a report about a pothole or a blocked drain, sending that data to an external API can be an unnecessary privacy cost.
Kerbside's local-first setup avoids that transfer: transcription and analysis happen on the laptop, and the resident chooses what reviewed findings to share. For the project's published example, the full transcript was not included in the public repository; only the six reviewed findings were shared.
Local processing isn't a magic privacy guarantee. Devices get lost, files get shared by mistake, and even a map of reviewed observations can reveal patterns. Groups still need to decide where recordings are stored, who can access them, and when they should be deleted. But by keeping raw audio and routes off a third-party service, there are fewer parties to trust by default.
There's also a practical side: operating cost and control. A residents' association might not have budget for ongoing API use, and a tool that depends on a changing free tier can become useless when the terms change. Open-weight models also let the project run without per-request cloud fees. The MIT-licensed code, the local rules, and outputs in formats like GeoJSON and CSV make it easier for community groups to inspect and adapt the system.
Of course, local models have trade-offs. They can be slower, require a laptop that's good enough to run them, and they can produce mistakes that still need review. The evaluation shows a related limitation: the scripted test sets got the categories right, but severity could still be off by one level, and details like a pole number could end up treated as chatter. The real walk also showed how speech recognition errors can survive into a confident-sounding but false interpretation.
None of that is a reason to dismiss the approach. It just clarifies where it fits. Kerbside works best as a tool for creating a reviewable first draft, not an automated authority on street conditions. The output becomes useful when a person checks the finding, the location, the wording, and the urgency before sharing it.
This same principle applies beyond civic reporting. When AI processes observations that could affect public decisions, the product needs visible uncertainty, a real human review step, and a clear account of what data leaves the device. Local models help with one part of that design; they don't remove the need to build the rest carefully.
Conclusion
Kerbside is a practical example of offline AI aimed at a real operational problem: turning observations from an everyday walk into a structured, reviewable civic report. The most important design choices aren't just "which model." They're local processing, explicit uncertainty when GPS data is weak, line-by-line classification, deterministic safety rules, and a person-in-the-loop review before publication.
The real test also shows why an AI demo isn't enough. Everyday speech brings false positives, transcription mistakes, and data-quality problems that scripted tests can miss. A useful system has to make those limits visible and give users a workable way to correct them.
If you're organizing a street audit or just want to see how local models can support civic work, explore the live map and review the open-source project. Start with one short walk, check the GPS permissions, and treat every AI-generated finding as a draft until someone who was there verifies it.