{"model":"second-home","specVersion":"1.1.0","specUrl":"/api/v1/models/second-home/spec","inputs":{"purchasePrice":{"kind":"float","min":100000,"max":2000000},"downPaymentPct":{"kind":"float","min":0.1,"max":0.5},"mortgageRate":{"kind":"float","min":0.03,"max":0.12},"mortgageTerm":{"kind":"int","min":15,"max":30},"propertyTaxRate":{"kind":"float","min":0.005,"max":0.025},"insuranceAnnual":{"kind":"float","min":500,"max":10000},"maintenancePct":{"kind":"float","min":0.005,"max":0.03},"rentalIncomeMonthly":{"kind":"float","min":0,"max":10000},"occupancyRate":{"kind":"float","min":0,"max":1},"appreciationRate":{"kind":"float","min":0.01,"max":0.1},"annualReturn":{"kind":"float","min":0.02,"max":0.12},"yearsHorizon":{"kind":"int","min":5,"max":30}},"arrayInputs":{},"constraints":[],"sentinels":[{"field":"breakEvenYears","value":999,"meaning":"never — NOI ≤ 0 can never recover the down payment"}],"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."}