PROJECT · active
Enacted
Every change to Canadian law, in plain English: daily diffs of nearly 9,000 Ontario and federal regulations and statutes, with AI summaries that are never allowed to invent a fact.
Next.js · Anthropic API · Vercel Blob + Cron · Resend · Justice Canada XML · BC CiviX API
This week · 9 sectors
Legal change is a domain where being wrong is expensive, so the parts that must be right are never left to a model.
What it is
Enacted watches Canadian law change. Ontario alone files roughly 500 regulations a year and continuously amends its statutes; the federal government consolidates its corpus every week or two. All of it publishes as legal text that almost nobody operational reads, so businesses usually find out about a rule change from their lawyer, an association memo months later, or a fine. Enacted checks every consolidated Ontario regulation and statute daily and git-diffs the entire federal corpus on every Justice Canada update, computes the exact textual difference when anything changes, and publishes a plain-English explanation of what changed and who it affects, every item linked to the official source.
The architecture position
This is the pattern I build professionally, applied as a public good: deterministic where it matters, AI at the edges. A change event starts as a fact from the official index, the diff between two consolidated versions is computed code, and only then does a model get involved, summarizing the computed diff and nothing else. A citation gate checks every summary before publish: if the model introduces a regulation citation or a date that is not present in its input, the summary is rejected and the page renders the raw diff instead. On launch day the gate caught exactly one fabricated-citation attempt out of 120 summaries. That one rejection is the whole argument for the architecture.
What I built
A pipeline that polls e-Laws daily through its JSON API at a respectful crawl rate, reconciles version histories, normalizes Word-exported legal HTML into diffable text, and computes unified diffs with section detection. A static site with permanent change pages, weekly digests grouped into thirteen industry sectors, and a methodology page that states plainly what the system can and cannot catch. A weekly email digest with double opt-in and sector-level summaries. The whole product runs on pocket change: under ten dollars a month of model spend at steady state.
What broke and what I learned
The official bulk dataset for Ontario regulations turned out not to exist, the data portal entry is marked cabinet-confidential. The path in was reading the e-Laws web app's own network traffic and finding the undocumented JSON API underneath, then verifying every endpoint by hand before writing the spec. The other lesson was about big documents: the Building Code is hundreds of pages, and a naive diff-and-summarize pipeline chokes on it. The system now degrades honestly, publishing diff statistics and section headlines instead of pretending to a summary it cannot ground.
A detail I like
For federal law, change detection is literally version control. Justice Canada publishes its consolidated corpus as an XML repository, so Enacted compares file trees between official updates. A change cannot be silently missed or invented; the source of truth is a commit hash.
Status
Live at enacted.ca, updating daily, digest on Fridays. Ontario and federal today; BC publishes under an equally clean licence and API and is the natural next expansion.