addedInput schema / properties / inputs / additionalProperties
Added value: +true
changedInput schema / properties / inputs / description
Previous value: -"Deal inputs (price optional — arv/asking anchors the defaults)."New value: +"Deal inputs in camelCase engine keys. Anything omitted gets a documented default, listed back under assumptions.estimated_fields. price is optional here — the asking price or ARV anchors the price-derived defaults while the solver searches."
addedInput schema / properties / inputs / properties
Added value: +{
+ "adr": {
+ "description": "Average nightly rate in dollars. Required for str.",
+ "type": "number"
+ },
+ "arv": {
+ "description": "After-repair value in dollars. Required for brrr and flip.",
+ "type": "number"
+ },
+ "btsArv": {
+ "description": "Finished build-to-sell value in dollars. Required for newc.",
+ "type": "number"
+ },
+ "buildPsf": {
+ "description": "Build cost per square foot in dollars. Required for newc.",
+ "type": "number"
+ },
+ "downPct": {
+ "description": "Down payment. Expressed as a FRACTION (0.0675 = 6.75%), never a percent. Optional — a documented default applies.",
+ "type": "number"
+ },
+ "insurance": {
+ "description": "Annual insurance in dollars. Optional.",
+ "type": "number"
+ },
+ "landPrice": {
+ "description": "Land acquisition cost in dollars. Required for newc.",
+ "type": "number"
+ },
+ "livingSqft": {
+ "description": "Heated living area in square feet. Required for newc.",
+ "type": "number"
+ },
+ "marketRent": {
+ "description": "Expected monthly rent in dollars. Required for ltr and brrr.",
+ "type": "number"
+ },
+ "occupancy": {
+ "description": "Expected occupancy. Expressed as a FRACTION (0.0675 = 6.75%), never a percent. Required for str.",
+ "type": "number"
+ },
+ "price": {
+ "description": "Purchase price in dollars. Required for every strategy except newc.",
+ "type": "number"
+ },
+ "rate": {
+ "description": "Annual interest rate. Expressed as a FRACTION (0.0675 = 6.75%), never a percent. Optional.",
+ "type": "number"
+ },
+ "rehabBudget": {
+ "description": "Renovation budget in dollars. Required for brrr and flip.",
+ "type": "number"
+ },
+ "taxes": {
+ "description": "Annual property taxes in dollars. Optional.",
+ "type": "number"
+ },
+ "term": {
+ "description": "Loan term in years. Optional.",
+ "type": "number"
+ },
+ "units": {
+ "description": "Multifamily rent roll — {unitCount, avgRent, marketRent?} or an array of unit objects. Required for multifamily.",
+ "type": "object"
+ },
+ "vacancyPct": {
+ "description": "Vacancy allowance. Expressed as a FRACTION (0.0675 = 6.75%), never a percent. Optional.",
+ "type": "number"
+ }
+}
addedInput schema / properties / targets / additionalProperties
Added value: +true
changedInput schema / properties / targets / description
Previous value: -"Optional target overrides, e.g. {\"cocReturn\": 0.10, \"dscr\": 1.25}."New value: +"Return targets the price must still satisfy. Omit to use each strategy's defaults."
addedInput schema / properties / targets / properties
Added value: +{
+ "afterTaxAnnualROI": {
+ "description": "Flip: minimum annualized after-tax ROI. Expressed as a FRACTION (0.0675 = 6.75%), never a percent.",
+ "type": "number"
+ },
+ "afterTaxMargin": {
+ "description": "Flip: minimum after-tax profit margin. Expressed as a FRACTION (0.0675 = 6.75%), never a percent.",
+ "type": "number"
+ },
+ "capitalRecovery": {
+ "description": "BRRRR: minimum share of invested cash returned at refi. Expressed as a FRACTION (0.0675 = 6.75%), never a percent.",
+ "type": "number"
+ },
+ "cocReturn": {
+ "description": "Minimum cash-on-cash return. Expressed as a FRACTION (0.0675 = 6.75%), never a percent.",
+ "type": "number"
+ },
+ "dscr": {
+ "description": "Minimum debt-service coverage ratio, e.g. 1.25.",
+ "type": "number"
+ },
+ "monthlyCF": {
+ "description": "Minimum monthly cash flow in dollars.",
+ "type": "number"
+ }
+}
changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "additionalProperties": true,
+ "properties": {
+ "binding_constraint": {
+ "additionalProperties": true,
+ "type": "object"
+ },
+ "ceilings_per_target": {
+ "additionalProperties": true,
+ "type": "object"
+ },
+ "mao": {
+ "description": "Maximum allowable offer in dollars.",
+ "type": "number"
+ },
+ "metrics_at_mao": {
+ "additionalProperties": true,
+ "type": "object"
+ },
+ "strategy": {
+ "type": "string"
+ },
+ "summary": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "mao",
+ "summary"
+ ],
+ "type": "object"
+}