Ainsworth Program — Roadmap

Cross-project status for the website, merchant portal, and ticketing system
Updated 2026-06-06 (Dropbox Sign FULLY LIVE in prod · website LIVE)
Phases 1-7 + Residuals shipped · Phase 7 slices in flight
Delivered / Live
In Progress
Ready / No Dependencies — can start now
Deferred / Blocked
Public Website LIVE ✓
✓ Done

Agent-focused site built (Next.js 16)

Four pages live: /, /agents, /merchants, /about. Positioning locked, compliance pre-flight integrated.

✓ Done

Launch polish

Favicon, OG card, Vercel Analytics, Resend-backed apply forms, /thank-you confirmation. Forms verified delivering to mark@.

✓ Done

Jeff's review — approved

Positioning + content signed off 2026-05-27.

✓ Done

Vercel project moved out of QuickRefund

Project relocated to Mark's personal Vercel ownership before the domain swap.

✓ Done

ainsworthpayments.com is LIVE

Shipped 2026-06-06. Domain now points at the new Next.js site; old static page retired. Closed workstream.

Merchant Portal Phases 1-7 + Residuals shipped

✓ Shipped — production

✓ Done

Phases 1–4 — foundation

Auth (magic-link, AES-256-GCM sessions, 5 roles), Postgres + PII encryption, Tier 1/2/3 intake, dashboard, uploads, admin flow. In production at merchants.ainsworthpayments.com since 2026-05-17.

✓ Done

Phase 5 — canonical-schema MPA generation

Full loop verified end-to-end in prod: signup → 9-step canonical wizard → admin generates filled MPA → send-for-signature → embedded Dropbox Sign → webhook finalize → signed PDF auto-links to I.1 checklist. Banks wired: Merrick, Maverick/TSYS, Synovus, PB&T.

✓ Done

Phase 6 — partner financial reporting

ISO residual portal shipped 2026-05-30. Single + bulk entry, month/range/CSV views, edit + list pages, atomic CTEs with diff-aware audit. Dogfooded in prod against ATR + QuickRefund books.

✓ Done

Phase 7 — Utah automation tracer + docs-ready

Tracer shipped: extraction → 7 deterministic rules → readiness verdict (GO/HOLD/NO-GO). Docs-ready workflow trigger shipped 2026-06-04 (email Mark+Jeff inline + iMessage to Mark via local launchd poller every 15 min). 57 fixture tests.

✓ Done

Synovus + PB&T MPA generators

Corduro/Priority template family — 497-of-499 fields shared via corduro-base.ts. Full e-sign loop verified in prod 2026-06-03. Iron Peak's path to bank submission once he finishes the wizard.

✓ Done

Residual Automation tracer

Schema + entry pivot + agent CSV + colorblind-safe PDF shipped 2026-05-30. Agent statement = net interchange + net fee × split %. Full vertical dogfooded in prod.

✓ Done

Admin intake card + canonical migration (this week)

"Application intake" status card on admin merchant page. Migration tool moved 4 merchants from legacy → canonical (Iron Peak, Deep Water, Alpha Peptides, test). 2 legacy remaining by design (Enhanced Wellness, Paragon — already transcribed).

▶ In flight

▶ In Progress

Phase 7 — remaining slices

Specced but not yet built: external re-upload nudges (draft-and-queue), Utah LLM judgment pass + standards.ts, scheduled time-based sweep, daily digest, bank-match sheet, auto-MPA trigger.

Dependencies: auto-MPA trigger slice waits on nothing (Phase 5 is shipped)

○ Ready — no dependencies

⏸ Blocked / held

⏸ Blocked

Esquire MPA mapper

Schema reconciliation can't start without a fillable Esquire PDF. Need to chase Esquire for one.

Blocker: Mark/Jeff to request fillable PDF from Esquire
✓ Done

Dropbox Sign — FULLY live in production

Activated + cutover 2026-06-06. API app approved for production, domain registered (merchants.ainsworthpayments.com), app-level webhook verified ("Hello API Event Received" handshake passed), DROPBOX_SIGN_TEST_MODE=false set in Vercel prod and redeployed. Next send-for-signature creates a real prod signing request (no test-mode banner).

⏸ Held

Residual: CSV ingest connector

Next residual-automation slice — input automation (currently admin enters by hand). Framework first, then per-bank mapping.

Blocker: needs a real upstream CSV/Excel export sample
⏸ Held

IRIS v1.5b — push side

Three numeric IDs still needed (Tab ID, Label IDs, owners catId). All API-discoverable during v1.5a build — Aaron email is fallback only.

Dependencies: v1.5a built first (gives auth to self-serve discovery)
⏸ Held

Phase 6 deferred: PDF statement parsers

Corduro / TRX parsers — highest-leverage Phase 6 next step. Reuses Phase 7's lib/utah/extract.ts primitive.

Blocker: sample PDFs from Jeff
Ticketing System Deferred by design
▶ In Progress

Planning in Co-Work

Persistent project home in Co-Work. Reads PORTAL_CONTEXT_FOR_TICKETING_PROJECT.md. Resolves 9 open questions → produces PLAN.md.

Dependencies: none for planning
✓ Done

Handoff doc prepared

Context dump at Ticketing System/PORTAL_CONTEXT_FOR_TICKETING_PROJECT.md for the Co-Work session to read cold.

⏸ Build Deferred

Ticketing v1 build

Merchant + partner support tickets, role-isolated views, reuses portal's notification + UI primitives.

Trigger gates (all must be true):
1. Phase 7 notification slice fully shipped
2. All active phases at clean committed state
3. At most 1 other portal build session active
Forcing date: reopen on June 15, 2026 if not all met
✓ Done

Discoverability nudge (related work)

"Invite a teammate" inline nudge on /dashboard for primary contacts with no collaborators. Retires once they invite anyone.

⚠ Action items requiring Mark (not coding)

These are blockers that no amount of engineering will clear — Mark needs to chase the artifact or sign a contract.

Dependency map — what's free vs. what's blocked

Website + Phases 1-7 + residual tracer all shipped. Remaining free work is incremental — additional bank mappers, additional integrations, and new feature slices.

No dependencies — can start anytime

  • Phase 7 remaining slices (LLM judgment, nudges, scheduled sweep, daily digest, bank-match, auto-MPA trigger). → Phase 5 stable, so auto-MPA-trigger slice is now also unblocked.
  • Phase 6.5 (agent agreements). → Newly unblocked. Phase 5 MPA-gen pattern is in production.
  • Oakville MPA mapper. → Form on hand. ~1-2 hours.
  • IRIS v1.5a (webhook listener). → Aaron's answers cleared the path.
  • Maverick API integration. → Account activated, research done.
  • Ticketing planning in Co-Work. → Planning has no build dependencies.

Has dependencies — needs a gate to open first

  • Esquire MPA mapper. → Needs fillable AcroForm PDF from Esquire.
  • Phase 6 PDF parsers. → Needs Corduro / TRX sample PDFs from Jeff.
  • Residual CSV ingest. → Needs upstream CSV/Excel sample.
  • IRIS v1.5b (push). → Needs v1.5a built first (provides API auth for self-serve ID discovery).
  • Ticketing build. → Needs Phase 7 notification slice shipped + clean shared-file state + lower concurrent build pressure. June 15 forcing date.

Recommended next — prioritized

Ordered by leverage × ease. Each item explains why it earns its rank.
1
Continue Phase 7 active slices ongoing Notification + nudge slice also unblocks the Ticketing gate. LLM judgment + scheduled sweep are the highest-leverage automation gains. Already running in its own session.
2
Phase 6.5 — agent agreements 4-5 days Newly unblocked (Phase 5 stable). Closes the agent onboarding + payment loop. High revenue leverage. Plan + spec already in repo.
3
Oakville MPA mapper 1-2 hrs Quick win. Form on hand. Adds the 5th bank template and removes "Oakville-placed merchants need manual MPA" from the operations list.
4
IRIS v1.5a — webhook listener ~1 week Buildable. Validates the full integration stack (API key, IP allowlist, signing). Sets up v1.5b push-side. Hagen is the primary API-banked path; this opens the lane.
5
Maverick API integration ~1-2 weeks Second of two API banks. Replaces the PDF pipeline for Maverick-placed merchants. Account active, research done — just needs a focused build slice.
6
Chase the 4 Mark-action blockers phone calls / a credit card Esquire fillable PDF, Dropbox Sign paid plan, Corduro/TRX statement samples, residual export sample. Each one is a 2-min decision that unblocks ~1-2 weeks of work later.
7
Ticketing build (when gates open) ~1-2 weeks Trigger fires when Phase 7 notification ships + workload allows. June 15 forcing date if not earlier.
8
QBO payout integration ~1 week The natural follow-on to Residual Automation. Approval flow → QBO export. Waits on the CSV ingest connector for the input half to be automated.

Engineering hygiene — known deferred issues

Items that should land eventually but aren't blocking anything. Tracked so they don't get forgotten.

Auth / sessions

  • Session revocation on user removal Pre-existing app-wide gap. Removed users keep API access until 7-day cookie expires. Fix is per-request DB revalidation. Covers merchant_collaborator and partner_admin removals.
  • Email-change after sign-in Same root cause — gated to never-signed-in users until session revocation lands.

Repo / infra

  • Repo lives on iCloud Desktop iCloud sync creates * 2.tsx / * 2.ts duplicates (visible in every git status since 2026-05-19). Fix once by moving repo off ~/Desktop/. .gitignore now masks most of them.
  • Cross-surface dedup Date utils ↔ statements.ts, checklist-def ↔ nudge route. Deferred as a coordinated pass post Phase 7 review.

Wizard / data

  • Wizard step 2.6 — id_date_issued not collected in UI Field is in the canonical schema + DB, preserved on edit, but no UI input. Add when a sponsor bank flags it as required.
  • Free-text rendering safety card_types_not_accepted / refund_policy_description / product_storage_location in PDF fill + admin views must use safe text APIs (not raw HTML). Flagged at every commit.

E-sign

  • Dropbox Sign finalize webhook error (2026-05-24) One ALL_SIGNED webhook 500'd during dogfood. Status stuck at 'signed', no Download button. Likely test-mode PDF retrieval or Blob put. Next-session triage: re-run the loop, capture full stack. The affected row can be manually fetched from Dropbox Sign UI.

Out of scope (v1) — deliberate decisions

Items deliberately excluded from v1. Documented so future-Mark knows this was a choice, not an oversight.

Product surface

  • Mobile apps Web-only for v1. Revisit if/when usage patterns demand it.
  • Multi-language English-only v1.
  • Card-present / physical merchant intake v1 wizard is e-commerce only. Card-present columns + intake reserved for Phase 2.

Integration

  • Direct submission to sponsor bank portals (PDF banks) Out of v1 — admin submits to the bank manually. API banks (Hagen via IRIS, Maverick via onboarding API) auto-submit.
  • KYB lookup provider call Data model wired, provider call deferred to v2.

External

  • Fintech-compliance attorney review Revisit before scaling beyond v1 volumes (10-20 apps/month → bigger).

Killed (not deferred)

  • Merchant-facing statement view Killed during Phase 6. The data is agent-economics (net→split→residual), not a merchant statement. Merchants get the real thing (volume/rate/chargebacks/reserves) from the processor.

Living docs — where the canonical content lives

Source-of-truth documents for each surface area. Refresh these, not the roadmap, when implementing a change.

Notion-synced handbooks

  • PARTNER_HANDBOOK_v1.mdAinsworth Payments root
  • PORTAL_HANDBOOK_v1.mdAinsworth Payments root
  • TECHNICAL_DOC_v1.mdAinsworth Payments root

In-repo operating docs

  • docs/PROJECT_STATE.mdcanonical project state
  • docs/POSITIONING_STRATEGY.mdaudience + pillars
  • docs/AGENT_DASHBOARD_SPEC.mdUX spec
  • docs/BANK_MPA_OPERATIONS.mdrunbook for new banks
  • docs/RESIDUAL_AUTOMATION_PLAN.mdPhase 8 plan
  • docs/PHASE_7_BUILD_SPEC.mdUtah automation
  • docs/PHASE_6_5_AGENT_AGREEMENTS_PLAN.mdnext workstream

Planning docs (Merchant Onboarding/)

  • CANONICAL_APPLICATION_SCHEMA_v2.md7-bank reconciled superset
  • STEP_B_PLAN.mdPhase 5 sequence
  • IRIS_INTEGRATION_v1.5.mdHagen API spec
  • MAVERICK_INTEGRATION_v1.mdMaverick API research
  • ESIGN_OPTIONS_v1.mdDropbox Sign decision
  • PRD_Ainsworth_MerchantPortal_v1.mdv1 PRD
  • DEVILS_ADVOCATE_v1.mdstress-test of v1.0