Inspiration
We wanted a way to hold the government accountable, and to build a community that closes the gap between people and the government.
Most sites we found only did half the job. Some show spending data but give you no way to act. Others run petitions but don't show why a cause matters to you. And most people have never heard of ourcommons.ca, where official House of Commons e-petitions live. That site also handles much more than petitions, so it's easy to get lost there.
WhereDoesMyTaxGo brings both halves together. You see where your money goes, then you do something about it.
What it does
- Enter your income and province to see your federal tax, broken down by where it went.
- Browse real federal spending stories, each showing your personal share.
- Start or join a campaign on a story you care about.
- When a campaign has enough support, our team turns it into an official e-petition and sends every supporter a link to sign it.
Your share is calculated the same way everywhere:
$$ \text{your share} = \text{your federal tax} \times \frac{\text{program cost}}{\text{total federal spending}} $$
Example: you pay \$9,510 in federal tax. Military aircraft purchases cost \$3.3B out of \$472.5B:
$$ 9{,}510 \times \frac{3.3}{472.5} \approx \$66 $$
How we built it
- Next.js, React and Tailwind for the app, with Auth0 for login.
- A tax calculator for every province and territory, checked against CRA tables. It runs in your browser, so your income never leaves your device.
- A Python pipeline over the government's GC InfoBase open data. It finds programs whose spending changed sharply and turns them into stories.
- Claude and Gemini to turn spending data and Google News articles into short, sourced stories.
- Postgres (Neon) + Drizzle to store stories, campaigns, supporters and petitions.
- MP lookup by postal code.
Challenges we ran into
The hardest part was connecting the campaign side to the petition side, with WhereDoesMyTaxGo acting as the middleman between people and the government.
A petition only counts if it's on ourcommons.ca, not on our site. So we had to choose:
- Run petitions in our app. Easy to use, but not official.
- Send people straight to ourcommons.ca. Official, but no guidance, and most people would give up.
We built a better option. People start and join campaigns on WhereDoesMyTaxGo, which shows us which causes people actually want to act on. Each campaign aims for 1,000 supporters, double the 500 signatures the government needs before it must respond. Then our team reviews the campaign on their behalf, gets an MP to sponsor it, and opens the official petition. Every supporter gets a link to sign where it counts.
What we learned
- How petitioning really works: you need an MP sponsor, 500 signatures gets a government response, and each person can only have one petition open at a time.
- The real impact of government spending on our lives and taxes. A budget line hits differently when it says "you paid \$66 for this."
- How to split one product between two teams and still make the pieces fit together.
Try it at wheredoesmytaxgo.vip.
Built With
- auth0
- claude-api
- drizzle-orm
- gc-infobase
- gemini-api
- gmail
- google-news-rss
- neon
- next.js
- node.js
- open-government-canada
- ourcommons.ca
- pandas
- pillow
- postgresql
- python
- react
- represent-api-(open-north)
- tailwind-css
- typescript
- vitest
- zod
Log in or sign up for Devpost to join the conversation.