{"model":"relocation","specVersion":"1.0.0","specUrl":"/api/v1/models/relocation/spec","inputs":{"currentSalary":{"kind":"float","min":30000,"max":300000},"newSalary":{"kind":"float","min":30000,"max":300000},"currentMonthlyExpenses":{"kind":"float","min":1000,"max":15000},"newMonthlyExpenses":{"kind":"float","min":1000,"max":15000},"movingCosts":{"kind":"float","min":0,"max":50000},"currentSavings":{"kind":"float","min":0,"max":500000},"annualReturn":{"kind":"float","min":0.02,"max":0.12},"yearsHorizon":{"kind":"int","min":1,"max":30}},"arrayInputs":{},"constraints":[],"sentinels":[{"field":"breakEvenMonths","value":9999,"meaning":"never breaks even (monthlyNetDelta ≤ 0)"}],"facts":[],"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."}