Inspiration

What it does

Inspiration

Tax software usually meets people at filing time. For independent contractors, the real problem begins much earlier.

When employment income and contract work overlap, business and personal expenses mix together, GST obligations accumulate, and receipts go missing, the pressing question is not “Which tax form do I need?” It is “How much of the cash in my account is actually mine?”

The idea for TaxProof Solo came from trying to answer that question as I considered independent contracting in Canada. A generic tax chatbot could list possible deductions, but it could not determine which conclusions were supported by my actual records, what evidence was missing, or why a tax estimate changed.

I wanted to build something more defensible than a chatbot answer.

What it does

TaxProof Solo turns fragmented contractor records into an evidence-backed tax position.

The initial version is intentionally focused on one persona: a British Columbia sole proprietor in the 2026 tax year with employment income earlier in the year, Canadian and US clients, simple operating expenses, and available RRSP or FHSA contribution room.

Users can explore a complete synthetic contractor workspace or upload PDF, image, and CSV records.

TaxProof Solo answers four practical questions:

  1. How much should I reserve for income tax and CPP?
  2. Which expenses are supported by evidence?
  3. Which deductions need more evidence or should be rejected?
  4. Which actions could improve my position before year-end?

It also tracks cumulative revenue and warns when the GST small-supplier threshold may have been crossed.

The signature experience is Why this number? Instead of returning an unexplained amount, TaxProof Solo shows:

  • Facts directly supported by documents
  • Facts inferred from context
  • Relevant source excerpts
  • The tax rule applied
  • Deterministic calculation steps
  • Confidence and materiality
  • Missing evidence
  • A history of changes to the conclusion

In the main demonstration, a laptop transaction begins without a receipt. After the user attaches the missing receipt, GPT-5.6 reconciles it with the transaction, the evidence status changes, the deterministic engine recalculates the deduction and tax reserve, and TaxProof records what changed and why.

How I built it

TaxProof Solo separates document interpretation from financial arithmetic.

GPT-5.6 is used through the OpenAI Responses API to:

  • Read PDF, image, and CSV records
  • Extract structured financial facts
  • Reconcile receipts with transactions
  • Classify expenses and evidence quality
  • Distinguish supported facts from inferences
  • Detect contradictions and missing information
  • Produce one targeted follow-up question when needed

The model returns a strict structured response that is validated with Zod. GPT-5.6 does not calculate or directly set the final tax amounts.

A pure TypeScript calculation engine handles:

  • Net business income
  • Progressive federal and British Columbia income tax
  • Employment withholding
  • Self-employed CPP and employment CPP reconciliation
  • GST threshold tracking
  • RRSP and FHSA scenarios
  • Tax reserve estimates and ranges

Money is represented in integer cents, tax rules are stored in a versioned 2026 BC configuration, and every displayed calculation can be reproduced from its inputs.

The frontend is built with React, TypeScript, Vite, and Tailwind CSS. A Cloudflare Pages Function calls the OpenAI API so the credential is never exposed to the browser.

How I used Codex

Codex was my primary engineering collaborator throughout the build.

I used one main Codex session to move from the product brief to a working vertical slice. Codex helped design the domain model, implement the deterministic tax engine, build the document-analysis pipeline, integrate GPT-5.6 structured outputs, create the evidence-trace interface, add failure states, write tests, and prepare the Cloudflare deployment.

I retained the major product and architectural decisions.

I rejected a chat-first interface because users and judges needed to see decisions immediately. I rejected model-generated tax arithmetic because financial calculations must be reproducible. I also rejected client-side OpenAI calls because the API credential must remain server-side.

Codex was most valuable not as a one-shot code generator, but as a fast engineering partner across architecture, implementation, testing, debugging, and iteration.

Challenges

The central challenge was reliability.

Tax documents and receipts are unstructured, incomplete, and sometimes contradictory. Tax arithmetic, however, cannot be approximate or silently influenced by generated prose.

I solved this by establishing a hard boundary:

  • GPT-5.6 interprets evidence.
  • Deterministic code calculates money.
  • Zod validates the contract between them.
  • Low-confidence or unsupported conclusions remain visible instead of being hidden.

Another challenge was keeping the demonstration resilient. The seeded workspace can use a clearly labelled cached analysis if the live model endpoint is unavailable, but user-upload failures never silently fall back to synthetic results.

Scope was also a deliberate challenge. Rather than pretend to support every Canadian tax situation, the product identifies unsupported scenarios such as corporations, partnerships, Quebec, rental properties, trusts, capital gains, payroll, filing, and CRA submission.

Accomplishments

The completed project includes:

  • A no-login, one-click synthetic contractor workspace
  • Real PDF, image, and CSV analysis through GPT-5.6
  • A deterministic Canadian tax calculation engine
  • Traceable conclusions with visible uncertainty
  • Receipt-to-transaction reconciliation
  • Live recalculation with an auditable change history
  • Supported, needs-evidence, rejected, blocked, and unsupported states
  • 14 passing Vitest checks
  • 3 passing Playwright end-to-end tests
  • Manual production testing across eight document scenarios

What I learned

Models are most useful where evidence is messy and contextual. Traditional software is strongest where results must be exact and reproducible.

The strongest high-stakes AI experiences do not merely produce answers. They expose assumptions, uncertainty, provenance, and the path from evidence to conclusion.

What is next

The current product is a focused vertical slice rather than filing software.

The next steps would include:

  • Additional provinces and tax years
  • More complete foreign-exchange treatment
  • Continuous transaction imports
  • A professional accountant review workspace
  • Expanded document and reconciliation evaluations
  • Year-round instalment and obligation monitoring

The long-term goal is for contractors to arrive at tax time with an organized, explainable position instead of a shoebox of records and a surprise bill.

Built With

Share this project:

Updates