Participants in emerging markets cannot be asked to hold native gas, manage seed phrases, or wait days for a payout. The earning surface has to feel like a normal app.
← All work
Problem What I built Technical notes

- A Flutter iOS/Android app for browsing and completing surveys, app tests, and polls — with achievements, referrals, and push notifications.
- V2 Pax Wallet: user-owned ERC-4337 smart accounts, Google Drive backup that restores an existing key, and gas-sponsored claims to the selected withdrawal wallet. V1 and V2 accounts coexist, with an in-app upgrade path.
- Multi-token rewards (G$, cUSD, USDT, USDC) with MiniPay support and instant withdrawals.
- GoodDollar identity verification so tasks go to real humans, not farms. Checks run server-side, and IdentityV4 connected wallets count as verified.
- Flutter + Riverpod + GoRouter, Firebase Auth/Functions, and in-app WebViews for task completion.
- Solidity/Hardhat on Celo: PaxAccountV1, TaskManager V1–V3, plus CNV V2 contracts (gas sponsor, rewarder, task manager, wallet registry).
- Pimlico bundler + Privy server wallets for account abstraction; UUPS upgradeable contracts with a Hardhat test suite.
- Firebase Functions use `@andrewkimjoseph/celina-sdk` so wallet and claim transactions carry ERC-8021 attribution and are reported through Celina.



