Inspiration
India's gig workforce is projected to grow from 7.7 million workers in 2020-21 to 23.5 million by 2029-30 (NITI Aayog, India's Booming Gig and Platform Economy, 2022). They are paid per hour, per delivery, per task, and when the payout comes up short, the platform holds the only record of what was actually worked. The worker has memory and a screenshot. I wanted to flip that: an independent record that lives on the worker's own phone, works with no signal and no account, and can prove what is missing.
What it does
ProofPocket is an offline shift and pay log for gig workers. You log work three ways: per hour, per delivery, or per day, across as many jobs as you have. A live timer with breaks and task counters records shifts as they happen. When the money lands, the payout check compares what you logged against what you were paid and shows the gap in plain language: you logged 39 hours, they paid you for 33, ₹1,080 missing. Once a record is settled and paid, it locks. One tap turns any client's history into a dated PDF evidence packet you can send to a manager or a platform. The money math at the heart of it is simple on purpose:
$$\text{Missing pay} = (\text{units logged} - \text{units paid}) \times \text{rate}$$
Logging, payout checks and CSV export are free forever. Plus unlocks the PDF packets and monthly reports.
How we built it
One Expo and React Native codebase in TypeScript, running on Android and iOS. Every rupee calculation lives in a single framework-free ledger module, so the money math is unit-tested on its own: 14 tests cover part payments, per-task rates, settled locks and month boundaries. All records live on-device in AsyncStorage; there is no backend and no account, which is the privacy model, not a missing feature. RevenueCat handles subscriptions through one entitlement with Monthly, Yearly and Lifetime plans. The payments module loads lazily, so the app still runs in Expo Go and on the web, where the paywall honestly shows a preview state instead of pretending a purchase happened. The interface is a token-based Material You system with one strict rule: red appears only for missing pay.
Challenges we ran into
RevenueCat cannot load in Expo Go, so the purchase flow had to degrade gracefully without ever faking a successful buy; lazy loading and an explicit preview state solved it. The harder problem was trust in the numbers: part payments, advances, and per-delivery rounding all had to land on the exact rupee, which is why the ledger became a pure, tested module instead of logic scattered through screens. Finally, the timer had to respect reality: people forget to end shifts, take breaks, and close the app mid-shift, so the running shift persists on the device and survives restarts.
Accomplishments that we're proud of
The full loop works end to end, offline: start a shift, end it, check the payout, lock the record, export the proof. The pay math is verified by tests, not by hope. Subscriptions are genuinely wired through RevenueCat, with live prices, restore, and a Test Store purchase demonstrated in the video. And the design holds its discipline: in the whole app, red means exactly one thing.
What we learned
The emotional core is not the log, it is the translation. "6 unpaid hours" is information; "₹1,080 missing" is something a worker can act on. I also learned that for this user, offline is not a limitation to apologise for. Cheap phones, dead zones, and a real fear of earnings data leaving the device make local-first the feature. Restraint beat features at every step.
What's next for ProofPocket
A store release so workers can install it without a developer build, regional language support starting with Hindi, photo receipts attached to records, and one-tap sharing of evidence packets over WhatsApp, which is where these disputes actually happen. The goal stays the same: no worker should have to take a platform's word for what they earned.
Built With
- async-storage
- expo-file-system
- expo.io
- react-native
- revenuecat
- typescript
Log in or sign up for Devpost to join the conversation.