Skip to content

Releases: coding-parrot/pothole-reporter

v1.4 - records the whole drive, and never claims what it did not measure

Choose a tag to compare

@coding-parrot coding-parrot released this 19 Aug 02:54

Install this over your existing app. Do not uninstall first, or the reports and photos on your phone go with it.

Drive Mode records the whole drive

Capture no longer depends on picking the right interval. A drive now records continuously in clips written straight to storage, while the live pass still drafts complaints as you go. Afterwards, analyse the footage to pull frames back out at whatever spacing you want and run them through the same pipeline, geotagged from a GPS track recorded alongside. A drive offers this as soon as it ends.

ImageCapture.takePhoto() is gone. It reconfigured the camera on every shot, which stutters the preview once a recorder shares the camera, and it bought nothing: frames now come off the live preview at its full 1920 width, the size the model is sent anyway.

What is kept: confirmed potholes as photos, always. Frames the AI rejected are never stored, because the footage already holds every frame. The video is deleted once analysed, unless Debug mode is on, which keeps it.

Seeing your work

Past drives collapse to one row showing the date, potholes found and frames actually checked; tap to expand, and confirmed potholes sort above the frames that were dismissed. Tap any photo for a full-screen viewer with pinch zoom, and step between records with arrows instead of going back to the list. A new contribution dashboard totals potholes, complaints sent, frames checked, kilometres covered and footage held, breaks the finds down by size and by corporation, and pins every located pothole on a map.

Building an evaluation set

Review and label frames on the phone, then export them as a zip through the share sheet. Optionally save every analysed frame with the model's verdict into Documents/pothole-frames for building a benchmark.

Hardening

An adversarial review aimed at demonstrating this live raised 43 issues; 19 survived scrutiny. The important ones:

  • Footage analysis used to swallow every network error, announce "0 potholes" and then delete the video. It now counts failures, keeps the video whenever anything failed, and refuses to state a result it did not measure.
  • A drive died after five failed frames, roughly four seconds under a flyover. Only a key or quota problem ends a drive now; a dropped signal keeps scanning and says so.
  • No request had a timeout, so a connected-but-dead network stranded the app forever. Everything now aborts with a plain-language message, and raw provider errors are never shown.
  • The complaint said a contract was "awarded on" a date that is actually the tender's publication date, and records with no winning bidder rendered a placeholder that read as a person's name in Kannada. Both corrected, with the claim explicitly marked as a record match to verify.
  • An incoming call could freeze the preview while the app kept analysing the same stale frame.
  • A pothole with no GPS fix was told it was outside Bengaluru, rather than that the location is unknown.

Thanks to @deepanshu-iitm for the first outside contribution, fixing the Drive Mode holding counters.

v1.3 - covers more road, keeps the last frames, sends the real photo

Choose a tag to compare

@coding-parrot coding-parrot released this 18 Aug 07:38

Drive Mode covers far more road. The capture loop ticked every 1.2s, but a camera still holds a serialised lock for up to 1.4s and any tick landing in that window was skipped, so the real gap was about 2.4s: roughly 27 metres between frames at 40 km/h, against a camera that usefully sees 15 to 25 metres. Whole stretches were never looked at. The tick is now 400ms, capture spacing is decided by the 8-metre distance gate, up to 4 frames analyse at once, and a costly full-resolution re-encode was removed from the capture path.

Stopping a drive no longer appears to lose potholes. Frames still being analysed when you pressed Stop were saved to the database, but they were not counted: the end-of-drive summary under-reported the last stretch of road and the history list refreshed before they landed, so they were invisible. The summary and the list now wait for those frames.

Complaints carry the real photo. The officer used to receive the small copy the AI looked at, 1125x2000 at 829 KB, while the camera had captured 2304x4096 at 17 MB, and the re-encode stripped the EXIF timestamp and GPS. Complaints now attach the full capture at up to 4000px with EXIF intact.

Outside Bengaluru it now says so. The officer directory and road contracts only cover the five GBA city corporations. Elsewhere the app still detects the pothole and saves the photo and location, but refuses to name a recipient or a contractor rather than addressing your complaint to a body with no jurisdiction. Those reports show as "Outside coverage".

Also: a detection benchmark under eval/ with a noise-floor control, and versionCode now increments so upgrading installs in place instead of risking an uninstall.

Detection accuracy itself is unchanged from v1.2. Install the APK below over your existing app; do not uninstall first, or your saved reports go with it.

v1.2 - faster detection, better recall

Choose a tag to compare

@coding-parrot coding-parrot released this 18 Aug 01:17

Detection is about twice as fast, and Drive Mode should now find potholes it was quietly missing.

Better recall. The cheap gpt-5-nano pre-screen that gated every Drive Mode frame is gone. An evaluation found it rejecting 8 of 9 potholes the main model catches, so it was suppressing detections rather than saving work. Every frame now goes straight to one gpt-5-mini call. Drive Mode also captures at full resolution instead of 1280px, after a test showed 1280px drops a real pothole that survives at full size.

Faster. Detection ran at the model's default reasoning effort, spending 200+ hidden reasoning tokens per photo before answering a yes/no question. At minimal effort the verdict arrives in roughly half the time, verified accuracy-neutral on the local eval set (6/6 on confirmed potholes at the same median confidence). The verdict now also streams to the screen while the complaint is still being written.

Contract matching deliberately keeps full reasoning effort: it names a real contractor in a government complaint, so it is the wrong place to trade thinking for speed.

Costs more. With no pre-screen, every captured frame reaches the main model, so budget rupees per drive rather than paise.

Install PotholeReporter.apk below (allow installs from unknown sources). Paste your own OpenAI API key on first launch; it is stored only on your device.

v1.1: English + Kannada

Choose a tag to compare

@coding-parrot coding-parrot released this 17 Aug 19:07

Bilingual UI and complaint drafts (English / ಕನ್ನಡ), switchable in Settings. Drive Mode now uses true camera stills, captures at least every 8 s even when stationary, and refuses stale GPS fixes.

v1.0

Choose a tag to compare

@coding-parrot coding-parrot released this 17 Aug 18:53

First public release. Sideload the APK, paste your OpenAI API key in Settings, and report potholes. See README for everything.