Docs · Model reference

windfall

Verified · spec v1.0.1

Inputs

FieldTypeValid domain
windfallAmountfloat10,000 – 2,000,000
highInterestDebtBalancefloat0 – 200,000
highInterestDebtRatefloat0.05 – 0.3
taxableInvestmentReturnfloat0.02 – 0.12
retirementReturnfloat0.02 – 0.12
yearsToRetirementint1 – 40
marginalTaxRatefloat0.1 – 0.37
allocationDebtfloat0 – 1
allocationEmergencyfloat0 – 1
allocationRetirementfloat0 – 1
allocationTaxablefloat0 – 1

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/windfall
{
  "windfallAmount": 1005000,
  "highInterestDebtBalance": 100000,
  "highInterestDebtRate": 0.18,
  "taxableInvestmentReturn": 0.07,
  "retirementReturn": 0.07,
  "yearsToRetirement": 21,
  "marginalTaxRate": 0.24,
  "allocationDebt": 0.5,
  "allocationEmergency": 0.5,
  "allocationRetirement": 0.5,
  "allocationTaxable": 0.5
}
Response (chart arrays compacted)
{
  "ok": true,
  "model": "windfall",
  "specVersion": "1.0.1",
  "contractUrl": "/api/v1/models/windfall",
  "specUrl": "/api/v1/models/windfall/spec",
  "inputs": {
    "windfallAmount": 1005000,
    "highInterestDebtBalance": 100000,
    "highInterestDebtRate": 0.18,
    "taxableInvestmentReturn": 0.07,
    "retirementReturn": 0.07,
    "yearsToRetirement": 21,
    "marginalTaxRate": 0.24,
    "allocationDebt": 0.5,
    "allocationEmergency": 0.5,
    "allocationRetirement": 0.5,
    "allocationTaxable": 0.5
  },
  "outputs": {
    "allocationBreakdown": [
      {
        "label": "Debt Payoff",
        "value": 251250,
        "pct": 0.25
      },
      {
        "label": "Emergency Fund",
        "value": 251250,
        "pct": 0.25
      },
      "… 2 more"
    ],
    "interestSaved": 90000,
    "retirementFutureValue": 1040316.2966836295,
    "taxableFutureValue": 746163.3774225658,
    "totalFutureValue": 2127729.6741061956
  },
  "sentinels": [],
  "assumptions": [
    "Implements model spec windfall v1.0.1 (dual-implementation verified)."
  ],
  "facts": [],
  "record": {
    "sha256": "7ffde66236fed48bc226fce1f1ec3a7f634700eb1eb6abb6bce5f105886a5d10",
    "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.