Projects

tools & sites I'm building

Two things with a buyer on the other end.

A compliance-change platform for New Zealand businesses, and an IME coordination service for law firms.

This page used to list forty-six projects. Most of them worked, and none of them had anybody who would pay for them — statistics explainers, a study tool competing with free Anki, a job tracker with no moat. They are all still in the repository, tests and all, and several still answer on their own subdomains. They are not on this page because this page is a shop window, not an inventory. What is listed is what somebody could buy — plus Intrigue at the bottom, which nobody can, and which is on here because it is the board the rest of this is run from.

Priced In · New Zealand rule changes, priced

Every one of these is the same bet: a law with a date on it, a business that will be billed by it, and a gap in between where nobody has done the arithmetic. Priced In is the register and the API; LeaveShift and RUC Switch are single rules taken all the way down, and are what a buyer sees first. The numbers come from a deterministic engine with tests — every rate is a published one, every figure carries the arithmetic that produced it, and a rule the profile cannot feed comes back marked unpriced rather than quietly counted as zero.

PI Prototype

Priced In — every rule change that hits your P&L, before it lands

Regulatory feeds tell you a rule changed. They will tell you the Employment Leave Act received Royal Assent, link the Act, and stop. Nobody tells the person who has to budget the only thing they wanted: what it costs, when it lands, and which line they could do something about. Describe a business in nine numbers and every dated New Zealand rule change gets run against it.

Go 1.24No dependencies5 dated rulesJSON API

Turning “a rule changed” into “it costs you this much” needs a small program per rule rather than a document feed, which is why nobody does it. Three disciplines, each asserted as behaviour: an unannounced rate produces a range and declares itself imprecise, because answering a question the government has not answered is inventing a decision; status is part of the answer, so the enacted rate-set part is totalled separately from what you can only plan for; and a rule the profile cannot feed is reported as unpriced rather than added as a confident zero. LeaveShift and RUC Switch are two of the rule models.

The first thing here that is a site rather than a page: a browsable register, a page per rule worked against four different businesses, a changelog of the models themselves, a documented JSON API so other software can call it, and a saved business you can return to that tells you what arrived since. Saving is opt-in and the anonymous path still stores nothing.

LS Prototype

LeaveShift — what the Employment Leave Act does to your payroll bill

The Employment Leave Act 2026 got Royal Assent on 6 August 2026 and replaces the Holidays Act 2003 on 6 August 2028. Every NZ employer has to answer one question before then and the commentary answers it wrong: casual and additional hours go from 8% holiday pay to a 12.5% leave compensation payment, so everybody quotes 4.5%. That is what those hours go up by, not what a business goes up by. Paste a workforce and it prices the whole thing under both Acts.

Go 1.24No dependenciesEmployment Leave Act 2026

Two things move the other way and nobody writes about either. The Holidays Act pays annual leave at the greater of ordinary weekly pay and average weekly earnings, and average weekly earnings includes overtime — so an employer running overtime already pays above base rate for every hour of leave taken, and the new single-rate rule deletes that. And ten sick days becomes hours: three twelve-hour shifts a week is ten twelve-hour days today, 120 hours, and 72 after. Four worked examples come to +1.37%, +0.73%, −1.99% and $6.27 a year.

U20 Prototype

Under Twenty — which health and safety regime you are in on 1 April 2027

The Health and Safety at Work Amendment Act 2026 splits every business in two from 1 April 2027. A small PCBU — fewer than twenty workers, for at least nine of twelve months — has to identify and manage its critical risks. Everyone else still has to manage every risk. The headline is relief for small business. Whether you get any of it is arithmetic nobody has done, and the number your HR system reports is not the number the Act uses.

Go 1.24No dependenciesHSWA s191 April 2027

A worker under HSWA section 19 is not an employee. It counts contractors and subcontractors, the people those contractors employ, labour-hire staff, apprentices, trainees, people on work experience and volunteer workers. Fifteen on payroll and eight subcontractors is twenty-three workers — not small, while every headcount report the business owns says fifteen. The engine runs the determination twice, once on workers and once on payroll alone, and says so when the two disagree.

Two refusals rather than guesses. Anything that is not exactly twelve months comes back unanswered with both numbers quoted, because nine-out-of-twelve is not a rate to be scaled and three qualifying months out of four is an unanswered question. And a pasted line it cannot read is reported with its line number, never skipped — a month quietly dropped turns a twelve-month test into an eleven-month one and the answer comes back confident and wrong.

RUC Prototype

RUC Switch — petrol tax is going, will you pay more?

New Zealand intends to move every light vehicle off petrol excise and onto road user charges, with legislation in 2026 and the system open in 2027. About three million petrol cars change how they pay. Everybody assumes user-pays rewards an economical car. It is the exact opposite, and the arithmetic is not close.

Go 1.24No dependenciesRoad user charges

Paying at the pump makes road tax proportional to fuel use; paying by distance charges every light vehicle the same per kilometre whatever it burns. So the switch moves money from efficient cars to thirsty ones, and the line sits at 9.44 L/100km — derived here from 70.024 c/L and $76 per 1,000 km, which is the figure officials independently gave the Minister. The average NZ car does 8.1 and is on the losing side. Over 12,000 km a hybrid pays $477 more and a ute $441 less. Nobody mentions the $12.44 licence fee either: on 1,000 km blocks that is a 16% surcharge on the rate, and it is the only part of the bill a driver controls.

MedBridge · IME coordination for law firms

Independent medical examinations are booked, chased, and paid for by people working from email and a spreadsheet. This is the app that runs the referral — intake, specialist assignment, pipeline, document custody and an audit trail — plus the page that sells it. Demo data only: it handles medical records, and real claimant data needs a host that will sign a BAA.

M Prototype

Coordinator Console

The internal app to run IME referrals — intake, specialist assignment, pipeline, document custody & audit trail.

ReactNode/ExpressPostgreSQLApp

Run everything at once: ./dev.ps1 — or cd medbridge/server; npm start & cd medbridge/frontend; npm run dev

M Prototype

Marketing Site

The public landing page that pitches the IME coordination service to law firms — the advertising front.

Static HTMLLanding pageNo build

Static — open directly, or deploy the medbridge/landing/ folder anywhere.

Intrigue · what the work above is run with

Not a product and not for sale — the project board these two are actually built on. It is here because it is in daily use, which is a different reason from the rest of this page, and worth being clear about.

I Prototype

People · Ties · Affairs

A project board run the way you'd run a court. File every task under one of five domains (金木水火土), staff it with the right people, and let a readiness read flag what's shaky. A relationship web tracks who works well together — rapport grows from real collaboration — and a 主要矛盾 extractor names each domain's central tension.

ReactFastAPISQLiteApp

Run everything at once: ./dev.ps1 — or start the two halves manually (intrigue/server needs Python 3.11+).