What Amaea actually does.
Each system points back to a specific FCA rule. What it does, when it runs, and which paragraph it cites.
Client journey
Every client moves through three FCA-defined stages. Each stage carries its own document set, its own expiry windows, and its own audit-trail expectations.
- Doc types
- 17 tracked (fact find, suitability, ATR, AML CDD, Consumer Duty outcome, vulnerability assessment, T&C, PI cover, drawdown review, fee benchmarking, …)
- Stages
- Initial engagement · Ad-hoc work · Annual reviews
- Tracking
- Missing vs expired surfaced separately, with the audit-trail reason on each flag closure
- Adviser view
- Per-adviser breach + missing-doc counts, sortable
Consumer Duty (PS22/9)
Consumer Duty wants per-outcome evidence, per client, every year. Most firms can demonstrate two of the four. The audit fails on the missing two.
- Outcomes
- 4 per client per year: products & services · price & value · understanding · support
- Re-assess
- 12-month FG21/1 threshold enforced by nightly cron
- Export
- Board pack with four-outcome roll-up + year-on-year delta
- AI audit
- Prompt + response SHA-256 on any AI-drafted outcome justification
Annual review sweep
COBS 9.5 doesn't ask whether the review was late. It asks whether the reason it was late is sufficient. The sweep runs nightly and applies the actual rule test, not a date check.
- Runs
- Nightly · idempotent · cursor-paginated (resumes cleanly on interruption)
- Logic
- COBS 9.5 sufficiency test, not a date check. "Abroad three months" passes; "we forgot" doesn't
- Audit
- Prompt + response SHA-256, model version, timestamp on every AI decision
- Special category
- Article 9 UK GDPR data held in-process. Never logged, never sent to the LLM in the clear.
An assistant the FCA could audit.
Every answer writes a row to the audit log: prompt hash, response hash, model version, citations, timestamp. The same row the FCA reads if they ask what the model said on the day.
- Model
- Claude Sonnet 4.6 · retrieval-grounded, told to cite or refuse
- Corpus
- 11,645 chunks across Handbook + Final Notices + Dear CEO + Policy Statements + Thematic Reviews
- Per-call audit
- Prompt + response SHA-256, model version, request ID
- Tenant isolation
- pgvector + RLS. The database refuses cross-firm reads, not application code.
- Training
- Zero. API per request only; ZDR with Anthropic in progress
- Eval
- 50-scenario FCA gold set runs before every model cutover
RMAR auto-population
First quarter: an afternoon reconciling between Intelliflo and the spreadsheet you've been keeping. Every quarter after that: under an hour, end to end.
- Sections
- B · D · E · G · H pre-filled from live data
- Format
- CSV per section, ready for GABRIEL upload
- Cross-check
- Section B against DISP 1.6: 5-day acknowledgement, 8-week final response, FOS rights communicated
- Sources
- Complaint log · platform feed · PI policy schedule · roster table · T&C records
FCA publications, indexed the day they ship.
The FCA Handbook is not static. Final Notices ship weekly. Dear CEO letters land without warning. The corpus stays current via a daily cron; the AI assistant queries it on every call.
- Sources
- 150 FCA publications: Handbook, Final Notices, Dear CEO letters, Policy Statements, Thematic Reviews
- Chunks
- 11,645 indexed; every chunk carries source, date, and section reference
- Ingest
- Daily cron · Voyage AI embeddings · per-firm pgvector
- Refusal
- "I don't have a confident answer" is wired in. No fabricated citations
- Roadmap
- Per-firm impact analysis ("does this affect your book?"). Q1 2028.
Integrations
Reads the systems your audit trail is already scattered across. New documents arrive in the right client's record the next morning.
- Live
- Intelliflo · SharePoint. OAuth, nightly delta sync.
- On request
- Salesforce · Curo · Assureweb. Same OAuth + encrypted-token pattern.
- REST-based
- Dynamic Planner · ThreeSixty · Evidentli · DocuSign. Scoped, read-only by default.
- Sync
- Nightly default; on-demand pull available per integration
- Encryption
- AES-256-GCM at app layer; key in env var, not the database