Flutter · Dart · Riverpod · Node.js (Backend) · Socket.io · PostgreSQL · Hive (Local DB) · Dio · Awesome Notifications · Firebase FCM · OpenAPI (Contract Testing)
Duration
10 Weeks
Location
Remote
Platform
IOS, Andriod & Web
Screens
15+
Category
Finance
Size
72.4
MB





Project Description
Agent360 is a mission‑critical internal mobile application deployed by Crediometer, a forward‑thinking fintech operating across African markets. The platform digitizes informal savings mechanisms—commonly known as ajo or esusu—by giving field agents a powerful mobile tool to manage customer savings, disburse advances (loans), and execute transactions on behalf of customers.
The ecosystem consists of three interconnected applications:
Admin Web/Dashboard – for supervisory oversight and approvals.
Agent Mobile (this project) – for fieldwork, deposit capture, and transaction execution.
Customer Mobile – for transparency, allowing customers to track their assigned agent’s activities and balances.
Built with Flutter and Riverpod, the app ensures offline‑capable, real‑time synchronization with a Node.js backend. This enables agents to serve customers in low‑connectivity rural environments without friction, while maintaining immutable audit trails for every financial action.
The Problem:
Traditional African savings circles are manual, paper‑based, and error‑prone:
Agents carry notebooks, cash, and handwritten ledgers – leading to reconciliation nightmares and arithmetic errors.
No real‑time visibility for customers – they have zero insight into their savings, breeding distrust.
Managing advances (loans) manually results in duplicate requests, unpaid defaults, and missed collection opportunities.
Reconciliation of daily cash-at-hand against ledger entries takes hours, if not days – crippling operational scalability.
As Crediometer scaled its agent network from dozens to hundreds, the manual system became a liability – exposing the business to fraud and regulatory audit risks.
The Solution:
Agent360 replaces paper ledgers with a digital‑first, multi‑role architecture:
Agent Mobile App – Field agents capture savings in real‑time, submit transfer deposits for admin approval, request advances, and reconcile daily cash – all from their smartphones.
Admin Dashboard – Supervisors get a bird’s‑eye view for agent management, pending approvals (advances & transfers), and immutable cash reconciliation oversight.
Customer App – End‑users gain a transparent window into their savings balance and a live feed of their assigned agent’s activities.
Business Rule Enforcement – The system automatically blocks advances if an outstanding loan exists, preventing default accumulation.
Immutable Audit Logs – Every financial action (Pump In / Pump Out, reconciliation, approvals) is logged with timestamps and actor identities for full regulatory compliance.
Role
Architected the entire Flutter codebase using Riverpod for state management. Designed a modular folder structure (features/roles/shared) enabling 3 distinct app interfaces (Admin, Agent, Customer) from a single codebase.
Built a robust offline job queue using Hive and Dio interceptors. Agents can log savings, record advances, and capture transactions without internet; data syncs automatically when connectivity returns, with conflict resolution (server‑wins for balances, local‑wins for new entries).
Integrated Awesome Notifications + Firebase FCM for dual‑channel alerts. Agents receive instant push notifications for admin approvals/rejections; customers get SMS + in‑app updates on their transactions.
Engineered the multi‑step “Pump In / Pump Out” cash reconciliation module (Green/Red visual cues), multi‑step Advance Requests, and Transfer Deposit submissions with reactive form validation and draft auto‑save.
Built a dynamic UI layer that renders Admin‑specific dashboards (agent dropdown, approval queues), Agent operational screens (dashboard metrics, cash reconciliation), and Customer view‑only screens based on login credentials.
Implemented a write‑once, read‑many ledger pattern for Cash Reconciliation records. Every reconciliation event calculates surplus/deficit against physical cash and locks the record, with full audit trail accessible to Admins.
Optimized build times by 35% using lazy loading, const constructors, and selective Riverpod provider rebuilds. Ensured 60 FPS on budget Android devices (sub‑$100) common in African markets.
Process
01
Designed an offline‑first architecture using Hive for local storage and a Dio queue interceptor. All writes are stored locally with a sync_status flag. Background isolates handle retries with exponential backoff. Conflict resolution: server balances are authoritative for customer totals; agent‑initiated entries are authoritative for new transactions.
0 data loss incidents across 2,000+ offline transactions during the 3‑month pilot.
02
Utilized Riverpod providers to inject role‑specific navigation trees, dashboard widgets, and permission hooks based on a userRoleProvider. Shared a core UI component library (buttons, cards, modals) across all roles.
60% code reuse – shipped all three apps in the same timeline as building one.
03
Framed the UI as an assistant, not a replacement. Added verbal confirmation toasts for every critical action (“Savings logged successfully!”). Built a “Print Ledger” feature that generates a PDF of the day’s activities – giving agents a physical backup. For customers, every deposit triggers an SMS notification from Crediometer.
95% agent adoption rate within the first 2 weeks; customer trust scores improved by 40% (post‑pilot survey).
04
Implemented Socket.io for real‑time admin approval pushes (bidirectional) and Firebase FCM for transactional alerts. Heavy data (transaction history, reconciliation logs) is fetched via REST only on‑demand or during scheduled sync windows.
Battery drain reduced by 60% – agents can work a full 10‑hour shift without recharging.
05
Once a reconciliation record is submitted, the app sets a locked flag on the backend. The UI disables edit buttons and shows a warning badge. New reconciliations are created as a new entry, and the surplus/deficit is recalculated against the sum of all previous immutable records.
100% audit pass rate – regulatory auditors praised the transparent ledger.
06
Established a contract‑first approach – defined REST API specs (OpenAPI) and Socket event schemas before writing Flutter code. Used mock data providers in Riverpod to demo UI flows to stakeholders while the backend was still under construction.
Frontend delivery aligned perfectly with backend readiness – on‑time MVP launch in 12 weeks.