back to portfolio
// Case Study 02  ·  civic tech

E-PDS — civil servant records, and a workflow upgrade

The Province of Surigao del Sur ran on filing cabinets and Excel sheets. Over three years I built the platform that replaced them and, along the way, brought the IT team onto Git, code review, and modern deployment. The systems and the workflow are both still running.

Role
Software engineer — Province of Surigao del Sur
Stack
Laravel, Vue.js, MySQL / SQL Server, Java (Android), Nginx
Duration
Jan 2021 — Dec 2023
Scope
500+ civil servant 201 files digitized, ongoing tourism analytics

The starting line

Provincial HR managed civil servants the way most LGUs in the Philippines do — paper 201 files in cabinets, plus Excel sheets tracking deductions, leaves, and assignments. Reports for the Civil Service Commission and the Commission on Audit were handcrafted every cycle. Tourism data came in as field-officer-typed forms and was summarized by counting rows.

The brief from the office: get the records and the reports off paper, and make tourism numbers something the planning office could look at without a meeting.

Constraints

The platform

E-PDS — digitizing the 201 file

The first deliverable was a digital Personal Data Sheet. The paper PDS is a multi-page CSC form with around 200 fields, family composition, work history, eligibility, training. I modeled it carefully — not as one giant table, but as a personal-record aggregate with relations for family members, employment, civil service eligibilities, learning and development, and references.

Critically, every change to a record was version-tracked. A civil servant who updated their employment history did not erase the previous entry — they appended. The audit trail is what made the data trustworthy enough for HR to retire the cabinet.

Tourism analytics dashboard

Tourism officers collected visitor arrivals at municipal entry points. The old workflow ended in a spreadsheet attached to an email. The new workflow ended in a Vue.js dashboard pulling aggregates straight from the database, sliced by municipality, month, country of origin, and purpose of visit.

The dashboard was deliberately small. Three views, no filters beyond date range and municipality, and a CSV export. Planning officers wanted a thing they could glance at, not a BI tool to learn.

Internal tooling suite

The records platform was the headline deliverable. The unglamorous deliverable, which moved the office more, was the smaller tools.

The performance work

The reporting views on the legacy applications had a familiar smell: response times measured in tens of seconds for endpoints hit by the whole office during cutoff weeks. I profiled, fixed the obvious N+1s, added the missing indexes on the high-traffic queries, and consolidated a few report-generation loops into batched queries.

High-traffic reporting endpoints came down by around 60% in response time. The wins were not exotic. They were the standard set of database hygiene tasks that legacy applications never get because nobody is paid to revisit them.

The workflow upgrade nobody asked for

The most durable contribution from this stretch was not a system. It was the change to how the team shipped software.

When I joined, the production deployment story was: copy files via FileZilla, hope nothing on the server changed. There was no version control of substance. A bug fix could overwrite a colleague's in-flight change.

// What I introduced Git, GitHub, code review on pull requests, a basic deployment script that pulled from main and ran composer install and php artisan migrate. Boring. Transformational.

I paired with three of my colleagues through real changes — not tutorial code — until they were comfortable opening pull requests and rolling back failed deployments. By the time I left for full-time freelance work, the team was operating their own workflow without me in the loop.

What I would do differently

What it does today

The records platform, the dashboard, and the internal tools are still in production use across provincial offices. The workflow changes — Git, pull requests, code review — outlived my time on the team. That second outcome matters more in the long run than any one feature I shipped.

Need a civic-tech build? I take on government and enterprise records platforms, internal tools, and legacy modernization end-to-end.
Start a conversation