Case Study
SnapLedger
An offline-first Android receipt ledger with backend sync recovery and Gemini-powered receipt validation.
KotlinPythonJetpack ComposeFastAPISQLAlchemyPostgreSQLGeminiGCP
Overview
Role
Mobile and backend developer
Links
Key Features
- Local-first saves during backend timeouts and sync failures
- Optimistic queue with WorkManager reconciliation
- Gemini 2.5 Flash outputs guarded with Pydantic validation
- 8 Compose routes with MVVM + StateFlow and sync determinism tests
Gallery

1 / 7
What I Learned
- Designed offline-first mobile flows
- Validated AI outputs with schemas
- Built CI and nightly evals around real failure modes