All posts
·6 min read·#architecture#agents

Six agents, one harness — how the team actually works.

Treasury, Capital, IR + Books, AP, AR — separate UIs, separate jobs, but every action flows through the same propose / approve / sign spine.

We talk about Softmax two ways depending on the audience: as a team for ops buyers (“hire your AI back office”) and as a harness for technical buyers (“the AI harness for crypto-native finance”). Same product, two framings. This post is the second framing.

A harness gives structure to power. Raw AI is messy and unpredictable; a harness makes it useful, safe, and aimed.

The six agents

Each agent is a coherent set of services, prompts, and UI surfaces with a clear job description. They are not chatbots. They don't have human names or avatars or voices — that's a deliberate brand choice. The user hires a team, not a personality. The headline trio (Treasury / Capital / IR) does what only crypto-native autonomy unlocks; the foundation trio (Books / AP / AR) is the bookkeeping substrate that feeds them.

  • Treasury. Reconciles wallets across chains, deploys idle USDC into insured vaults within Safe-Module rules you signed once, rebalances stablecoins, fires runway alerts.
  • Capital. One cap table for equity AND tokens. Drafts SAFTs / SAFEs from templates and deploys on-chain vesting that mirrors the legal terms — the thing Carta / Pulley / capital.xyz can't do natively.
  • IR. Drafts monthly investor updates from real Books KPIs, tracks distribution, assembles board packs, curates the data room, tracks fundraising pipeline + term-sheet status.
  • Books. Bridges on-chain ↔ off-chain natively (DeFi, cross-chain transfers, vesting events, fiat ingestion). Classifies, reconciles, syncs to Xero or QuickBooks, closes the month.
  • AP. Inbox-as-source-of-truth. Forward bills to bills@inbox.softmax.finance — AI extracts with confidence, learns vendors, screens sanctions, proposes the payment.
  • AR. Issues invoices with card-or-any-token public payment links via Thirdweb (85+ chains), settles in USDC on Base, auto-reconciles back to Books.

What they share

The agents have separate dashboards, separate inboxes, separate prompts. They share four primitives:

1. The action ledger

Every money-touching event — “Bills extracted invoice INV-0042, 87% confidence”, “Treasury proposed $8,000 deposit to Morpho USDC vault”, “You approved”, “Wallet 0x71f… signed tx 0xabc…” — lands in one append-only table. It's the sacred audit trail accountants live in. Sortable, filterable, immutable. Every agent writes; no agent reads-then-acts on it (no race-condition surface).

2. The propose / approve / sign spine

The universal money-moving flow:

  • An agent proposes — writes a row to action_proposals.
  • You approve in the UI.
  • The harness constructs an unsigned transaction.
  • Your wallet signs (Safe, EOA, embedded — doesn't matter).
  • The harness watches the on-chain receipt, parses Safe ExecutionSuccess / Failure events, flips the proposal to executed/failed, logs everything to the ledger.

AP uses it for paying bills. Treasury uses it for yield deposits and rebalances. AR uses it for void / refund flows. Capital uses it for vesting deployments. Same architecture; different proposing agent. New agents (Compliance Officer in v1.5, Tax Accountant in year-1.5) plug into the same loop.

3. The LLM service abstraction

One lib/ai-service.ts exposes a typeddefaultModel() for extraction / classification (Claude Sonnet) and anarrativeModel() for the close packet narrative (Claude Opus). One config flag swaps the provider. The agents never talk to Anthropic directly — they request a model, get a model, run generateObject with their own Zod schema. Per-workspace LLM token budgets enforce in the same chokepoint.

4. Per-workspace learning

Every correction is data. When you reassign a bill's vendor on the AP detail page, the original AI-extracted name becomes an alias for the chosen counterparty. Future extractions auto-match. When you re-categorize a Books transaction, the correction becomes a confidence-1 anchor that shapes future classifications. The moat isn't the prompts; it's the corrections.

Why “harness” and not “agent framework”

Agent frameworks let agents do anything. A harness explicitly narrows the action surface to a small typed set, gates execution on human signature, and audits everything. The bigger the model gets, the more important the harness gets — capability scales with structure, not against it.

That's why the term shows up in the marketing. We're not selling raw intelligence; we're selling structured, auditable, signed-by-you intelligence.