SaaS · Compliance2026MonacoNext.js · Supabase

Trace —
sanctions screening,
engineered for Monaco.

A purpose-built SaaS for the Principality's obliged entities — 14 official sources, 129k+ PEPs indexed, 810k+ offshore entities, eight matching strategies, dated PDF attestations with cryptographic fingerprints, and passport MRZ OCR.

A digital service byBSS Digital Agency
0+
Official sources
0k+
PEPs indexed
0k+
Offshore entities
~0s
Per screening

Coverage — Monaco + 7 allied regimes

MC
EU
UN
FR
US
UK
CH
CA

The deliverable

A defensible PDF, every screening.

Each attestation embeds the source publication date, a SHA-256 fingerprint of the list used, and the structured outcome — independently reproducible from the day's JSON snapshot.

  • Attestation ID + timestamp
  • Subject identifiers (passport, DOB, nationality)
  • Source publication date + SHA-256
  • Per-match rationale (which strategy fired, why)
Sanctions screening attestation
TRC-2026-04-29-A47B92
Outcome
No match
Subject
Surname
DUPONT
Given names
JEAN MICHEL
Date of birth
12 / 03 / 1968
Nationality
FR · FRA
Source verification
Sourcegeldefonds.gouv.mc
Published2026-04-28 14:22 MC
Entries5,981 active
SHA-256a4f3b9c2…d871e3f4
Generated by Trace · tracemonaco.com · Page 1 of 2
Live at tracemonaco.com

The Challenge

Monaco's regulated entities had no native tool — only expensive global solutions that miss the local list.

01
No Monaco-specific tool

Obliged entities had to rely on global solutions (World-Check, RDC, LexisNexis) that ignore the Principality's National Asset Freezing List and price like enterprise contracts.

Coverage gap & overpaying
02
Audit trail was manual

KYC files needed dated, defensible proof of every screening — but most tools left it to the user to screenshot results, retype names, and hope nothing changed in the source list.

Compliance risk
03
Names don't match cleanly

Real client data is messy — diacritics, transliterated Cyrillic, inverted name order, legal suffixes, aliases. Naive string matching either misses real hits or floods the screen with false positives.

Missed hits or noise

The Solution

A Monaco-first SaaS — built end-to-end, from official source to defensible PDF.

We engineered Trace as four interlocking systems: a normalised in-process index of the Principality's sanctions list, a layered matching engine that handles real-world name messiness, a PDF generator that produces self-verifying attestations, and an MRZ OCR onboarding flow.

  • 8-strategy matching engine
    Exact, fuzzy (Levenshtein), token-set overlap, alias, Cyrillic transliteration, entity suffix tolerance, plus DOB and nationality disambiguation — every signal layered into a single confidence score.
  • Self-contained PDF attestations
    Each screening generates a dated PDF with the source list publication date, a SHA-256 hash, the entry count, and the structured outcome — independently reproducible from the day's JSON snapshot.
  • Passport OCR onboarding
    Tesseract.js targets the MRZ on TD3 passports — surname, given names, nationality, DOB, and passport number captured in seconds. Falls back gracefully to manual entry when lighting fails.
  • Daily ingestion from the official source
    A cron job hits geldefonds.gouv.mc every morning at 06:00 Monaco time. The list is normalised in-process — diacritics stripped, aliases split, dates parsed — and held in memory with a SHA-256 fingerprint.
Built around the National Asset Freezing List
Direct ingestion of the Monaco-published JSON — no third-party reseller, no licence layer, no stale aggregator data.
Sub-second screening
Pre-normalised in-memory index of ~6,000 active entries. Every strategy runs in parallel; results stream back before the user lifts their finger from the keyboard.
Reproducible results
Every attestation embeds the source's publication date and the SHA-256 of the JSON used. Anyone can re-run the screening against the same snapshot and prove the result.
French-first, fully bilingual FR / EN
Monaco operates in French. Trace defaults to French and offers parity-quality English. Match-rationale strings are emitted as i18n keys and resolved at render — never hard-coded.

Who it serves

Seven obliged-entity professions, one tool.

🏠Real estate
⚖️Notaries
👔Lawyers
Yachting
💎Jewellers
🏦Family offices
🏆Sports agents

The Results

A defensible compliance workflow — in seconds, not afternoons.

<1s
Per screening
In-memory normalised index returns confidence-scored matches before the user finishes typing.
100%
Reproducible attestations
Every PDF embeds source publication date and SHA-256 — a regulator can independently verify the screening.
Monaco-first
Designed for the Principality
Direct ingestion of the National Asset Freezing List, FR-default UI, and matching tuned to Monaco-typical client data.

Under the hood

A modern, defensible stack — engineered for compliance.

Next.js 15
App Router · RSC
TypeScript
Strict mode
Supabase
Auth · Postgres
pdf-lib
Attestation PDFs
Tesseract.js
MRZ passport OCR
Tailwind v4
Design tokens
Vitest
46 matching tests
Sentry
Error monitoring
Hostinger VPS
PM2 · Nginx
Cron + cache
24h auto-refresh
i18n (FR/EN)
Parity at render
SHA-256
Source fingerprint

Built by BSS Digital Agency

Trace is a digital service designed, engineered and operated by BSS Digital Agency.

From regulatory research to the matching engine, the PDF generator, the MRZ OCR pipeline, the Supabase data model, and the Hostinger VPS deployment — every layer of Trace was built in-house. We design, ship and maintain SaaS products end-to-end for Monaco businesses.

Web & SaaSCompliance & OperationsAI & AutomationMobile Apps

Need a SaaS engineered around a regulatory problem?

We design and ship compliance and operations software for Monaco businesses — from technical research to production VPS deployment.