Anonymized case study / Capital markets

An overnight AI pipeline for a capital-markets advisory firm

Every advisor carried a book of clients across scattered notes, tasks, transcripts, and a CRM, and lost real time to the admin between meetings. I built the cockpit, the client portal, and the overnight pipeline that turns each meeting into a review-and-approve step by morning, without ever sending a word the advisor did not approve.

advisor cockpit + client portal 5 hard invariants 78 logged product decisions mock-first, 25-client seeded demo
01The problem

The client relationship lived in six places, and the admin never ended

At an independent capital-markets advisory firm, each advisor runs a book of clients through a structured, multi-month program, meeting each of them on a recurring cadence. The record of every one of those relationships was spread across spreadsheets, a shared drive, call transcripts, email, and the CRM that is supposed to be the system of record.

The cost was the admin around each meeting. Before a call, an advisor reloaded the client's whole situation by hand across those systems. After it, they wrote the notes, split out who owed what, and sent the follow-ups. Every week, the open tasks were copied by hand into the next week's tab, one of the biggest time sinks in the whole workflow. The firm's own stated goal for the project was simple and specific: give the advisors their hours back.

Per-client spreadsheets
Shared drive
Call transcripts
Email threads
The CRM
Manual task carry-forward

Six systems, reconciled by hand, around every meeting.

02What I built

An advisor cockpit and client portal over an overnight pipeline

Two surfaces sit on top of one engine. The advisor gets a cockpit that holds the whole book in one place. The client gets a clean portal. Between them runs an overnight pipeline: it takes each meeting's transcript and, by morning, has drafted everything the advisor used to write by hand, queued behind a single approval gate.

INPUT
Meeting transcript
Pulled from the recorded call after it ends.
OVERNIGHT
The pipeline drafts
A An internal advisor summary
B Tasks, split by owner
C Client messages, in the advisor's voice
D Detected wins
E SOP-based quality feedback
BY MORNING
Drafts queue
Everything waits behind a human approval gate. Nothing is sent, nothing is visible to a client, until the advisor approves it.

The advisor walks in, opens the queue, and reviews. Approve, edit, or reject. The work that used to take a block of admin after every call is now a few minutes of reviewing drafts that already exist.

The pipeline does the drafting. The advisor keeps the decision.
03The invariants

Five rules the system is never allowed to break

An AI that drafts client-facing messages in a regulated relationship has to be safe by construction, not by good intentions. Five invariants held across the entire build, and every design decision was checked against them.

01
Nothing sends without explicit advisor approval
Every outbound message passes through the gate. There is no auto-send path anywhere in the system.
02
A client can never read an unsent message
Drafts live entirely on the advisor's side of the wall. The portal cannot surface anything that has not been approved and sent.
03
Every extracted claim carries a verified source quote
The AI does not assert anything it cannot point to. Each extracted fact links back to the exact line in the transcript it came from.
04
Gaps are flagged, not filled
When the transcript does not support a conclusion, the system says so. It never invents the missing piece to look complete.
05
Drafts are in the advisor's voice, and visibly AI-assisted
A standardized core, personalized per advisor: their voice, their SOPs, their templates, their cadences, and always marked as a draft.
04How it was built

Demoable end to end without touching a single client system

The integrations, Zoom, the CRM, the drive, calendar, and email, are all flagged adapters with mock implementations behind them. That let the whole product run on a deterministic seeded demo of twenty-five clients, so it could be shown and tested top to bottom without reaching into anyone's real data. The riskiest real-world join, matching a recorded meeting back to the right client, was named as the top build risk and designed around from the start.

78
logged product decisions, D1 through D78, tracing every call
25
client deterministic seed, demoable end to end
5
mock-first adapters: Zoom, CRM, drive, calendar, email
E2E
Vitest and Playwright across the flows
AppNext.js and TypeScript, advisor cockpit and client portal
DataDrizzle ORM and Postgres
TestingVitest and Playwright, end-to-end
Integrationsflagged mock-first adapters for Zoom, CRM, drive, calendar, email
Demodeterministic 25-client seed, no real client data required
05Outcome

Per-meeting admin becomes a review-and-approve step

The notes, the tasks, and the client drafts that an advisor used to produce by hand after every meeting are waiting for them in the morning, already drafted, gated on their approval. The firm's stated success metric for the engagement was advisor hours saved, and the per-meeting admin is where those hours were.

~15 min
saved per meeting on notes, tasks, and drafts

The admin around each meeting collapses to reviewing pre-drafted work. Across a book of clients and a weekly cadence, that is where the advisor's time was going.

Basis: documented current-state workflow, 5–15 min of prep plus 5–10 min of wrap-up per meeting, collapsed to a review-and-approve step. The client's stated success metric is advisor hours saved. This is a derived per-meeting figure with its basis stated, not a client-outcome claim.
The hard part was not the drafting. It was the gate that guarantees nothing reaches a client the advisor did not sign.
How I design these systems → Back to hamz.ai