Papers — 3 long-form write-ups, as PDFs

The essays are the short version. These carry the method and the arithmetic, and every number is sourced to a repository, a live URL, or a measurement you can rerun.

Sites That Differ by Data, Not Code

A five-minute contract for trade-business websites, and the gates that make it honest · 2026-09-23 · 8 pages · PDF

Sites That Differ by Data, Not Code — cover

A generator builds a lead-gen site for a trade business from one intake file, deploys it to the edge and verifies it live in 46.5 s. The content is the part that does not fit in five minutes yet.

  • 46.5 s from template to verified live site — Measured 2026-09-21: database 2.2, bot-check widget 0.3, build 1.3, repo from template 17.6, deploy 11.2, verify 13.8. Content generation for a new business is the unproven half of the five-minute contract.
  • 1,613 → 10,000+ words after the first launch was destroyed — The first site scored 21% of a reference site on content. The fix went into the kit, not the site; rewritten fixtures score 92+ where the reference scores 75.9.
  • Three live-deploy defects invisible in the local build — A 307 on every internal link, pages 404ing while the home page was up, and a lead endpoint that accepted unverified leads for the width of one deploy step. Each is now a gate.
  • Zero fabricated trust content, enforced by the schema — Reviews and credentials require client-supplied provenance; unsupplied hours, addresses and licence claims are omitted from the page and the JSON-LD, never inferred.

Field note: the statute rewrote the product · Case study

One Database, Many Connectors

An operating system for a small services business, and the agent desk that works its own queue · 2026-09-22 · 7 pages · PDF

One Database, Many Connectors — cover

A six-person maintenance company runs on one Postgres database, a static page and twelve serverless functions, with the rule that no tool ever talks to another tool. Three production incidents and the hand-over rule for an agent with a queue.

  • 2,493 accounts → a 62 KB query string → a 400 that took a whole tab down — An optional Call button filtered the CRM mirror by every id on the board. The fix that matters: an optional feature can no longer fail the page it decorates. It returns empty and logs.
  • 0 of 585 jobs carried a lead source; 72% of customers carry a phone — So paid-ad attribution matches on the last ten digits of the phone first, then email, and reports a funnel with null cost metrics until a denominator exists.
  • 9 of 10 agent-owned tasks had no step the agent could take — They were parked as blocked, where nobody looks. The rule changed: hand the task to the person who holds the system, with the click path in the notes.
  • Twelve serverless functions, all in use — The free plan’s cap is treated as a design pressure. Each shared endpoint is documented at the point of use with the same sentence, so the next person knows what to unbundle.

Case study · Field note: guard jobs are free

The Demand Instrument

Nine ideas on one template, and the three ways a validation test gets misread · 2026-09-21 · 6 pages · PDF

The Demand Instrument — cover

Nine business ideas on nine landing pages built from one template, each with a pass/fail bar set before the traffic. The instrument, the funnel plumbing most templates get wrong, and a read model that refuses three misreads.

  • One hosting project per launch; everything else shared, joined by one slug — Analytics, database, payments and scheduling are one account each. Running ten ideas costs roughly what running one does, and every launch stays comparable in a single view.
  • Bars from 6 to 48 costly actions, set before the test — A booked call needs 6 of 400 views; a qualified email needs 32 to 48 of 800. The cheaper the proof, the higher the rate it has to clear.
  • The webhook is the truth for purchase_completed — A browser event is spoofable, is missed when the tab closes before the redirect, and double-counts revenue when both fire. The browser’s distinct id rides through checkout so the server event lands on the same person.
  • An unauthorised token gets zero rows from the database — Registration is open, so authorisation lives in Postgres: an allowlist table with deny-all row security and a definer-rights function with a pinned search path. No privileged key is deployed.

MAKaminski/launch-template · The Demand Test


Book a Call · Download Resume · MKaminski1337@gmail.com · (404) 838-8613 · LinkedIn · GitHub · DEV · X