Home/Work/Partner programme platform with automated payouts
MedTech · Flutter PWA · Case study

A partner programme that pays out through UKopen banking, notifies once and never creates apartner twice.

A Flutter PWA and admin for a UK MedTech brand: earnings, withdrawals through Tide open banking, promo codes, support chat and eight Cloud Function triggers that fire once.

1codebase for iOS, Android, desktop
8Cloud Function triggers
0duplicate notifications
0gap in payouts during provider switch
Partner portal live
Earnings£1,240
Withdrawals£400
Referrals12
Happening now
  • Withdrawal #221£400paid
  • Referral bonus+£85credited
  • Notificationpayout.landedsent once
  • ProviderFena → Tidemigrated
The problem

Partners asked for balances by email; payouts were manual; a first build created partners twice. Forms, spreadsheets and a risky store review.

The approach

Custom claims for roles, Firestore, Cloud Functions with dedup keys and delivery logs; writes serialised; Fena to Tide without interrupting withdrawals. PWA, Firebase, idempotent everything.

Architecture & AI decisions

Event-driven, deduplicated, serialised

Each trigger writes with a deduplication key and a delivery log; partner creation, wallet updates and payout status changes are idempotent.

01

Progressive web app chosen over store distribution for launch date and

Progressive web app chosen over store distribution for launch date and updates

02

Custom-claims admin auth

Custom-claims admin auth

03

Promo-code system and support ticket chat

Promo-code system and support ticket chat

04

Open-banking payouts migrated between providers with no gap

Open-banking payouts migrated between providers with no gap

What shipped.

01

Flutter PWA

One codebase
02

Admin panel

Partners and payouts
03

Earnings & withdrawals

Tide open banking
04

Promo codes

Referral tracking
05

Support chat

Ticket-based
06

8 triggers

Cloud Functions
07

Custom claims

Role enforcement
08

Delivery logs

Every event once
Result
8triggers
0duplicates
1codebase
0store-review delays
FlutterRiverpod · go_router · DioFirebase Auth · Firestore · Functions · FCMTide open bankingCloudinaryFlutterRiverpod · go_router · DioFirebase Auth · Firestore · Functions · FCMTide open bankingCloudinary
Selected work

More in production.

All case studies
Healthcare · Conversational AI · SaaS

An AI receptionist a clinic can configure in an afternoon and trust with its calendar.

A prompt compiler builds the agent from onboarding answers; a server-side booking guard checks calendar, duration and rules; Flow Studio lets tenants draw routing.

3channels, one agent per tenant
1session to configure an agent
0double-bookings by design
Read the case study
Inbound call · Northgate Dental
2
find_slots(fri, pm)21ms
booking_guard(2:30)
book(2:30) · release(thu)34ms
E-commerce · Integrations

Orders that print their own Royal Mail labels, tested in a sandbox where nothing is charged.

Verified requests, idempotency keys, delivery logs; a mock that mirrors the API per environment; iframe modules with a stable contract.

1click from order to label
£0postage charged in staging
0duplicate labels by design
Read the case study
Fulfilment · Royal Mail
42
Order #10480 · address
Labelidempotent
Postage chargedsandbox

Have a system
like this in mind?

Send the problem, not a brief. An engineer replies within one business day.

Start a project