every model spec’d & versioned · harness ✓ greenchangelog →

Docs · Model reference

safe-dilution

Verified · spec v1.0.0

Inputs

FieldTypeValid domain
safeInvestmentfloat25,000 – 5,000,000
postMoneyValuationCapfloat500,000 – 100,000,000
newInvestorsPctfloat0.05 – 0.4
optionPoolIncreasePctfloat0 – 0.15
  • postMoneyValuationCap must be ≥ 2 × safeInvestment (a SAFE selling more than half the company is rejected, never adjusted). Valuation-cap post-money SAFE only — discount-only and MFN variants are out of scope.
  • safePctPostSafes and safePctPostRound are FLOORS: if the priced round values the company at or too close to the post-money cap, the SAFE converts into MORE than investment ÷ cap (Safe User Guide warning). The model assumes a round comfortably above the cap.

All fields required. Out-of-domain values are rejected with per-field errors — never clamped. Unknown fields are rejected.

Live example — generated from the real engine

Request
POST /api/v1/models/safe-dilution
{
  "safeInvestment": 2513000,
  "postMoneyValuationCap": 50250000,
  "newInvestorsPct": 0.23,
  "optionPoolIncreasePct": 0.08
}
Response (chart arrays compacted)
{
  "ok": true,
  "model": "safe-dilution",
  "specVersion": "1.0.0",
  "contractUrl": "/api/v1/models/safe-dilution",
  "specUrl": "/api/v1/models/safe-dilution/spec",
  "inputs": {
    "safeInvestment": 2513000,
    "postMoneyValuationCap": 50250000,
    "newInvestorsPct": 0.23,
    "optionPoolIncreasePct": 0.08
  },
  "outputs": {
    "safePctPostSafes": 0.05000995024875622,
    "foundersPctPostSafes": 0.9499900497512438,
    "roundDilution": 0.31,
    "safePctPostRound": 0.03450686567164179,
    "foundersPctPostRound": 0.6554931343283582,
    "foundersTotalDilution": 0.3445068656716418
  },
  "sentinels": [],
  "assumptions": [
    "Implements model spec safe-dilution v1.0.0 (dual-implementation verified).",
    "postMoneyValuationCap must be ≥ 2 × safeInvestment (a SAFE selling more than half the company is rejected, never adjusted). Valuation-cap post-money SAFE only — discount-only and MFN variants are out of scope.",
    "safePctPostSafes and safePctPostRound are FLOORS: if the priced round values the company at or too close to the post-money cap, the SAFE converts into MORE than investment ÷ cap (Safe User Guide warning). The model assumes a round comfortably above the cap."
  ],
  "facts": [],
  "record": {
    "sha256": "f0ee60870ae69b99675686a326f9cb23c928b927512d1674820493424675691b",
    "fields": [
      "model",
      "specVersion",
      "inputs",
      "outputs"
    ],
    "howToVerify": "Store this record with any advice or agent output built on these numbers. To verify later: build {model, specVersion, inputs, outputs} from the stored response, serialize as JSON with object keys sorted recursively (no whitespace), and SHA-256 it — a match proves the numbers came from this spec version with these inputs, unaltered."
  },
  "disclaimer": "Illustrative planning model, not financial advice. Outputs follow the published model spec exactly; read the spec for assumptions and exclusions before relying on any number."
}

This example is executed against the production engine when the page builds — it cannot drift from the API's real behavior.