All Posts
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.example added 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.