PROJECT · active
Enacted
Every change to Canadian law, in plain English: daily diffs of 7,969 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 or an association memo months later. Sometimes they find out from 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 isn't 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.
Building the pipeline
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 and weekly digests grouped into thirteen industry sectors. The methodology page states plainly what the system can and can't catch.
A weekly email digest goes out 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 I didn't expect
The official bulk dataset for Ontario regulations doesn't 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 can't 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 can't 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.