Confidential
Address Verification SDK
A reusable Flutter module for Tier 3 address verification. A customer enters their address, the app confirms they are physically there, checks a photo of the building with AI, and issues a PDF certificate. Host apps use it through a small public API.
- Context
- Engineered · Payvantage for Ethica Microfinance Bank
- Ownership
- Engineered
- Platforms
- SDK · Mobile
- Stack
- Flutter, Dart, BLoC (Cubit), Google Places and Geocoding
Confidential production system. No screenshots, code, architecture or data from it are published here, and descriptions stay at the product level.
What I did
- Designed it as a package with a single public entry point: a drop-in flow widget, a setup function, a configuration object and typed results. Host apps never reach into its internals.
- Modelled the flow as an explicit state machine of thirteen states, from address entry and map pin drop through photo capture and validation to submission, plus out-of-range, location-denied, reminder and error states.
- Returned a sealed result type: submitted (possibly pending manual review), out of range with the measured distance, or location unavailable. Each host has to handle every case.
- Address entry with place autocomplete and geocoding, with a map pin drop when the address cannot be placed precisely.
- Compares the device's location with the address against a configurable radius.
- AI validation of the building photo, a generated PDF certificate, and a reminder notification when the customer cannot verify straight away.
What came of it
- Powers the KYC tier 2 to 3 upgrade in the Ethica mobile app.
- Reduced third-party KYC verification costs while improving verification accuracy.