Decision Labs is a small catalog of four independent, offline workbenches for making assumptions visible before a high stakes conversation. Change an input, inspect the effect, and carry a deliberate JSON export into the discussion.
The catalog is a launcher, not a fifth product. Every workbench keeps its own model, draft storage, version, standalone build, documentation, and tests.
| Workbench | Version | Question | Starting case |
|---|---|---|---|
| Partnership Breakpoint | 1.9.0 | Which participant in a revenue split reaches an exit threshold first as volume, fees, or costs move? | Balanced |
| Common Cart | 1.8.0 | How can buyer constraints be pooled and conditional merchant offers compared without exposing individual buyer records? | Coffee, Neighbourhood coffee run |
| The Smallest Agreement | 1.7.0 | What is the lowest-cost set of clause changes that crosses an approval threshold while respecting floors, locks, and a change budget? | Neighbourhood Plan |
| Weekend Gap | 1.9.0 | How does synthetic AUD redemption demand move from Friday to Monday when reserves and settlement windows do not fully overlap? | Normal Friday, 72-hour case |
Source model notes: Partnership Breakpoint MODEL.md, Common Cart MODEL.md, The Smallest Agreement MODEL.md, and Weekend Gap MODEL.md.
Open index.html, choose a workbench, and start with its built-in
synthetic case. Each app also has a generated standalone.html with the
interface, styles, and model in one file. Open it directly in a browser; it
makes no network requests. Use Export JSON when a draft needs to move to
another person or device.
The optional local launcher serves only the catalog and the four standalone pages on loopback:
npm startOr run the launcher directly: node scripts/serve.mjs. Node.js 20 or newer is
needed for the launcher and checks. There are no runtime package dependencies
and no npm install step.
For a worked example, read the CASE_STUDY.md repository documentation.
Each workbench ships its own version and release notes: Partnership Breakpoint, Common Cart, The Smallest Agreement, and Weekend Gap. Catalog-level changes are in CHANGELOG.md.
Catalog releases are tagged vX.Y.Z. Each GitHub release attaches the four
standalone pages as <app>-<version>.html, ready to open without a clone.
- The workbenches are deterministic decision aids. They do not forecast, sample, or assign probabilities, prices, fairness, or legitimacy.
- Inputs and outputs describe the bounded case entered by the reviewer. They are not a live market, merchant, bank, partnership, vote, or account feed.
- A result is evidence for a conversation. People keep judgment, governing rules, and accountability, and the tools do not execute transactions.
- Drafts stay in browser storage until explicitly exported. Browser storage is not a backup. Do not share drafts containing sensitive information.
- Each app documents its formulas, units, assumptions, and non-goals beside its interface. The launcher does not serve source or model files. It checks canonical file paths and rejects file symlinks or directory junctions that redirect public filenames; a symlink to the whole checkout is supported. This is a local development server, not a sandbox against another process replacing files or directories during a request. Keep the checkout under your control and stop the launcher before reorganizing it.
From the repository root:
npm test
npm run check
npm test runs the root catalog and all workbench tests. npm run check
validates the catalog and each app's standalone build. See
CONTRIBUTING.md for the full local workflow.
The optional browser acceptance check exercises all four actual standalone pages, including JSON round trips and unavailable storage. It uses separately installed browser tooling and adds no application dependency.
The repository is released under the MIT License.