Financial Services & Fintech

Every recommendation carrying its reasoning

An advice firm made the suitability basis a by-product of giving advice rather than a document written afterwards.

This is an illustrative composite. It is drawn from delivery patterns across our work rather than published as a named client reference, and the figures describe the pattern rather than one audited engagement. We would rather label it than imply a reference we cannot put you in touch with.

Size
55 staff
Platforms
AtlasForge

Context

A 55-staff advice firm with around 2,300 client relationships. Every recommendation requires a documented suitability basis, and that document was written after the meeting, from notes, by the adviser who gave the advice.

The problem

Suitability files were written up days later and varied by adviser. A file review sampled them and found gaps; closing a gap meant reconstructing a conversation from memory months on. The compliance team spent most of its time on reconstruction rather than on the reviews that would catch a problem early.

What we did

  1. 01Made the suitability basis a structured record captured during the meeting, not a document produced after it.
  2. 02Retrieved the client's own circumstances, objectives and prior advice, with each fact citing the record it came from.
  3. 03Drafted the reasoning, leaving the recommendation itself entirely to the adviser — the system never selects a product.
  4. 04Made an unciteable claim impossible to include: a line with no source does not render into the file.
  5. 05Gave compliance a review queue over complete files, so sampling targets risk rather than availability.

Architecture

Nothing here is a black box. You can read the architecture before you sign, and you own it after.

  1. 01CaptureStructured suitability record captured in the meeting, versioned, with every edit attributed.
  2. 02RetrievalJJ Atlas over the client's own circumstances and prior advice, tenant-scoped, citation mandatory per line.
  3. 03BoundaryThe system drafts reasoning and never selects a product, a price or a date. Enforced in the tooling.
  4. 04IsolationPostgres RLS deny-by-default; an adviser reads their own clients and cross-adviser reads return zero rows.
  5. 05ReviewA compliance queue over complete files, ordered by risk rather than by what happened to be available.

Results

The numbers the work closed against.

of recommendations carrying a cited suitability basis
100%of recommendations carrying a cited suitability basis

Basis: A structural constraint: a suitability line with no source record does not render, so an unciteable claim cannot reach the file rather than being flagged in it.

design target from advice given to file complete
9 days → same daydesign target from advice given to file complete

Basis: Nine days is the observed write-up lag. Same-day assumes the basis is captured during the meeting as a structured record rather than reconstructed afterwards.

product, price or date selections made by an agent
0product, price or date selections made by an agent

Basis: A structural constraint: the system drafts reasoning and has no write path to a selection. The count is a property of the schema, not of model behaviour.

client relationships in scope for migration onto the structured record
2,300client relationships in scope for migration onto the structured record

Basis: A scope figure: the firm's relationship count at the time of scoping.

Stack

  • Next.js
  • Supabase Postgres
  • Row Level Security
  • pgvector halfvec
  • Zod
  • Vercel

Does this look like your business?

Tell us what is slow and what it is costing. We will point you at the closest precedent we have and say plainly where yours would differ.

Scope it with us