Living Websites

name-collision gate: a pre-publish name check for Canada

Before a name goes public, someone should ask whether it is already taken. name-collision gate is a small, read-only check that asks the one registry it can query politely and automatically, the CIPO Canadian Trademarks Database, then hands you honest, hand-run checklist lines for the two registries it refuses to script. A relevant registered mark blocks the build; an unreachable registry blocks it too. Nothing about it guesses.

What it checks, and what it honestly cannot

A proposed name can collide in three different places in Canada, and only one of them is safe to automate. CIPO, the Canadian Trademarks Database, answers a plain HTTP JSON endpoint, so the gate queries it directly. The Ontario Business Registry sits behind bot mitigation and its own name search is paywalled; the gate treats that as a hard constraint, not a target to work around. MRAS, Canada Business Registries, forbids automated search in its own terms of service.

For the two registries it will not script, the gate does not stay silent and it does not fake a result. It prints a checklist line with a prefilled search URL and a place to log what a human found, every time, for every check. A gate that quietly skips a leg is worse than no gate: it looks complete while leaving a real gap open.

The CIPO leg is not a bare pass or fail either. It returns one of four verdicts, and the worst one across every query it fires wins.

Four verdicts, and INCONCLUSIVE is never a pass

The verdict names exactly what was found, not a guess about what it means.

VerdictMeaningcheck mode
PASSno relevant registered or filed markexit 0
FLAGrelevant mark, different or unknown Nice class, or dead marks onlyexit 0, human reviews
FAILrelevant live mark in an overlapping Nice classexit 2, blocked
INCONCLUSIVECIPO unreachable or throttled after a retryexit 2, blocked

Proven, not asserted

The test suite is 43 tests, run entirely against captured fixtures and injected fetch doubles: no test touches the live CIPO endpoint. They cover normalization, the query-expansion candidate list, verdict logic, the CIPO driver's retry and throttle behavior, the demo and real brand-class split, and the fail-closed manifest loader. It runs today as an internal check in our own publish pipeline, before any name we or a client considers goes public.

This page is one more instance of the same discipline. Every number quoted here traces to the local repo, and the page still passes this site's own no-fabricate gate, the sister tool that exists to catch exactly the kind of invented figure a page like this one could otherwise slip in.

Keep reading, then see the rest of the tooling.

name-collision gate runs today as an internal check in our own publish pipeline, checking a proposed name before it ships. It is not currently published as a standalone open source project.

See the rest of our honesty tooling

FAQ

Does it search Ontario or MRAS for me?

No, and it does not pretend to. The Ontario Business Registry sits behind bot mitigation and a paywalled name search, and MRAS forbids automated search in its own terms of service. The gate prints a hand-run checklist line with a prefilled URL for each one instead of silently skipping them or scraping past the block.

What happens if CIPO cannot be reached?

The check comes back INCONCLUSIVE, which blocks the same as a FAIL (exit 2). An unreachable registry is not evidence of a clean name, so the gate never treats a failed lookup as a pass.

Why does it fire more than one query per name?

The CIPO search field matches the full query literally, so a longer proposed name can mask a shorter registered mark it actually collides with. The gate expands each name into token-prefix queries, from the full phrase down to two tokens, capped at four queries per name variant, and takes the worst verdict across all of them.

What does it cost, and what does it need?

It runs internally as part of our own publish pipeline today, built on Node 18 or newer or Bun, with zero dependencies. It is not currently published as a standalone open source project.