Methodology

The score in one paragraph

Every property on Scouq receives a deal score from 0 to 100. A higher score means the property clears more of the economic and motivational hurdles that define a viable investment deal: the projected profit is meaningful, the margin relative to purchase price is acceptable, the seller shows motivation signals, the rehab and title risk are manageable, and the market is liquid enough to exit. A score below 35 typically means the numbers do not pencil; a score above 55 with verified buyer demand moves the deal to "make offer" stage. The score is a prioritization filter. It is not investment advice, a valuation, an appraisal, or a guarantee of any outcome. Always verify rent, ARV, and rehab with a licensed agent or property manager before committing capital.

Score factors and weights

The final deal score is a weighted sum of five factors. Weights are read directly from config.example.json (the canonical defaults) and applied in src/scoring/mod.rs lines 300-308.

Factor Weight Description
profit +34 Projected flip profit scaled against the minimum acceptable profit ($20,000). Drives the bulk of the score.
margin +24 Flip margin as a percentage of purchase price, scaled against the minimum acceptable margin (10%). Guards against thin-spread deals.
motivation +22 Composite seller motivation score derived from days on market (x0.22), price drop percentage, and weighted motivation signals (see signal table below).
risk -16 Negative factor. Penalizes deals with high rehab-to-ARV ratios and adverse signal flags such as major repair risk or thin spread.
liquidity +16 Market liquidity proxy. Single-family scores 12/100; non-single-family scores 8/100. Rewards asset classes with deeper buyer pools.

The final value is clamped to [0, 100]. Each factor's raw score is also independently clamped before weighting.

Motivation signals and signal weights

Motivation signals are sourced from county records and public data feeds. Each signal carries an independent weight. Signal contributions decay with age: a signal older than 365 days retains 35% of its weight (recency floor). Weights from config.example.json:

Signal Weight Direction Description
vacant 13 Positive Property flagged as vacant in county records or USPS data. Strong motivation indicator.
price_drop 11 Positive Recorded listing price reduction. Scaled by signal_value (drop magnitude).
probate 12 Positive Property in probate or estate sale status per public court records.
long_dom 9 Positive Extended days on market (typically >90 days). Added to DOM factor in motivation composite.
absentee_owner 8 Positive Owner's mailing address differs from property address per county assessor records.
code_violation 7 Positive Open code enforcement violation per municipal data where available.
high_equity_area 5 Positive ZIP or tract with above-median owner equity, suggesting seller flexibility.
clean_title 4 Positive No recorded liens, judgments, or title clouds in public records.
older_roof -4 Negative Permit records or assessor data indicate roof age above threshold. Increases risk score.
major_repair_risk -10 Negative Foundation, structural, or system-level repair flag. Significant risk penalty.
thin_spread -12 Negative Wholesale spread below the minimum acceptable threshold. Penalizes deals where wholesale exit is not viable.

Flip and wholesale economics

Before scoring, the engine computes deal economics from these defaults (all from config.example.json, applied in src/scoring/mod.rs lines 269-281):

Strategy recommendation (flip vs. wholesale) is determined at line 310: flip wins when its projected profit exceeds the wholesale spread plus the assignment fee.

Stage thresholds

Deals are classified into action stages based on score and economics (src/scoring/mod.rs lines 240-251):

Data sources

Not every deal has every data point. When a data field is absent, the corresponding signal or factor defaults to zero rather than being estimated.

Limitations

Fair Housing

Scouq does not surface demographic data, school ratings that correlate with protected class demographics, neighborhood characterizations by race or ethnicity, or any other signal that functions as a proxy for a protected class under the Fair Housing Act. AI summary prompts include explicit Fair Housing guardrails instructing the model to omit any such characterizations. Signal weights are based on property and seller economics only. If you believe a score or summary contains a Fair Housing violation, contact hello@scouq.com immediately.

When scores recalculate

Audit trail

Every scored deal stores a score_breakdown JSON field in the deals table containing the raw factor values, signal contributions, and config snapshot used at scoring time. List price changes are recorded in the price_history table with timestamps. Users on Professional and Lifetime plans can request a per-deal explanation export by emailing hello@scouq.com. A self-serve breakdown view is on the roadmap.