Skip to content

Build phases (M1–M8)

Suggested sequencing for the Dropout Capital team.

Done-when

PhaseDeliverableDone when
M1 — FoundationSupabase project, enums, accounts/journals/ledger_entries + merchants/rails registries + RLS, account CRUD, posting function with double-entry validationA merchant + rail exist; a PAYMENT posts and balances move atomically; an imbalanced posting is rejected
M2 — Feesfee_rules + matching SQL + all fee formulas; finances_config + module flagsCorrect fees for PAYMENT/REFUND/DISPUTE/VOID/WITHDRAWAL/TOPUP, matching Tonder fixtures
M3 — IngestionListener adapters (Tonder + Menta), transaction_events/pgmq, orchestrator worker, idempotency, correlation IDs, transactions attempt store, webhooks/webhook_deliveries + Webhook ManagerA rail notification → posted journals + a transactions row + outbound webhook delivered; idempotent under redelivery
M4 — Settlements + Transfersapprove/confirm, journal tagging, settlements SOR + calculateForceDecrease, settlement query API, internal transfers, prior-period loadSettlement records persist with correct force_decrease; produces correct OUT + per-acquirer IN journals; transfers audited
M5 — Scheduledpg_cron rolling reserve + daily ledger; XLSX → Storage; snapshotsReserves release on schedule; daily statements generated per timezone
M5b — Settlement reports (FinOps)Cycle engine (T+0/T+1/T+2), settlement_merchant_config + settlement_runs, per-merchant statement → settlement trigger → Storage + emailA scheduled cycle settles each active merchant, files the statement, and emails FinOps — automated from day 1
M6 — Merchant frontendDashboard pages (Home / Acceptance & Conversion / Deposit Analytics / Fraud & Risk) with the metric catalog from transactions + journals; Realtime; RLS scopingMerchant sees only their entity, live; acceptance/APM/dedup rules match Tonder fixtures
M6b — Hosted CheckoutPayer-facing checkout embedding Tonder Lite SDK v2.0 + Skyflow elements; checkout_config branding; APM + 3DS states; correlation-id threading (gated on the Lite SDK v2.0 contract)A branded checkout takes a card/APM payment end-to-end, no PAN in Vecnet, attempt lands in transactions
M7 — Vecnet admin operator platformAdmin Panel + System Control Panel: all 11 modulesVecnet personnel configure merchants/rails/fees/webhooks and run the full ops loop; every mutation is audited
M8 — Reconciliation + hardeningcross-rail recon, DLQ handling, bulk reprocess, observabilityCorrelation gaps surfaced; bulk historical load works

Several phases are gated by open items — notably M6b (Lite SDK v2.0 contract) and the M3 Listener adapters (Tonder + Menta API contracts).

Vecnet — Build Spec v0.2 · Obsidian Terminal