Changelog
What shipped, and when.
Every line here describes something that is in the product now. What is planned is on the roadmap, which is a separate page so that neither one has to be read with the other in mind.
Version
1.0
Aug 26, 2026
First release
12 changes
The first release does one thing end to end: it takes the contractors you paid, finds the ones already over the reporting threshold without a W-9 on file, and tells you the withholding that was required on those payments. Everything before this was pre-release and is not itemised.
- AddedExposure Monitor. The headline figure is the amount already required on payments you have made, so it cannot fall because the calendar advanced. A projected year-end figure and a conservative ceiling sit beneath it and are always shown as a pair.
- AddedW-9 Vault. Six distinct states per payee — missing, requested, valid, expired, TIN mismatch, refused — with received and expiry dates, request history and the last four digits of the taxpayer number.
- AddedThreshold Ledger. A published threshold per reporting box per tax year, each row carrying its statutory citation. A year the IRS has not published reads “Not yet published” rather than repeating last year’s figure.
- AddedPayment Import. CSV column mapper, a validation preview that names every skipped row and its reason, and revert of a whole batch. A row containing a full taxpayer number is refused at the preview rather than truncated.
- AddedCSV exports: 1099-NEC worksheet, W-9 gap list, payment ledger and exposure detail.
- AddedWorkspaces with per-team row-level security, an activity log attributed to the member who acted, and a last-owner guard.
- AddedA public exposure calculator that runs against the same published threshold rows the product reads, with nothing sent anywhere.
- ChangedThe whole visual system. Warm paper neutrals, one accent used as a mark rather than a colour, a serif for figures whose digits are tabular by default so a money column cannot misalign.
- ChangedThird-party network payments are excluded by default, per Reg. 1.6041-1(a)(1)(iv): the settlement network reports them on a 1099-K, so counting them here as well would double-count the same money. The switch now sits in settings with that trade-off written next to it instead of being a constant inside a query.
- FixedEvery database query in the application was inferring its rows as an empty type, which disarmed type checking across the entire data layer. One correction to the client restores it.
- FixedReverting a contractor import checked for existing payments by reading a count that could come back absent, and read “absent” as “none”. It now refuses the revert and says how many payments are in the way.
- FixedA figure that could not be computed rendered as $0.00 in some places. An unknown is now its own state everywhere and never a zero — a false all-clear is worse than a blank.