Ardura
Broker platform with one portal per role — client area, IB partner portal, back-office CRM, and super-admin. Plus a commission engine, a payout ledger, and AI churn prediction that a person signs off.
One platform for the whole client relationship: clients serve themselves, IBs get paid, and the retention team stays in control. Every AI suggestion needs a human yes, and every commission decision is stored with the numbers behind it.

Problem
A broker runs three audiences at once — clients, introducing brokers, and its own operators — and most stacks answer that with three disconnected tools plus a spreadsheet for commissions. Retention then fails in the gap: AI signals are either ignored entirely or piped straight to automation without operator judgment, creating liability when models drift and silent churn when they don't.
Role
- Sole engineer — platform design through full-stack implementation across all four portals
- Built the IB commission engine, eligibility snapshots, payout flow, and ledger
- Built segmentation, automation workflows, and operator approval queues
- Designed AI integration pattern: recommend → review → approve → trace
Approach
- Built one platform with four role-scoped portals — client area, IB partner portal, back-office CRM, and super-admin — so each audience gets its own authority boundary rather than one dashboard with hidden buttons
- Client portal for self-service: trading accounts, trade and transaction history, engagement rewards, settings
- IB portal for the partner network: referrals, commission statements, payout requests, marketing assets, reports
- Commission engine that snapshots eligibility — the evaluation context and result are stored at decision time and referenced by the commissions they produce, so a payout can always be explained months later
- IB earnings tracked in an append-only ledger with idempotency keys and running balances, splitting pending from available so a retry can never double-credit a partner
- Churn predictions surface as recommendations into a decision queue, never triggering actions directly
- Human-in-the-loop: operators approve, modify, or reject every automation rule, with rule evaluations logged for review
- Multi-tenant from the data model up — tenants, subscriptions, invoices, and usage records, with a separate super-admin surface
- Component reuse from Truvesta governance stack — safety invariants preserved across products
Outcomes
- One platform spans the full broker relationship: client self-service, IB partner network, operator retention, and tenant administration
- Complete client lifecycle view: acquisition → engagement → risk → retention
- Partner earnings are explainable — every commission traces to the eligibility snapshot and ledger entries behind it
- Zero autonomous actions — every retention intervention is operator-approved
- 21 test files spanning unit and Playwright end-to-end coverage
- Four role-scoped portals from one codebase: clients see their own accounts and trades, IBs see their referrals and earnings, operators see the book, super-admins see tenants and billing
- Client portal: trading accounts, trade and transaction history, engagement rewards, and self-service settings
- Append-only IB ledger with a unique idempotency key on every entry, running balance-after, and separate pending vs available balances — replaying a payment cannot double-credit
- Multi-tenant by construction: tenants, subscriptions, invoices, and usage records, administered from a separate super-admin surface
- IB partner portal: referral tracking, commission statements, payout requests, downloadable marketing assets, and reports
- Commission engine with eligibility snapshots — the decision context and its result are frozen at evaluation time, and each commission references the snapshot that produced it
- AI predictions surfaced as recommendations — operators approve every action, with confidence, input features, and rationale attached
- Reused governance components from Truvesta without cutting safety
What I refused to build
These constraints are part of the engineering signal: the work stayed useful because the unsafe shortcut paths stayed out.
- R-01Auto-execution of AI-driven retention actions — operator judgment is a hard requirement
- R-02Black-box predictions — every recommendation shows its reasoning
- R-03Recomputing commission eligibility after the fact — the context and result are snapshotted at evaluation time, so a partner dispute is settled by evidence rather than by re-running today's rules against last quarter's data
- R-04Mutable ledger balances — entries are append-only with idempotency keys, so corrections are new entries rather than edits
Three of the four portals, each served to a different audience from the same codebase. The client sees only their own accounts, the introducing broker sees only their referrals and earnings, and the operator sees the book — the same commission is visible from both sides of the relationship, computed once.






Stack
Working with Asadi Labs
This is the kind of system Asadi Labs builds and runs for clients: fintech systems where product direction, architecture, execution, and governance all have to line up.