How it works
From an address to an offer you can trust.
Rafter turns a single property address into a defensible valuation, a realistic rehab budget, and a maximum offer — using real market data and the same logic a careful underwriter would apply by hand. Here is exactly how, in plain English.
Add a Project
Enter an address; Rafter pulls specs, tax data, and photos.
Valuation
Automatic comp pipeline produces ARV and as-is value.
Rehab Budget
Line-item budget from your own cost library, scaled by condition.
Deal Economics
MAO, full cost stack, profit, ROI, and a live price slider.
Execute
Contract tracking, rehab spend, draws, proof of funds, and a shareable report.
Add a Project
Enter an address; Rafter pulls specs, tax data, and photos.
Valuation
Automatic comp pipeline produces ARV and as-is value.
Rehab Budget
Line-item budget from your own cost library, scaled by condition.
Deal Economics
MAO, full cost stack, profit, ROI, and a live price slider.
Execute
Contract tracking, rehab spend, draws, proof of funds, and a shareable report.
Step 1 · Add a Project
Enter an address — Rafter does the rest
Type any residential address. Rafter matches it against a licensed property data provider (REAPI), pulls the subject's specs and photos, and pre-fills the project. If the address is ambiguous, you'll see "did you mean?" suggestions to pick the right parcel before anything else runs.
-
1
Property match
Rafter looks up the address in REAPI and returns the matched property record — including beds, baths, square footage, year built, lot size, and condition grade.
-
2
Tax and ownership data
Assessed value, tax history, and ownership information are pulled alongside the property specs so you have the full public record in one place.
-
3
Photos
Listing photos are fetched automatically so you can eyeball condition without opening another tab.
-
4
Ambiguity resolved up front
If the address string matches more than one parcel, Rafter surfaces the candidates and asks you to confirm before running any analysis — no silent wrong-address errors downstream.
Step 2 · Valuation
Automatic ARV and as-is value — benchmarked, not guessed
The moment a project is added, Rafter runs the comp pipeline automatically. Every step — searching, filtering, scoring, adjusting, and reconciling — happens without you lifting a finger. Low-confidence cases are flagged instead of silently accepted. Everything is tunable if you want to dig deeper.
-
1
Comp search in widening tiers
Rafter starts with nearby recent sales and expands the search radius in steps until it has enough quality comps. The search keeps going until the pool covers the subject's value tier — if no comp at the right price tier was found, Rafter flags low confidence rather than handing you a number built on wrong comps.
-
2
MLS spec refresh
After comps are found, Rafter refreshes each comp's specs from MLS records so the size and bedroom data used in scoring and adjustments is as accurate as possible — not stale county-record data.
-
3
Guardrails filter wrong-tier and wrong-size sales
A comp that sold at a very different price per sqft than the subject — indicating a different condition tier or property type — is filtered out before scoring. Size guardrails catch oversized or undersized comparables that would distort the result.
-
4
Relevance scoring
Each remaining comp is scored 0–100 on five factors: recency (linear decay over your max comp age), living area match, beds, baths, and location (same census tract gets full credit; same ZIP is the fallback; different area scores zero). Higher score = more weight in the final ARV.
-
5
Market-derived adjustments per comp
Each comp's sale price is adjusted to the subject's specs. The per-sqft adjustment rate is derived from the local comp pool itself — not a fixed national number — so it reflects what buyers in this market actually paid per square foot. Sane caps prevent any single comp from being adjusted beyond a defensible range.
-
6
ARV and as-is value separately
ARV comes from comps that sold in renovated, retail condition. As-is value blends a lender-grade AVM with the distressed-sale end of the comp pool. They are kept separate so both numbers are anchored to the right evidence.
-
7
Benchmarked engine
The pipeline has been tested against hundreds of known sale outcomes across Pennsylvania. You can tune search radius, comp count, scoring weights, adjustment rates, and caps in Valuation Configuration — or add manual comps by address, toggle comps in/out, adjust per-comp weights, and override data or adjustments on any individual comp.
Under the hood — the valuation method Show
Starting defaults, not fixed rules. The thresholds and rates below are Rafter's out-of-the-box settings for a new account. Every one is adjustable in Valuation Configuration — search radius, comp count, scoring weights, adjustment rates, caps, and more — so the engine matches your market, not ours.
Data sources
Subject details, photos, and sold comparables come from REAPI (licensed property-data API). MLS records refresh comp specs after the initial search. A lender-grade AVM anchors the as-is value. You can exclude comps, adjust weights, and override the final value in-app.
Comp search (progressive & tier-aware)
Rafter searches in widening tiers — tightening or relaxing size and bed/bath tolerance per tier — until the pool has enough comps and at least one comp sold within the subject's price-per-sqft tier. Out-of-the-box defaults (all adjustable): starting radius 1.5 mi, maximum 5 mi, sales within the last 12 months, keeping the best 5–8 comps. When auto-radius is on, the radius scales with area density.
Selection guardrails (what gets filtered, and why you can see it)
Before scoring, every fetched sale must pass sanity checks. Out-of-the-box thresholds:
- Sale price within +25% / −45% of the subject's AVM — a sale far above is a different tier; far below is the distressed band.
- Living area within 65–155% of the subject's — adjusting a 1,200 sqft sale to stand in for a 3,900 sqft home isn't a comp, it's a guess.
- $/sqft within 55–135% of the subject's implied $/sqft and 55–145% of the pool median — stale county sqft can make a luxury sale look similar on paper.
- Structure category sanity — condo and multi-family sales are flagged against single-family subjects on the comp cards. (Full attached-vs-detached enforcement isn't possible yet: the sales feed labels nearly every home "SFR" regardless of style — we say so rather than guess.)
Nothing is filtered silently: sales that fail a guardrail (or score below the cut) appear greyed-out in your comp gallery with the exact reason — and one click re-includes any of them if you disagree. A Fetch more comps button widens the radius and lookback when the pool runs thin.
Relevance scoring (0–100)
Starting weights (all adjustable in Valuation Configuration):
- 30% living area (sqft match)
- 25% location (same census tract = full credit; same ZIP = fallback; different area = none)
- 20% recency (linear decay to zero at max comp age, default 12 months)
- 15% bedrooms
- 10% bathrooms
Effective comp weight in the final average = (relevance score ÷ 100) × your manual weight, if any.
Physical adjustments (per comp)
Each comp's sale price is adjusted to the subject's specs. The $/sqft rate is derived from the local comp pool (not a fixed number) and applied to the living-area difference. Other starting rates (each editable):
- $15,000 per bedroom difference
- $10,000 per full-bath difference
- $5,000 per half-bath difference
- $1/sqft lot-size difference
- $5,000 per garage space (garage and basement data is pulled per comp from full property records, since sale feeds rarely carry it)
- $300 per year of age difference
- Finished basements display on every card; the automatic basement adjustment defaults to off — we benchmarked it and county basement data is too unreliable to auto-price, so you can set a per-comp $/sqft rate when you know the local premium
One honest limitation: our data source doesn't report architectural style (Cape Cod vs. ranch vs. split-level). Structure type, stories, and year built are the proxies we match and display; style-level matching is on the roadmap pending a richer data source.
If a comp's net or gross adjustments exceed your caps (defaults: 15% net / 25% gross of sale price), its weight is reduced to 20% of normal so one outlier comp cannot dominate.
Outlier trim & reconciliation
- With 5+ comps, the highest and lowest adjusted values are dropped before averaging.
- If the weighted average and median diverge by more than 10%, they are blended 50/50 to reduce skew.
Low-confidence flagging
When no comp sold within the subject's value tier, Rafter flags the result as low confidence — it does not silently produce an ARV anchored to wrong-tier sales. You'll see the flag and can add manual comps or adjust the search to address it.
ARV vs. as-is (segmentation)
Comps are split at the median $/sqft into a retail band and a distressed band. ARV uses the retail band. As-is blends the lender-grade AVM with the distressed band — when they agree within 25%, they are averaged; when they diverge, the AVM takes precedence unless the subject is genuinely distressed.
The source ladder
Every project computes several independent values, visible side-by-side in the Compare Valuation Models panel: the comp-adjusted ARV, a lender-grade AVM (with confidence and range), a standard AVM, the unadjusted comp average, and a raw list of the most recent nearby sales. The headline number follows a strict ladder — comp-adjusted engine first, then lender AVM, standard AVM, comp average, and Zestimate as the last resort — and the panel badges exactly which source is driving it. Your manual value, when entered, always wins.
Benchmark discipline
Every change to this pipeline is replayed against a benchmark of hundreds of real Pennsylvania sales with known outcomes before it ships — including an honesty mode that values each property using only the sales that existed on its actual sale date, so the engine can't peek at the future. We track median error and whether the true price lands inside the [as-is, ARV] envelope. If a change doesn't beat the benchmark, it doesn't ship.
Step 3 · Rehab Budget
What it costs to renovate — your numbers, not ours
Rafter generates a line-item rehab budget from your own configured cost library. You set the rates once; every future deal uses them automatically. The budget is fully editable per project, and you can log actual spend against it as the job runs.
-
1
Your cost library drives every budget
The price book you configure in Budget Configuration is the engine: each line item has a rate type ($/sqft, per-bedroom, per-bathroom, or fixed) and a base rate you set. A 2-bath house and a 3-bath house automatically produce different plumbing estimates because the math scales to the actual property.
-
2
Condition sets the intensity
The property's condition grade (from the data, or your manual override) maps to one of five intensity levels — rent-ready, cosmetic, standard, heavy, or full gut. Each level multiplies the relevant line items, so a distressed gut job does not get the same budget as a cosmetic refresh.
-
3
Fully editable per project
Every line item is editable. Delete categories that do not apply, add unlisted work, or override a dollar amount for a specific job. Rafter regenerates from your library on demand, but your edits stick.
-
4
Track spend against the budget
Once under contract, you can log expenses against each budget line as work progresses — so you always know where you stand against the original estimate, not just the final number.
Under the hood — the budget method Show
Starting defaults, not fixed rules. The categories, rate types, and multipliers below are starting points for a new account. All are editable in Budget Configuration — add or remove line items, change any rate, set condition multipliers, and add per-ZIP market factors.
Price book structure
The default price book includes categories such as Exterior, Roof, Plumbing, Electrical, HVAC, Drywall, Paint, Kitchen, Bath, Finish Out, and Flooring. Each uses one of four calculation types:
- Per sqft — rate × living area (e.g. flooring, paint, drywall)
- Per bath — rate × bathroom count (e.g. plumbing, bath remodel)
- Per bed — rate × bedroom count (available for custom categories)
- Fixed — flat amount regardless of size (e.g. roof replacement, HVAC system, kitchen)
Cost formula per line item
adjusted cost = raw cost × condition multiplier × market multiplier
Categories you flag for condition scaling get the full multiplier. Categories like Paint can be set to 1.0× — a cosmetic refresh does not get a condition discount on paint. Fixed-cost categories (roof, HVAC) also scale with condition when flagged, so a rent-ready property is not charged for a full replacement.
Condition intensity tiers
Starting multipliers (each editable in Budget Configuration):
- Rent-ready — 0.35× (e.g. excellent, turnkey, updated)
- Cosmetic — 0.65× (e.g. good, above average)
- Standard — 1.00× (average; also used when condition is unknown)
- Heavy — 1.50× (e.g. fair, below average, dated)
- Gut — 2.00× (e.g. poor, distressed)
Market (ZIP) multiplier
Every line item is multiplied by a market factor for the property's ZIP code. Add overrides per ZIP in Budget Configuration to reflect local labor and material costs; a base 1.0× applies when no override matches.
Step 4 · Deal Economics
One screen. Every number. Live.
ARV, rehab, and your fee schedule combine into a single deal analysis that updates in real time. Change a comp, edit a budget line, or drag the price slider — every output on the page stays in sync automatically.
-
1
Max Allowable Offer (MAO)
MAO = ARV × your LTV% − rehab budget. With your LTV set to 75% and a $50K rehab on a $400K ARV: $400K × 75% − $50K = $250K max offer. The LTV is yours to set — 70%, 75%, 80%, whatever your buy box requires.
-
2
Full cost stack
Total cost = purchase price + rehab + closing fees (from your configured fee schedule) + holding costs ((purchase + rehab) × monthly rate × projected hold months). Profit = ARV − total cost − selling costs. ROI and margin follow from those same inputs.
-
3
Interactive price slider
Drag the price slider to any offer amount and watch the spread to MAO, projected profit, ROI, capital stack (cash to close, projected loan, monthly carry), and a viability verdict update live — green (at or below MAO), amber (within your negotiable threshold), or red (above MAO by more than that threshold).
-
4
Single source of truth
Every number on the deal page — MAO, profit, ROI, capital stack — derives from the same inputs. There is no separate spreadsheet to keep updated. Adjust the valuation, the budget, or the price, and the whole analysis recalculates.
Under the hood — the deal math Show
Starting defaults, not fixed rules. Percentages and fee assumptions below are starting points you set once per account. Adjust max LTV, buying/selling fee schedules, monthly hold rate, hold period, and viability thresholds to match how you actually underwrite and finance deals.
Max Allowable Offer
The default max LTV is 70% — change it to match your buy box. Example at 75%: ARV $400K × 75% − $50K rehab = $250K MAO.
Total cost
holding costs = (purchase + rehab) × monthly rate × months
- Buying fees — itemized from your fee schedule (title, points, etc.) against purchase price and projected loan.
- Holding costs — monthly carry at your hard-money rate (starting default 1%/month) for your expected hold period.
- Selling fees — itemized from your sale-side fee schedule against ARV.
Profit, ROI, and margin
ROI = profit ÷ total cost
margin = profit ÷ ARV
Capital stack
Rafter shows cash to close (purchase + buying fees − loan), projected loan amount, monthly carry, and total projected holding cost — so you see the full capital picture alongside the offer ceiling.
Viability signal
- Green — asking at or below MAO
- Amber — asking within your negotiable threshold above MAO (default 5% of ARV — adjustable)
- Red — asking above that threshold
Step 5 · Execute
From offer to close — tracked in one place
Once you decide to move on a deal, Rafter stays with you through close. Mark the project under contract, track rehab spend against the budget, and generate the documents you need to move fast.
Mark under contract
Flag the project as under contract so your pipeline reflects real status — active underwriting vs. deals you own.
Track rehab spend and draws
Log actual expenses against each budget line as work progresses. Track draws so you always know your running total versus the original estimate.
Proof of funds
Generate a proof of funds letter directly from the project — ready to send to sellers or agents without leaving the app.
Shareable property report
Produce a shareable report summarizing the deal — valuation, budget, and economics — for partners, lenders, or your own records.
A worked example
One address, start to finish
A 1,200 sqft, 3-bed / 1-bath row home in Lancaster, PA, in standard condition.
After Repair Value (ARV)
Comp pipeline result — weighted, adjusted, retail-tier comps.
$280,000
As-is value
AVM blended with distressed-tier comp pool.
$195,000
Rehab budget
Line-item budget from your cost library at standard condition.
− $52,000
ARV × 75% LTV
The value ceiling before rehab.
$210,000
Maximum Allowable Offer
($280,000 × 75%) − $52,000 rehab
$158,000
Illustrative figures based on Rafter's default settings. Your own comps, price book, and offer rules will tailor every number to your business.
Tailored to your business
Every number is yours to control
Rafter ships with sensible defaults so you get a useful answer on day one — but every assumption is configurable. Set it once to match your market, your crews, and your buy box, and it follows every deal you analyze from then on.
Valuation & comps
- Search radius (start & maximum) or auto-adjust by area density
- How recent and how many comps to require
- Relevance weights: recency, size, beds, baths, location
- Market-derived $/sqft adjustment and rates for beds, baths, lot, garage, age
- Appraiser-style caps on how far a comp can be adjusted
- Manual comps, per-comp weight/include toggles, data and adjustment overrides
Rehab price book
- Add, remove, or rename cost categories
- Set each rate as $/sqft, per-bath, per-bed, or fixed
- Choose which categories scale with condition
- Condition multipliers from rent-ready to full gut
- Per-ZIP market multipliers for local pricing
Deal economics
- Max LTV % for MAO calculation
- Itemized buying and selling fee schedules
- Monthly hard-money / holding rate and projected hold period
- Viability thresholds for the green/amber/red signal
See it on a real address
Run a property through the engine yourself, or start analyzing deals in minutes.