February 12, 20260.1.1Calmony Sanctions Monitor
v0.1.1 — feat: core screening engine — people, sanctions, matching, reviews
Release v0.1.1: Core Screening Engine
12 February 2026
What changed
- Manual person entry (
/dashboard/people/new) — add individuals with name, DOB, nationality, and reference ID. Each person is screened instantly on submission. - OFSI sanctions list integration (
/dashboard/sanctions) — sync the OFSI consolidated CSV, parsed and versioned automatically. Batch inserts of 100 entities at a time. - Fuzzy name matching engine — Jaro-Winkler, Levenshtein, token-sort, and token-set similarity. Handles reversed names, diacritics, and aliases. Default confidence threshold: 0.82.
- People list management (
/dashboard/people) — paginated table with search, status filtering, sorting, and bulk delete. - Match review queue (
/dashboard/matches) — review pending matches with side-by-side comparison, confirm/dismiss/investigate actions, reviewer notes, and OFSI reporting guidance for confirmed hits. - Audit trail — every create, delete, screening, and review action logged. GDPR deletion endpoint at
/api/people/gdpr-delete. - CI workflow added for build verification on push and PR.
Why it matters
This is the foundational screening pipeline. You can now add people, screen them against the live OFSI list, review matches, and maintain a complete audit trail — the core loop needed for sanctions compliance.
Technical notes
- 6 new database tables:
people,sanctions_list_versions,sanctioned_entities,matches,match_reviews,audit_log - All API routes are authenticated via Clerk and scoped to user ownership
.env.exampleadded with required environment variables
Release Notes
PR #9 merged successfully ✅
- PR: "feat: core screening engine — people, sanctions, matching, reviews" was squash-merged into main (sha: 3cbfdafd)
- Changes: 20 files changed, +3,115 / -24 lines — delivering the complete core screening engine including manual person entry, OFSI sanctions list integration, fuzzy name matching engine, people list management, match review queue, full audit trail, GDPR compliance, and CI workflow.
Release creation: Tag v0.1.1 already exists in the repository (likely from a prior attempt), so the create_release call returned a validation error ("already_exists"). The PR merge itself completed successfully. If the existing v0.1.1 release needs to be updated or recreated, the old tag/release would need to be deleted first.