One ledger. Three portals. Real money in real bank accounts.
LendFlow handles the entire lifecycle of a small-business loan: from the merchant filling out an application to the daily debit hitting their account 90 days later — and the renewal offer that goes out at 50% payback.
Application → funded → serviced → renewed.
Each stage is its own module, with explicit state machines and event emissions. No tangled procedural code; just clean handoffs you can reason about.
Intake
Merchant submits an application. Plaid Link verifies the bank account, ownership snapshot is captured, and the deal lands in the funder's queue.
Underwriting
Bank metrics are calculated, MCA positions are detected from raw transactions, safety rails fire, and a product is matched against the funder's per-product rules.
Contract & fund
DocuSign envelope sent on approval. Auto-fund toggles trigger the ACH credit the moment signatures complete. The cycle activates and the daily debit schedule begins.
Servicing & renewal
Two-tier failure handling on debits, a configurable default threshold per funder, and an automatic renewal offer at 50% payback with pre-calculated terms.
Configure once. Decision the same way every time.
Funders define their products, their per-product underwriting rules, and their bank account. After that, every deal flows through the same machine — auditable, reviewable, and consistent.
Risk tiers + presets
Define amount range, multiplier, and term days per product. Apply Medium/High/Highest risk presets to auto-create the underwriting rules — then tune.
Per-product toggle
Some products fund the moment the contract is signed; others wait for review. Funders set the policy per product, not per deal.
Stop-pay vs. miss
R08 stop-pays are tracked separately from missed payments. Trigger thresholds are configurable. Defaults flow into the renewal logic on recovery.
Earned per deal
Platform fees are recognized after a configurable payment milestone — set per product, per funder, or as a platform default.
Bank statement OCR
Drop a PDF, get back deposits, NSFs, and detected MCA positions. The underwriter sees the same data the rules engine does.
Pre-fill from a contract
Drop a signed application PDF and LendFlow extracts the merchant + ownership and pre-fills a new file — with safety rails to prevent duplicates.
A clear loan view they can actually use.
Merchants get a single dashboard: current loan status, payment progress, payment methods (ACH and card), document upload, and a wizard to apply for additional capital. SSN and EIN are encrypted at rest the moment they're entered.
The merchant portal works on phones, ships responsive out of the box, and never exposes another funder's data — tenant scoping is enforced at the service layer, not just hidden in the UI.
- Multi-step wizard for new applications
- Plaid Link for bank verification
- Card or ACH payment methods, with a deal-level override
- Document upload with funder visibility controls
The providers wired in today.
Every external service sits behind a TypeScript interface. We pick a default and ship it; you can swap it.
Plaid
Link tokens, public-token exchange, transactions, balances, and item lifecycle. Tokens encrypted with AES-256 before they touch the database.
DocuSign
JWT-based eSignature flow with auto-send on approval, status webhooks, and embedded signing for in-portal contract execution.
Authorize.Net CIM
Tokenized card-on-file via Accept.js. Ad-hoc payments and recurring debits both run through the same provider interface.
Nodemailer + SMTP
Transactional email via your own SMTP relay. Branded templates for deal milestones, payment receipts, and default escalations.
Twilio
Programmable SMS for payment reminders and default escalations. A2P 10DLC compliant with explicit merchant opt-in at registration.
Anthropic Claude
OCR, bank-statement metric extraction, and MCA position detection — all behind swappable interfaces so the model can be replaced.
Increase / Dwolla
ACH funding and daily debits behind the same payments interface that drives card. Provider choice is a config swap.
Middesk
EIN matching, SOS filings, and watchlist screening on the merchant verification flow.
UCC search
Multi-state UCC lookups inline in the underwriting view, surfaced alongside the AI-detected MCA positions.
The platform isn't a frontend over Excel.
State machines are real. Audit trails are immutable. Background work is queued, idempotent, and traceable.
Modeled in the schema
Application → approved → contract_sent → signed → funded → active → paid_off / defaulted. Every transition writes an activity row.
Idempotent workers
Payment processor at 6 AM, reconciliation at 8 PM, renewal monitor hourly, billing calculator on schedule. All restartable, all observable.
Enforced at the service layer
Funders see only their merchants. Merchants see only their data. Platform admins see everything. RBAC via preHandlers, not by hiding routes.
See it run on your portfolio.
We'll walk through a deal end-to-end on a sandbox tenant — application, underwriting, contract, fund, debit, default, renewal.