← All work

Case study · Production deployment · Financial operations

Velocity Platform

A complex financial workflow translated into one production platform: signup, checkout, trader accounts, realtime market data, risk enforcement, payouts, and the internal back office, designed, deployed, and operated end to end.

Product type
Financial operations platform
Status
Operated in production, May to July 2026
Role
Founder, system architect, and sole engineer
Timeline
Designed, launched, and operated during 2026
Operating context
Customer-facing product and internal operating system
Registered users
86 during the operating period
Major systems
Payments, trading data, risk, payouts, lifecycle automation, CRM, and communications

The operating problem

A futures evaluation business sells a simple promise: pay for an evaluation, trade within the rules on live market data, get paid if you succeed. Operating that promise is not simple. Checkout, provisioning, live trading, risk enforcement, payouts, affiliate tracking, communications, and internal administration all have to agree about what is true at any moment.

Run that on disconnected vendor portals and spreadsheets, and every gap becomes operational risk: a paid customer without an account, a breached account still trading, a payout reviewed against stale numbers. The hard part was not any single screen. It was keeping one reliable operational state across money, accounts, and live decisions.

The product

Product workflow

The lifecycle one platform kept consistent. A workflow view, not an interface.

For traders

A dashboard built around the evaluation: live balance and performance, the objectives governing the account, progress toward qualification, and clear signals when a rule was at risk, with purchases and email in the same place.

For operators

An internal console over the same data: account operations, payment status, lifecycle controls, payout review, risk and rule administration, email and retention workflows, affiliate management, and the audit trail behind privileged actions.

Admin command center

Velocity admin Command Center showing revenue, trader accounts, pending review and payouts, risk flags, platform health, revenue trend, account outcomes, a daily operations brief, and recent accounts, populated with synthetic data
One operating view for revenue, accounts, risk, payouts, and the day's priorities.Synthetic data

Trader dashboard

Velocity trader dashboard with total balance, net profit and loss, portfolio performance chart, active account summary, live trades, and recent risk activity
The trader's daily view: balance, performance, live trades, and rule activity.Anonymized data

Account detail and objectives

Velocity trader account detail showing net profit and loss, trading objectives with drawdown and profit target progress, account balance with floor tracking, performance score, and a monthly performance calendar
Objectives, drawdown floors, and qualification progress on one screen.Anonymized data

What I owned

I designed, built, deployed, and operated the platform supporting the business: product definition, interface design, application architecture, the data model, backend services, the payment and trading-data integrations, risk and lifecycle logic, internal tooling, deployment, and incident response. It was not handed off after launch; I was responsible for how it behaved when customers, money, and live decisions moved through it.

AI coding agents accelerated implementation inside a constrained workflow: repository context (CLAUDE.md, an extensive architecture reference), scoped task plans, diff review, targeted tests, and production verification. The decisions and the accountability stayed human.

The systems inside the platform

Payments and billing

Tokenized checkout, recurring billing, entitlements, and webhooks backed by a durable event ledger.

Provisioning and lifecycle

A six-step provisioning state machine and one shared definition of account state, purchase through archive.

Trading data and risk

A dedicated service projected the vendor's live stream into Postgres and drove rule monitoring.

Payout operations

Qualification rules as pure functions, amounts frozen at creation, and an operator review workflow.

Communications, retention, and CRM

Transactional and campaign email, automations, and a CRM view over platform data. Velocity Intelligence (VI Pulse, Sentinel, Debrief) added AI-assisted trader analysis; VELOBOT automated community operations.

Admin controls and auditability

Role gates enforced at the edge and per route, an append-only audit log, and read-only forensics scripts.

Retention intelligence

Velocity Retention Intelligence screen with trader health scores, behavioral signals, at-risk rankings, and a signal breakdown, populated with synthetic data
Behavioral telemetry turned into a ranked retention worklist for operators.Synthetic data

Email hub

Velocity Email Hub dashboard with totals for sent, failed, transactional, and campaign email, delivery rate, and a recent activity feed of campaign and automated sends
Transactional and campaign email with delivery health and per-message history.Synthetic data

Trading rules administration

Velocity trading rules administration screen showing a funded-account rule with drawdown mode, trading hours, user risk management settings, and the raw rule configuration
Risk parameters and trading controls managed as first-class configuration.Anonymized data

Engineering decisions that mattered

Webhooks as an idempotent ledger

Payment events are durable state transitions, not disposable callbacks.

Every webhook lands in an events table keyed by a content hash of the raw body, so duplicate deliveries become no-ops instead of double-charges. Processing runs off the request path, with an inline fallback and replay sweeps.

ResultRedelivery, retries, and outages could not corrupt payment state.

Pure decision kernels

Eligibility and rule logic lives in pure functions, separated from the routes that gather data.

Payout eligibility, entitlements, affiliate attribution, and lifecycle state are deterministic functions: readable, reusable, testable without mocking infrastructure.

ResultThe most consequential logic is the most tested and the easiest to reason about.

Money frozen at write time

Monetary facts are captured at the moment of decision, never recalculated from changing state.

Payouts store amounts in integer cents at creation, and affiliate commission rates are snapshotted at conversion. Changing a configuration later cannot rewrite what was decided.

ResultFinancial history stayed stable, auditable, and defensible.

One lifecycle definition

Account state has exactly one derivation, shared by every surface.

State was originally computed inline at five render sites, and they drifted. It became a nine-variant discriminated union with a single derivation function and a documented rule about allowed inputs.

ResultDashboards, jobs, and operator screens stopped disagreeing about what an account was.

PostgreSQL as the system spine

Critical state, constraints, security, and financial records live in one relational database.

Schema as timestamped migrations, row-level security on user-facing tables, transactions around state transitions, realtime publications for live dashboards. Services stay stateless; Postgres holds the truth.

ResultOne shared source of operational truth.

Architecture

One web application served both experiences; everything slow, streaming, or scheduled ran outside the request path.

Responsibility zones. Requests flow from experiences through the application into data; async services and external providers connect through queues, streams, and webhooks.

The payment event path

How a payment event becomes durable state. Duplicate deliveries die at step two.

What failed in production

Launch day broke realtime

The launch-day schema cutover dropped the logical-replication publication that live dashboards depended on: balances froze while money and trading kept moving. The exact production migration path had never been rehearsed against the launch baseline. Diagnosed from replication state, restored the same day by migration, written up. The durable change: schema-drift logging and a launch checklist runbook.

The promo-code race

A read-then-write usage counter let a promotion code be redeemed twice under concurrency. The fix: atomic reserve, commit, and release SQL functions, with the same compare-and-set pattern now guarding recurring-billing retries.

The lasting habit from both: production questions get answered by read-only forensics scripts, not by clicking around a live financial system.

Outcome

Velocity launched publicly in May 2026 and ran the firm's operations through July: 86 registered platform users, real purchases, evaluations on live market data, payout reviews, and support, all through one platform, with financial and account decisions leaving durable records.

The evaluation business was wound down in July 2026 because of liquidity and operating constraints, and the company began pivoting toward software products. The software did what it was built to do through the whole operating period; the wind-down itself ran through the platform's own lifecycle machinery, with new purchases disabled cleanly.

What I would improve next

CI with the existing test suite as a merge gate, instead of local runs and push-to-branch deploys. Coverage beyond the pure decision kernels, especially the heavy admin surfaces. A synthetic-data staging environment that rehearses exact production migrations, which is what the launch-day incident called for. Earlier separation of a few service boundaries that grew inside the web application. Each is scoped by having operated the system, not by hindsight alone.

Supporting technical detail

Platform shape and scaleMonorepo workspaces and the numbers behind this page

The platform is a four-workspace Turborepo monorepo: the Next.js web application (trader and admin surfaces plus the API layer), a worker service for queued jobs, a realtime service consuming the vendor's market-data stream, and a shared package holding typed queue contracts, the vendor API client, and lifecycle logic.

For scale context only: the web application exposes 237 API route handlers, the schema spans 83 tables under 69 active migrations with 120 row-level-security policies, and the history is 878 commits on the main branch, merges included. The counts matter as a proxy for the surface area designed, built, and operated, not as an argument by volume.

Security controlsHow money and identity data were protected
  • Card data never touches the server: checkout uses client-side tokenization, and the backend sees payment nonces only.
  • Tax IDs are encrypted at rest with AES-256-GCM under versioned keys, in a separate table, with a rate-limited reveal path.
  • Internal service-to-service calls verify an HMAC service token with constant-time comparison.
  • 21 distinct rate limiters cover checkout, auth, AI, webhooks, and public endpoints.
  • Strict security headers with an enforced CSP in production, and Sentry across all three services with request-correlation IDs.
  • An append-only admin audit log records privileged actions.
Background work and scheduled jobsWhat ran outside the request path

Eight typed BullMQ queues with Zod payload schemas carry webhook processing, notifications, certificate generation, account syncs, and resumable email campaign sends. Ten Vercel cron jobs plus worker-scheduled crons, gated by an endpoint allowlist, handle rollups, replay sweeps, and health checks.

Testing, deployment, and known gapsWhat was solid and what was honestly missing

74 targeted test files exercise the pure decision functions (payout eligibility, queue payload schemas, webhook signature verification) as plain node scripts, without a test framework. Deployment is Vercel for the web application and Railway for the worker and realtime services (multi-stage Docker, non-root) with staging and production branches. The honest gaps: no CI pipeline, no coverage measurement, and largely untested heavy UI surfaces. Those would be the first fixes with a second engineer on the team.

Velocity Intelligence

Velocity Intelligence analysis view with pattern analysis of the author's own trading, market outlook panels, and live insight cards
AI-assisted trade analysis over real account data, here reviewing my own trading.

VI Pulse

VI Pulse performance scoring screen with a pulse score, psychology, plan adherence, risk management, execution, and consistency sub-scores, and AI commentary
Versioned-prompt scoring across psychology, adherence, risk, and consistency.