
Live product · Real public data · Grew out of Run Replay
TickmarkFinance controls that show their work
A finance-controls workbench for month-end close, payroll review, controls on real 10-K filings, and a grader for financial-model answers—and a tool you can point at your own CSV files. Rules calculate, evidence stays attached, people release.
Open the live sitetickmark-martinzhang.vercel.appThe prototype: Run ReplayProduct idea
An auditor ticks every figure. Software should too.
A tick mark is the pen stroke an auditor leaves when a number has been traced to its source. Tickmark builds that habit into software: every amount is calculated by a tested rule, every exception carries the evidence that raised it, and only a person can release.
Run Replay proved the idea on synthetic data. Tickmark points the same controls at real public data—eight companies’ latest 10-K filings, Bank of Canada exchange rates, and the FinQA benchmark—and turns the prototype into a product someone can use in a browser.
Highlights
Real data where it matters. Honest labels where it isn’t.
Controls on real filings.
Assets = Liabilities + Equity, the cash roll-forward, and revenue flux run on SEC EDGAR XBRL data. Walmart doesn’t tag total liabilities, so the identity can’t be tested from tags alone—the workbench says so instead of guessing.
A grader for financial-model answers.
A deterministic FinQA grader executes each question’s gold program and grades any answer within 0.5%. It also flags a gold label that calls an 82/18 asset allocation a “debt-to-equity ratio”: benchmarks need auditing too.
A close that runs itself, a release that doesn’t.
The month-end close runs a five-stage pipeline on first view. High-severity exceptions block sign-off until a person decides; an override needs a written reason, and every action lands in the audit log.
A tool, not only a demo.
The “Your data” tab runs the same payroll rules and bank match on your own CSV files, with templates, drag and drop, and errors that name the row. Files never leave the browser. Decisions and the audit log survive a reload, and every table exports to CSV.
How I used AI
AI built fast. Tests decided what shipped.
Sourced real data, kept it honest
Directed an AI agent to pull SEC, Bank of Canada and FinQA data into a dated snapshot, and to label everything synthetic as synthetic—including planned evaluation suites marked “Planned”, not “written”.
Validated the grader before using it
The FinQA grader had to reproduce all 1,108 executable gold answers before it was allowed to grade anything.
QA with a real mouse
A script-driven QA pass missed an invisible overlay that blocked every click. Adding a real-pointer hit test caught it; the fix and the test both shipped.
Live product
The workbench, the filings, the grader.






Technical foundation
A static site that runs the rules in your browser.
- Front end
- HTML · CSS · vanilla JavaScript · SVG charts · no build step · rules in a separate tested engine
- Real data
- SEC EDGAR XBRL companyfacts · Bank of Canada Valet · FinQA test set (MIT)
- Contact
- FormSubmit to email, with validation, a spam trap and a mailto fallback
- Delivery
- GitHub Actions runs 25 unit tests on every push → Vercel · Blender for the 3D mark · headless-Chrome QA
Boundary
Real public data, synthetic company data.
Filings, exchange rates and FinQA are real and cited. The demo’s close, payroll and bank lines are synthetic and labelled that way; files you upload stay in your browser. Paid model comparisons have not been run, and there are no user-study results yet.
