Alberta Built Open-Source AI Tools to Help Canadians Follow Public Money
What we brought to Agency 2026 in Ottawa, what the work has surfaced, and how Alberta is sharing these tools with every level of government in Canada.
In 2024, Centreville Presbyterian Church, a small rural parish in Millbrook, Ontario, filed its annual financial report with the Canada Revenue Agency. On one line of the form, the parish reported $5,204,352,043 in charitable activities.
Total revenue for the parish that year was $62,031.
The $5.2 billion figure was a digit-shift typo. Someone had keyed in a small charitable expense and multiplied it by close to one hundred thousand without noticing. The CRA accepted the filing, published it on the public registry, and the $5.2 billion figure has been sitting in the official record of how Canadian charities spend money ever since. It is visible today on the Government of Canada open-data download, on the CRA’s own Charities Directorate web portal, and on the third-party site charitydata.ca
This is not an isolated case. When my Ministry pointed AI at the Canada Revenue Agency’s full charity dataset, it found 54,010 separate arithmetic discrepancies between filings and the rules the CRA itself prints on the T3010 charity tax form. Fourteen of those involve mismatches of more than $1 billion each.
Some are typos. Some are dollars-versus-thousands confusion. All of them sit in the official public record without a flag.
The same AI work also caught a $146 billion error in how the federal government totals its own grants and contributions data. And it surfaced 47,102 federal grant records missing the basic identifier required to know which company received the money.
This is the closing article in my series about Alberta’s Agency hackathon in Ottawa. Part 1 explained the approach. Parts 2, 3, and 4 showed early findings from Alberta’s preparation work.
Today’s article lays out what came out of Agency 2026 itself, the national AI hackathon my Ministry hosted in Ottawa on April 29. Roughly 1,100 people participated. 72 teams submitted finished work. The tools Alberta built and released are now open, free, and live on the internet at GovAlta/agency-26-hackathon.
A note on framing before the findings. The patterns described below are not a critique of the federal civil servants who maintain Canada’s public-money disclosures. They are the result of legacy systems and publishing pipelines that pre-date the AI tools the country now has available.
Alberta’s view is straightforward. Better public-money data is in every Canadian’s interest, every level of government has work to do, and the right way to close the gaps is to share the tools and do the work together. The findings in this article are offered in that spirit.
Why We Did This in Ottawa
A quick word on why a provincial ministry hosted a national hackathon in Ottawa, focused on federal data. I have been asked this often.
Lead by example. Alberta is ahead of the rest of the country on the development and adoption of AI tools for analytics and modernizing public-sector operations. We are using these methods inside our own government. We also want to share the work, the tools, and the technology nationally so every Canadian taxpayer benefits.
Build a national community. A single ministry in a single province cannot move the country forward on its own. The work that needs to happen across Canada requires public servants, academics, students, and private citizens trained on the same tools and techniques. Hosting Agency 2026 nationally, with open-source tools and open data, is how that community starts.
Make the most of who was already in town. The Federal-Provincial-Territorial summit for the deputy ministers responsible for digital government, cybersecurity, and AI was already scheduled for that week in Ottawa. Every province and the federal government had their senior public servants in the same place at the same time. Aligning the hackathon with that summit meant maximum involvement from our partners.
What Alberta Brought to Ottawa
Inside my Ministry, we have been running a program called TRACE (Targeted Review of Alberta’s Contracts and Expenditures). TRACE uses AI to follow public money from the treasury to a recipient and to surface the patterns that auditors and ministers should look at more closely.
The kind of AI that makes this possible is called agentic AI. Most people picture AI as a chatbot that answers questions. Agentic AI is different. You give it a goal, the data, and access to software tools, and it does the analytical work on its own.
TRACE keeps a human in the loop at every meaningful decision point by design. The AI does the heavy lifting on tasks where speed and scale matter. People set the questions, review the findings, and decide what to act on.
Every step of the work complies with Alberta’s Artificial Intelligence Usage Policy, the binding framework that governs every AI system used in the Government of Alberta on security, privacy, accuracy, and accountability.
In the year leading up to Agency 2026, Alberta built and tested three analytical capabilities. We released them open-source the week of the event. They are the tools that produced every finding in the rest of this article.
Entity resolution. Most Canadians do not realize that the same organization shows up in public data under many different names. The University of Alberta appears in the federal grants and contributions file under approximately 76 different spellings. The Salvation Army national umbrella appears under 444 variants. The Society of Saint Vincent de Paul Canada appears under 485.
2,146 separate organizations in the public data carry more than 20 spelling variants each. Without a tool that recognizes those spellings as the same place, any total you produce is wrong, because you are counting the same recipient as several different entities.
Entity resolution is the technical name for the process that collapses those variants into a single canonical record. Alberta’s tool resolves 926,670 such records across the federal, charity, and provincial datasets. Without it, the rest of this analysis would not be possible.
Reasonableness checking. The Canada Revenue Agency requires every registered charity in Canada to file an annual tax return called the T3010. The form is structured with rules built into it.
Certain totals must equal the sum of their parts. The line for total assets equals the sum of seven asset categories listed underneath it. The line for total expenditures equals the sum of three spending categories. Compensation reported on one schedule must equal compensation reported on another. The CRA writes these rules directly on the form so that charities know what is expected when they file. There are ten such rules in all.
Alberta’s reasonableness-checking tool encodes those ten rules and runs them across every T3010 filing the CRA has published. When a filing does not match one of the rules, the tool flags the row, calculates how big the discrepancy is in dollars, and cites the exact form line where the mismatch sits.
Orchestrated AI agents with built-in verification. The third tool is the pattern Alberta uses to keep AI work honest. A primary AI agent reads an analytical question and breaks it into smaller tasks. Each task is handed to a specialist sub-agent that pulls the data, runs the queries, and produces a draft answer.
A separate verifier agent then re-runs the analysis from scratch and challenges the first answer. Where the two agree, the finding ships. Where they disagree, a human reviews.
This pattern is the answer to the most common concern about AI in government: that a single language model can produce confident-sounding but incorrect numbers. A second model auditing the first, with regular database queries underneath both, makes that failure mode rare and easy to catch when it happens.
On top of the agent pattern, the team used what AI engineers call evals. Evals are calculator-like check programs, like Excel formulas, that test specific arithmetic against the source data. Our AI tools wrote these evals after reviewing sample filings and spotting the recurring patterns of what was breaking, and then ran them at scale across millions of records.
Anything an eval flagged that the agent could not reconcile was escalated for human review. The evals also confirmed that the data Alberta loaded into its system matched Canada’s own published records to the penny.
One figure is worth flagging before the findings. The full analytical work that produced every number in the rest of this article cost approximately $2,000 in cloud compute and AI usage. The same work would have cost a hundred times more a year ago.
The cost envelope for federal-scale public-money analysis is now within reach of independent journalists, university researchers, civic technology groups, and small provincial governments. This kind of analysis is now realistically within reach of a whole new class of interested Canadians.
One more thing worth saying up front. Alberta has its own data-quality gaps, and the same tools surface them. We have published our findings about Alberta’s data in the same KNOWN-DATA-ISSUES.md catalogue that documents the federal and CRA findings, in the open-source repository.
Some of Alberta’s gaps reflect legitimate privacy redactions. The province does not publish named recipients on individual disability-support payments or per-physician fee-for-service billings, for example, and we are not going to change that. Other gaps reflect data-entry practices we are actively fixing through TRACE.
Wherever Alberta’s data has gaps, the gaps are public, and we are working to close them.
The $146 Billion Gap in Federal Grant Totals
The federal government publishes a single dataset listing every grant and contribution Ottawa makes. It is the foundational public record of what the federal government funds. Anyone who wants to know what Ottawa is spending money on starts with this file.
The file has a problem.
Every time a federal grant is amended (which happens often as projects extend, change scope, or get additional funding), the amendment shows up as a new row in the file. Treasury Board’s published specification is clear about how this should work. Each row holds the cumulative value of the agreement as of that amendment. To get a correct total, you take the most recent amendment for each agreement and sum those values. Sum every row blindly and you count the same dollar multiple times.
In practice, the federal file uses three different conventions for amendments at the same time, with no flag telling you which convention applies to which row. The vast majority (95.2%) follow the official cumulative convention. The rest split between two non-standard patterns: amendments recorded as zero-value entries that cancel a prior line, and amendments recorded as negative values, even though the published specification says values “must be greater than 0.”
Run the file three different ways and you get three different totals:
Sum every row blindly: $921.6 billion
Sum only the original (non-amendment) rows: $533.6 billion
Take the latest amendment per agreement, which is the correct measure of current commitment: $775.8 billion
The naive total overstates the correct figure by $145.8 billion.
These errors have been baked into any analysis that relied on the published figures. Any journalist, researcher, or analyst who has used the as-published file without knowing about the three different amendment conventions is unlikely to have realized that the numbers do not add up correctly.
The data has more concrete problems on top of the math. Treasury Board’s specification requires every grant to a Canadian company or charity to carry a Business Number (the nine-digit identifier the CRA uses) and a federal riding code.
Inside the 463,819-row subset where those rules apply, 47,102 rows (10.2%) are missing the Business Number entirely. 238,241 rows (51.4%) are missing the federal riding. That is $48 billion in grants where the public record cannot be matched against other government datasets to confirm where the money landed, and $111 billion where it cannot tell you which constituency the spending lands in.
This analysis is restricted specifically to grants flowing to Canadian for-profit and not-for-profit organizations, where the Treasury Board specification requires the Business Number and the riding fields. Other recipient categories such as Indigenous governments, foreign organizations, and individual recipients have structural reasons those fields might legitimately be blank, and are excluded from these counts.
54,010 Arithmetic Discrepancies in Charity Filings
When Alberta’s reasonableness-checking tool ran the ten T3010 form rules across every charity financial filing from 2020 through 2024, it found 54,010 arithmetic discrepancies across 30,856 separate charities. That is 12.8% of all annual financial filings the CRA collected over those five years.
The largest failure modes are the kinds of mistakes a basic spreadsheet check would catch: sub-lines that sum to more than their parent line, compensation figures that disagree between two schedules in the same form, totals that do not match the breakdowns underneath them.
Restrict the analysis to the operational program-delivery charities and to the cases the tool can classify with high confidence (each fitting one of six recognisable digit-shift or units-error patterns), and 360 cases remain, carrying $78.32 billion in combined mismatch dollars. Nine of those 360 classified cases each exceed $1 billion in mismatch alone.
The largest single data-quality defect in the registry sits in a separate analytical layer. FINCA Canada, a Toronto-based international-development charity (Business Number 805686144RR0001, designation C), filed its 2023 T3010 reporting $222,456,000,000 in total expenditures against actual revenue of $1,810,102.
The ratio is roughly one hundred and twenty-three thousand to one.
The charity’s actual operating scale, visible on its filings for every other year from 2020 to 2024, is about four million dollars in expenditures against three or four million dollars in revenue.
FINCA’s filing does not appear in the fourteen arithmetic-mismatch cases referenced earlier because the internal arithmetic on the form is consistent: the total-expenditures line equals the sum of its three component lines.
The defect surfaces in a second analytical layer that checks whether a charity’s reported numbers are plausible given its history. The same layer carries 1,075 implausibility-flagged filings in total, summing to $1.59 trillion in offending values.
FINCA’s 2023 entry is by a wide margin the largest single case, exceeding the sum of all fourteen arithmetic-impossibility cases above one billion dollars by a factor of more than three.
The Centreville Presbyterian Church filing I opened with is one of the arithmetic cases. There are others, at even larger scale. St. James Anglican Church, a parish in the Anglican Diocese of Ottawa (Business Number 108084658RR0071), reported $33,141,565,575 in charitable activities on its 2023 T3010 against total revenue of $308,618.
The Toronto Catholic District School Board (Business Number 107694119RR0001) files the same 1,000× decimal-placement error in two consecutive fiscal years, with Schedule 6 reporting compensation in dollars and Schedule 3 reporting the same figure in thousands.
Fraser Health Authority‘s 2020 filing (Business Number 887612463RR0001) shows the same units mismatch at a scale of $2 billion, with Schedule 6 reporting $2,008,634,000 and Schedule 3 reporting $2,008,634, the identical digits separated only by where the decimal landed.
There is one more wrinkle that anyone who tries to verify these findings will run into. The same T3010 filing is published in three places that the public can reach: the Government of Canada bulk open-data file at open.canada.ca, the CRA’s own interactive Charities Directorate web portal at apps.cra-arc.gc.ca, and the third-party site charitydata.ca run by Blumberg Segal LLP.
The three sources do not always agree.
Every defect listed above appears in the bulk open data, which is the dataset every analyst, journalist, researcher, civic technologist, and AI agent uses when doing aggregate analysis. The CRA’s interactive portal renders some of the same filings with corrected or masked values. For the St. James Anglican Church 2023 filing in particular, the portal now displays $331,415 on the line where the bulk open data still publishes $33,141,565,575, and several older fiscal years are simply no longer accessible through the portal at all.
The third site, charitydata.ca, holds a mix. For the Toronto Catholic District School Board, both the Schedule 3 and Schedule 6 figures for 2021 and 2022 are present and the discrepancy is visible directly. For the St. James Anglican Church 2023 filing, the site does not publish line 5000 at all, making cross-reference against the open data impossible.
None of the three surfaces flags the disagreement to the reader. The disagreement between them is itself a publishing-pipeline finding, separate from the arithmetic defects in the filings.
None of these are accusations of fraud. Most are obvious filing typos that a basic check at intake would have caught. The accountability gap sits with the CRA’s publishing pipeline. The form sets the rule. The filing does not match it. The CRA accepts and publishes the filing.
Why does this matter to ordinary Canadians beyond the technical issue?
Because anyone who tries to total Canadian charity finances using the public registry is summing $1.59 trillion in implausible numbers without knowing it.
A journalist writing a story about the charitable sector will write that story with broken data. A researcher comparing Canadian charity funding patterns to international peers will produce conclusions the data does not support. A backbench MP using the public record to brief themselves on the sector will be working from numbers that do not reconcile against the CRA’s own rules.
The fix is straightforward. The Treasury Board specification and the T3010 form already print the rules. Alberta’s open-source rules engine runs those checks in seconds against the full file. We are sharing the tool with the CRA and with any federal partner who wants to apply it at intake or at publication. The result will be a more trustworthy public record for every Canadian.
Our Hackathon Validated the Approach
Findings like these came out of Alberta’s preparation work. The hackathon on April 29 was the test of whether the same approach scales beyond Alberta. 72 teams from across Canada arrived in Ottawa to apply Alberta’s tools and build their own.
Three teams stood out.
Lemonbrand, a one-person team led by Simon Bergeron, built a portable AI agent system that finds four different kinds of accountability problems across any government’s data, federal or provincial. A solo founder placed first, beating 71 other teams that included some of the country’s largest IT consulting firms.
Taskd, a five-person startup led by Ryan Hanley, tackled the hardest problem in the brief: finding hidden relationships between charities, contractors, and the people on the awarding bodies. Their system used AI once, at the start, to read messy records and produce a clean map of every relationship in the data. After that, every answer came from walking the map step by step, with no AI in the query path. Every finding can be re-traced by hand.
ACE, a team of students from Algonquin College in Ottawa, built a reliability dashboard. Type in a company name and the tool produces a clear score showing the company’s track record across federal grants and Alberta procurement, with the supporting evidence right there. A team of college students built a working prototype of a tool government has needed for years.
What’s Next
On April 29, while in Ottawa for the hackathon, I had a productive meeting with the federal Minister of Government Transformation, Public Works and Procurement, Joël Lightbound. We agreed that this kind of collaboration between Alberta and the federal government is exactly what Canadians should expect from their governments.
If Ottawa can save money by adopting Alberta’s tools and methods, that is a good outcome for every Canadian taxpayer. Alberta will continue that conversation with the federal government and with our provincial counterparts.
Everything Alberta built for Agency 2026 is now public. The full code repository, including the analytical pipelines and detailed methodology documentation, is available on GitHub: GovAlta/agency-26-hackathon. Everything is released under the MIT open-source licence, which means any government, journalist, researcher, civic technologist, or curious citizen can use it, modify it, or build on it without asking permission.
The unified dataset remains live and read-only for the next month at the connection string published in the repository. It is fully open data already published by the Government of Canada and the Government of Alberta, hosted in a unified, cleaned, indexed form so anyone can run the same queries the hackathon teams used.
Inside the Government of Alberta, we are equipping public servants with state-of-the-art AI tools and the training to use them well. The Alberta AI Academy launched its Level Three curriculum on May 13, 2026, free for Alberta public servants and our FPT partners. The methods that worked at Agency 2026 are being folded into TRACE and applied to Alberta’s internal data in full compliance with our AI Usage Policy and the strict privacy and security protocols that govern every data system in the province.
Agency is a recurring hackathon program of my Ministry. We have held four events to date across Edmonton, Calgary, and now Ottawa. The next event will return to Edmonton in fall 2026 and will be open to municipalities, Crown corporations, and agencies in addition to the participants we have already engaged. We will share more on the brief and the registration process closer to the date.
What Alberta Has Shown the Country
When I wrote the first piece in this series, I argued that agentic AI could change public accountability forever. That was the claim.
Agency 2026 is the proof. The cost envelope for federal-scale public-money analysis has fallen by two orders of magnitude in twelve months. The architecture that earns the trust of an auditor is now well understood. The tools that make this work possible are open, free, and live on the internet right now.
The tools have already produced concrete, reproducible findings: a $146 billion gap in how federal grant totals are aggregated, 54,010 arithmetic discrepancies in charity filings the rules engine can catch, and Alberta’s own data-quality gaps catalogued alongside them. None of these problems is a one-government problem. None of them gets fixed by one government alone.
Canadians have a right to know where their tax dollars are going. And now they have the tools to follow the money.
Alberta did the groundwork. Innovators from across Canada are building on it. Every province and the federal government can pick this up tomorrow, and we hope they do.
If you want to be part of what comes next, here is how.
Explore the work. The repository, the data, the methodology, and the findings catalogue are all public. Run your own queries. Test the findings.
Send us pull requests. Despite a great deal of due diligence, all code (human or AI) has bugs in it. If you find something that makes our tools better, faster, or more accurate, we want to hear about it. This release is a small subset of the internal tools my Ministry has built and deployed for TRACE, and we welcome ideas and inputs from Canadians on how to extend the work. File an issue or submit a pull request on the GitHub repository.
Bring this back to your jurisdiction. If you work for a provincial, territorial, federal, or municipal government and want to apply these methods to your own data, the tools and methodology are documented in the open. If your team gets stuck, the most efficient next step is to ask an AI to walk you through what Alberta did, reproduce it for yourself, and build on the ideas. There is no proprietary tax on Alberta’s contribution.
Subscribe to follow what’s next. I will continue writing about Alberta’s work to lead the country in AI adoption across government and to build the most innovative public service in Canada.
Thank you for following along through this series. Alberta’s work to use modern technology in service of better government is just getting started, and I am looking forward to sharing what comes next.
Nate Glubish is the MLA for Strathcona-Sherwood Park and Alberta’s Minister of Technology and Innovation.



Absolutely outstanding.
First impressions are the astounding gains in speed and accuracy. Secondly saving the mind numbing efforts of poor humans being spared this work.
The humans review, test, and audit. Exactly where we should be in using any other powerful tool.
I do hope there is appropriate appreciation and recognition for Alberta, you, and your team for this accomplishment.
Great article, Nate. It’s amazing to see the achievements coming out of the April 29th hackathon, including Alberta leading the way in AI tools!