Skip to content
Home
Changelog

Every change, dated.

The corpus grows in the open. New data, new sources, methodology, API and app releases — logged in reverse chronological order. The notes are written by hand; the ship log beneath them is read straight from git on every deploy, so it cannot quietly fall behind.

/01

Release notes

26 notes

Written by hand, so they cover the releases worth a paragraph — not every change. The newest note is dated 2026-08-06; 156 commits have shipped since. The complete record is the ship log below.

August 2026
  1. APPchangelog

    This page stopped being written from memory

    Measured on the live site: the newest note here was dated 2026-08-03 while 55 commits had shipped since — a page headed "every change, dated" that had quietly skipped three days of releases. The release log below is now generated from git history on every build, so no one has to remember to write it. These notes stay hand-written, and the page now says out loud how far behind them the log has run.

  2. APIsemantic

    Semantic search answers again — over part of the corpus

    Meaning-based retrieval had been dead since the vector index was dropped. It is back on an IVFFlat index over 634k embedded dossiers, and a query that took 42 seconds now returns in about 1.5. That is a partial layer, not the whole corpus, so /developers and the machine catalogue now say "partial coverage" rather than claiming the feature covers everything.

  3. SOURCEScorrections

    Three claims we could not defend came off the site

    The homepage led with a jurisdiction figure it could not support and credited HM Land Registry as a source we do not hold; it now leads with the 170 countries that carry real coverage. A dossier stopped shouting "directly sanctioned" when only a cluster sibling was designated, and cites each ownership hop instead.

  4. APPperf

    The Supabase SDK left the critical path

    221 KB of client SDK was welded into the entry chunk and downloaded on every route, including pages that never talk to the database. It is now loaded only where it is used.

  5. APPbrand

    A real labyrinth, and a serpent that threads it

    The hero mark is now a generated maze with a snake that actually solves it, on the logo, the SnitchScore badge and the homepage. It shipped twice before it rendered on production — a lazy-loaded component wedged hydration and the first two builds served an empty frame.

  6. DATAidentifiers

    UK and Polish company-number lookups resolved to nothing

    Searching by a Companies House number or a KRS number returned no match, every time, for both people and agents. The identifier resolvers were querying a shape the corpus never stored.

  7. DATA171.2M

    Countries and jurisdiction codes are now two different numbers

    The homepage said "342+ jurisdictions, worldwide coverage". Measured: the corpus carries 246 ISO-3166-1 country codes — of ~249 assigned — plus 93 subdivisions. Those 93 include every US state, Canadian provinces and UAE emirates, which are real incorporation jurisdictions, but also the USSR and Yugoslavia. Delaware belongs in a jurisdiction count; the USSR does not belong under "worldwide coverage". Headline stats now read countries; the code total stays available as the technical figure.

  8. SOURCESlicences

    Corrected four licence statements, including one on the trust page

    We described OpenSanctions as open and commercial to redistribute. It is CC-BY-NC 4.0 and we hold no commercial redistribution licence — our own source-of-truth file said so plainly while the marketing pages said the opposite. OpenOwnership was listed as CC0 and UK-only; it is ODbL share-alike and global. We also claimed to gate restricted data behind its licence, and no such gate exists in the code. All four now say what we can defend.

  9. DATAsitemap

    The pages that carry ownership data were hidden from search

    A sample of entities holding an ownership edge found 96.5% of them excluded from the sitemap, while millions of name-and-jurisdiction stubs were advertised in their place. The scoring pass only ever demoted; nothing promoted an entity that had gained an edge. It now walks the relationship graph in both directions and promotes what it finds — measured at 97% promotion rate on the first 57,000 scanned.

  10. APPsearch

    A failed search now says so instead of reporting no results

    When the corpus read failed, the API returned HTTP 200 with an empty hit list — indistinguishable from "this company is not in our records". A real outage read as a confident negative, to people and to the agents that consume the same endpoint. It now returns a transient error when nothing else can answer, and marks the result partial when the live registry carried the request alone.

  11. DATA97.7M

    Corpus re-baselined to 97.7M entities

    20.6M ownership and control links across 29 fused sources. The published figures had drifted ~11M behind the live graph; every count is re-derived from one live snapshot again — including the agent-facing surfaces (llms.txt, ai-plugin.json), which are synced by the same pass so a human page and a machine page can never disagree.

  12. APPpulse

    Pulse rebuilt around what the feed actually carries

    Two registries publish movements today — GLEIF (ownership and control) and Companies House (UK accounts). The feed now offers exactly those views instead of filters that would return an empty screen, folds the duplicated parent/ultimate-parent rows into one, and says plainly which movement types are wired but not yet publishing.

July 2026
  1. DATA59.6M

    Corpus re-baselined to 59.6M entities

    18.74M ownership and control links across 27 fused sources. Every count on the site derives from one live snapshot, so the honesty figures never drift.

  2. APPhubs

    Source & jurisdiction directories

    New /sources and /jurisdictions hubs document every fused registry, leak and sanctions list — licence and coverage on each — and cross-link into every entity dossier.

  3. APImcp v0.7.0

    Semantic search over the corpus

    The MCP server gains meaning-based retrieval — semantic_search and find_similar over BGE-M3 dossier embeddings — alongside the lexical tools. Eighteen tools in all.

  4. APPv0.1.3

    Biometric sign-in & refreshed apps

    Desktop, mobile and MCP builds refreshed to v0.1.3; device biometric (passkey) sign-in in beta; cross-browser magic-link sign-in fixed.

  5. DATA58.6M

    Corpus grown to 58.6M entities

    Fresh registry loads lift the graph to 58.6M entities and 18.74M ownership links across 26 fused sources. Every count on the site derives from one live snapshot, so the honesty figures never drift.

  6. APPIA

    Rebuilt footer, nav and workspace

    The footer is now four grouped columns with every page and policy reachable; Directory and Pricing joined the primary nav; the dashboard is a personal workspace (account, credits, watched movements) rather than a second search page.

  7. APPv0.1.2

    Desktop & mobile apps, with auto-update

    Signed Electron desktop build ships with background auto-update on Windows and Linux; a Capacitor mobile shell now runs alongside the web app.

  8. DATA54.2M

    Corpus re-baselined to 54.2M entities

    18.74M ownership links across 26 fused registries. Every count on the site now derives from one snapshot, so the honesty figures never drift.

  9. SOURCESOFAC · OFSI

    Sanctioned-asset owner-linking

    Sanctioned vessels, aircraft and crypto wallets from OFAC and UK OFSI now bridge to their beneficial owners, so a designation surfaces the network behind it.

  10. APPpricing v2

    Pay-per-report dossiers — €39 / €99

    Buy a single resolved dossier without a subscription. A free preview sits above the fold; the frosted-glass paywall gates only the assembled depth.

  11. APImcp v0.5.0

    MCP server v0.5 — agent-native corpus

    Twelve consistent tools for search, ownership traversal and cited dossiers, callable from any MCP client and published on npm.

  12. DATAchb-fin

    Companies House financials

    Turnover, profit, net assets, cash and headcount parsed from UK iXBRL accounts and shown as year-on-year figures on company dossiers.

  13. APPpoxi

    POXI engineering-paper rebrand

    A charcoal-and-green editorial design system: hard corners, mono section labels, and a plate for every claim with its source on the frame.

  14. METHODOLOGYresolve

    Cross-source resolution, three passes

    An identifier join, name-and-jurisdiction blocking, and a sanctions name-bridge collapse the same entity across registries into a single cluster.

/02

Ship log

665 commits

Read from git log at build time, not typed by hand. Every line is a commit that reached main, and main deploys to production on push. Subjects are printed as they were written. Work belonging to other brands, and anything naming a credential, is left out.

newest commit 2026-09-15generated 2026-09-1555 days · 665 commits
10 commits
  • featradio.pl podcast official-site discovery (creator miner)
  • fixthrottle DDG discovery (sleep on failure, 2 workers) to avoid IP ban
  • featadd creator contact miners (podcasts, linktree, DDG domains)
  • —Harden Resend import idempotency and close NIW/OPP repair
  • fixpreserve contact evidence in delta source URL
  • fixreject creator contact extraction artifacts
  • fixalign recovered contacts with delta provenance
  • —Harden Resend repair execution gates
  • featadd official club and creator recovery audit
  • —Add official media and Resend audit tooling
8 commits
  • fixpricing: kafle 'Coverage math' porownuja darmowe z platnym, nie dwa razy ten sam produkt
  • featpricing: wdrozenie cennika v3 z 24.08 — jedno dossier 29 EUR, Pro 99, Scale 499
  • fixmenu: panel na desktopie przestaje byc ciezki — kompaktowy pasek zamiast trzech pelnoszerokosciowych band
  • featnav: /ask wchodzi do nawigacji zalogowanego — po domknieciu sufitu wydatku
  • fixmenu: panel poziomo na cala szerokosc, plasko, bez kratownicy — uklad z Claude Design
  • choredesign-sync: konfiguracja + zapis DLACZEGO synchronizacja z Claude Design nie przeszla
  • fixdevelopers: JEDNA strona deweloperska — /mcp scalone i przekierowane
  • fixnav: JEDNO wejscie „Developers" + koniec pustych kolek w menu
23 commits
  • featescrow: Escrow Inbox przestaje byc makieta — polowa PRZYCHODZACA, firma sama sie weryfikuje
  • revertui: przywroc interfejs do stanu z 25.08 (394d585) — decyzja wlasciciela
  • perfhero: sztych maluje sie z HTML — koniec pustego pudelka na elemencie LCP
  • fixbrand: to multiply zjadal ryciny — zdjety, wszystkie plyty na alfe
  • perfbrand: cofnij regresje wagi, ktora sam wprowadzilem — 1145 kB -> 551 kB
  • fixbrand: napraw plyty u zrodla zamiast je podmieniac — obie grafiki wracaja
  • choreshiplog: dopisz commity z 2026-09-01 (generowane przez prebuild)
  • fixhome: jedna zepsuta plyta + ryciny nieprzygotowane do ciemnego motywu
  • fixcss: remove invalid tailwind arbitrary class that crashed compiler
  • fixui: restore frameless EngravingVideo on homepage and typographic mobile menu
  • fixtypes: align JurisdictionCoverage fields in EntityControl
  • fixbuild: remove BOM from mega-menu and update features grid
  • featui: add 12-language i18n switcher and Newscorp-style Mega Menu
  • stylenav: consolidate developers link, remove circle masks from menu emblems
  • featpdp,pricing,nav: promote People roster with ValueWall, overhaul Snitch AI pricing, clean header & hero badge
  • refactorlogin: redesign authentication workspace with modern UI, mode switcher, dynamic OAuth detection, and password toggle
  • featpricing: connect Investigator (\) and Business (\,900) directly to Stripe subscription checkout
  • fixpricing: ensure all included features render in crisp foreground text instead of greyed-out muted style
  • stylemenu: remove kratownica grid background for clean sleek theme-honest drawer
  • fixnav: simplify mobile drawer and navigation to core product routes
  • choreshiplog: update shiplog
  • featdevelopers,mcp: complete 24 tools reference, client configs for Claude/Cursor/Windsurf/Cline, and autonomous purchase flow
  • featapp: modernize pricing, restore Pulse and SnitchBoard, add UBO transparency, and refine analyst search
1 commit
  • fixhome: enforce strict sequential section indexing and build verification
1 commit
  • fixpdp: a person gets no dubious SnitchScore dial — verdict leads, not "34/100"
8 commits
  • fixpdp: the page opens with WHO + verdict, not a dubious score dial (mobile)
  • featmcp: purchase_dossier on the hosted agent surface — the wallet-buy loop, live to agents
  • featagent-channel: POST /api/public/dossier/{id}/buy — agent buys a dossier from the wallet
  • featpdp+aeo: render the FAQ visibly, not just as JSON-LD
  • featpdp+aeo: visible definition sentence under H1 — the answer-engine atom on 171M pages
  • fixpdp: score panel stops being a second store — kill the competing unlock CTA + embed
  • fixpdp: thin entity gets ONE action, not a scatter of off-page exits
  • featpdp: wire chapter seams + section rhythm — fix "wszystko sie zlewa"
2 commits
  • fixpdp+facts: a wall needs a door, and the corpus numbers match the live API
  • perfcost: starve the anonymous corpus scraper — /dossier was 97% of the Vercel bill
3 commits
  • featdatasets: /datasets — the machine face of the corpus, as a schema.org DataCatalog
  • feataipref: affirmative usage grant (Content-Usage: ai=y) — robots.txt + HTTP header
  • fixpdp: naprawa rozwalonej ściany-frost na mobile — seal band ściskał tekst do pionu
/03

How to read this

guarantees

Dated

Every entry carries the day it shipped. Data snapshots note the corpus size they baselined.

Sourced

New sources name their registry or leak. Coverage claims map to the provenance table on /trust.

Derived, not remembered

Corrections are appended as their own dated line, never edited over the original. The ship log is re-read from git on every deploy — nobody has to remember to update it.

See what shipped.

Search the corpus these releases built, or read how it is sourced and resolved.