Deep dive
How I kept the pilot free — and ready to grow
Every optimisation I made to keep the pilot on the free plan, and why each one works for this app in particular.
Project 02 · Civic tech · [20XX]–present
A welfare scheme is only as good as the last village it reaches. This tracks whether it got there.
[What the name means, in one line]
In 30 seconds
The point
My role
Sole developer & product owner
Built for
Sau Foundation, overseen by Maharashtra’s Assistant Commissioner of Social Welfare
Surfaces
Volunteer app · Web dashboard
Status
Closed testing on Google Play
The problem
Government welfare schemes are announced at the top, but whether they actually percolate down to each eligible household is hard to see. Gaav Tithe Sau gives that question an answer: volunteers on the ground record who is eligible for which scheme and move each application through an 11-stage pipeline until it succeeds or closes, and leads see the picture roll up from village to taluka, district and region.
[How you got involved, and who you’re working with — 2–3 sentences.]
Who it’s for
The Sau Foundation is an NGO working across Maharashtra’s villages, under the oversight of the state’s Assistant Commissioner of Social Welfare. Its volunteers help people from marginalised communities get the government welfare schemes they’re eligible for — and follow each case until the benefit actually arrives.
[About the foundation in your words: when it started, who leads it, where it works, and how you came to build this for them.]
The guiding rule: measure the worker’s action, not the beneficiary’s identity.
The people it serves
They never touch the app. It tracks the work done for them, and keeps as little about them as possible.
Phone app
Enrol people in schemes and move each application forward, from first contact to the benefit arriving.
Phone + dashboard
Watch progress across their area and spot where cases stall. Read-only, and totals only.
Dashboard
Create accounts, assign volunteers to villages, add schemes and export reports.
What I built
Volunteer app · Flutter
Web dashboard · React + TypeScript
Design decisions
Every one of these started as a real limit and ended as a design decision.
Constraint
Running on a free server plan, where data transfer is the scarce resource
Decision
An offline-first app with a local database on the phone. Each volunteer downloads only the records they actually open, never the whole village.
Constraint
The commissioner’s office asked that volunteers never be able to burn through that bandwidth
Decision
No “refresh everything” anywhere. Pull-to-refresh re-checks only what’s on screen, so no amount of tapping can get expensive.
Constraint
Patchy connectivity in the field
Decision
Offline mode is read-only, with a bilingual “may be out of date” banner. Writes are disabled, not queued, so nothing can conflict later.
Constraint
Beneficiaries’ Aadhaar numbers are sensitive, and Indian rules restrict storing them
Decision
The phone hashes the Aadhaar number and clears it before anything is sent. The database keeps only nine fields per person — no phone numbers or addresses.
Constraint
Real people’s welfare records — mistakes aren’t acceptable
Decision
Separate test and production databases. Every change is a numbered migration, tried on test first; production started with no placeholder data. 80+ design decisions are written up in a log.
Deep dive
How I kept the pilot free — and ready to grow
Every optimisation I made to keep the pilot on the free plan, and why each one works for this app in particular.
Reach
[#]
villages covered
[#]
volunteers onboarded (pilot plans for ~200)
[#]
scheme enrollments tracked
Reflection
[2–3 sentences in your own words — e.g. what it’s like to build for a government office, or how designing for volunteers with limited connectivity changed how you think about software.]
App
Flutter, drift (SQLite)
Backend
Supabase (Postgres 17)
Web
React + TypeScript, Cloudflare Pages