Kabacan PUV

Kabacan PUV

Introduction

Eliminated manual data entry and structured-field errors by building an offline-first PWA. The system replaced paper logs for a local government unit operating in areas with inconsistent connectivity.

Details
  • ProjectKabacan PUV
  • Timeframe6 months
  • RoleUX/UI Engineer
  • WebsiteInternal Tool
Scope
  • Web Apps01
  • Prototyping as Design02
Outcomes
~100
Violations logged per week
0
Structured-field data entry errors
11mo
In active production use
The brief

Traffic enforcers in Kabacan logged violations on printed sheets, then manually transferred the data into an Excel file at the end of each shift. The process guaranteed transcription errors and delayed supervisor visibility by hours. The local government unit needed a digital replacement.

The constraint: internet coverage across enforcement areas is inconsistent. A system requiring a live connection would fail in the field, becoming a more expensive version of the paper log.

What I found

I spent a morning observing two shifts before writing a single wireframe. The paper system had two distinct failure modes.

Enforcers were formatting plate numbers differently across every shift. The data wasn't wrong — the input had no structure to be wrong against. The implication: any digital replacement needed strict, structured input fields.

Supervisors managed field operations on yesterday's data. A violation logged at 9am existed only on paper until transferred hours later. The implication: the system needed automatic background syncing to give supervisors real-time visibility without adding manual steps for the enforcers.

The approach

The framing decision: deploy a Progressive Web App to the Android smartphones enforcers already carried. No app store, no new hardware, no IT provisioning. The enforcement workflow stayed the same. The tool changed.

Built structured input for all violation fields — plate numbers follow a defined format, and violation types are selected from a list.

Ran two rounds of on-device testing with enforcers during development. The first round surfaced a parsing failure for edge-case plate formats, which was fixed before the second round.

Implemented an offline-first architecture using Service Workers and IndexedDB. Every violation logs immediately to local storage, requiring zero connection.

Built a background sync layer — records upload automatically when signal returns, requiring no enforcer action.

The tradeoff

I implemented a last-write-wins conflict resolution strategy for simultaneous syncs to hit the three-month timeline. It handles the primary use case — discrete new violation records — but defers complex merge handling for edited entries.

What shipped

Supervisors now see field violations in real time, and manual data entry is eliminated. Ten enforcers log ~100 violations per week with zero structured-field errors. The tool adapted to the existing workflow rather than forcing a new one.

What I'd do differently

I'd architect a discrete merge strategy for edited records from day one. I scoped it out to hit the initial deployment target, but treating edits as a deferred v2 requirement rather than a core offline constraint was a miscalculation.

Want to see more?

Let's build something.

How can I help?
Hey, I'm Princeton, your business pal.