Each deal gets loaded into the calculator, the cascade re-runs, and the corrected profit is saved back to Supabase. This can take a few minutes for large lists.
0 of 0 deals
🌍 Geocoding Usage & Cost
Cumulative records geocoded in LAB Spot. Cost = count ÷ 1,000 × $5 (Google Geocoding API standard rate). All-time seeds from your current DB on first use, then increments with each new geocode — deleting records won't reduce historical spend.
All-time
$0.00
0 records
This month (—)
$0.00
0 records
0% of monthly threshold used
Adjust counts (e.g. to match your actual Google Cloud Console numbers)
📥 Imports
📣 Marketing
📝 Logs
📈 Results
📐 Underwriting
🤝 Dispositions
🔨 Renovation
🏘️ Holdings
📷Photos
Lists uploaded
0
—
Properties
0
unique, deduped
Geocoded
0
0% complete
Duplicates caught
0
merged into existing
Vendors used
0
—
Total phones
0
across all vendors
Total emails
0
across all vendors
⬆️ Upload
❓ Unverified 0
🏘️ Properties
🏢 Vendors
⛔ Non-Skiptraced 0
📬 No Mailing 0
☎️ No Phone 0
✉️ No Email 0
📥 Upload Property List
Step 1
Drop a CSV or XLSX. We'll auto-detect columns, normalize addresses via Google Maps, and dedupe.
📄
Drop CSV/XLSX here or click to choose
Any column layout — we figure it out
📞 Upload Skiptrace Results
Step 2
After you've loaded property lists, drop the skiptrace vendor's CSV here.
📞
Drop skiptrace CSV/XLSX
Matches to existing properties by normalized address
Any column layout — we auto-detect phones, emails, and owner fields per vendor.
⏳Loading existing skip records…
Hold off on dropping a new CSV until this clears — keeps your dedupe check honest.
Uploaded Lists
List name
Uploaded
New
Flags
Actions
No lists yet.
Skiptrace Uploads
Vendor
Uploaded
Records
Actions
No skiptrace uploads yet.
Properties
0 selected
0total records
Per page:
Address
City
ST
ZIP
Owner
Geocode
Flags
Phones
Lists
No properties yet.
📋 Active list scope
Pick one or more lists below. Vendor stats, hit rates, and the comparison panels are all filtered to those lists. Leave all chips off to include every list. Synced with Marketing → Vendors.
Skiptrace Vendors
Vendor ↕
Record price ↕
Monthly cost ↕
Records skiptraced ↕
Hits ↕
Hit rate ↕
Props matched ↕
Props w/ phone ↕
Props w/ email ↕
Props w/ mail addr ↕
📊 Vendor comparison & overlap
📞 Phone numbers
📬 Mailing addresses
✉️ Emails
🔥 Number Heat
A phone number's heat = share of providers that returned it for the same property.
🔥 Hot
0
—
Click to view →
♨️ Warm
0
—
Click to view →
❄️ Cold
0
—
Click to view →
🔥 Hot & listed 1st by a provider
0
—
Click to view →
Vendor Comparison
Side-by-side: each vendor's coverage, heat contribution, overlap with other vendors, cost per hit.
Vendor
Records
Hits
Coverage
Unique phones
♨️ Warm
❄️ Cold
🔥 Hot share
🔥 Hot @ slot 1
Overlap phones
Unique emails
Cost
$/hit
📬 Mailing Address Coverage
Best mailing address per property = the most common address seen across the property's original record and every vendor's skiptrace row.
📬 With mailing address
0
—
Click to view →
🚫 No mailing address
0
—
Click to view →
🏆 Most common mailing address
—
—
Coming Next
Per-vendor mailing-address contribution (who provided what, which match the property record, absentee-owner scoring).
✉️ Email Comparison
Coming next — hot/warm/cold heat for email addresses, vendor-by-vendor contribution, and coverage stats mirroring the phone-numbers tab.
🤝 Vendor Overlap — 1-on-1
For each pair of providers: how many phones / emails / mailing addresses they share on the same property, and how many each has that the other doesn't. Smaller overlap = more differentiated data, higher combined value.
Cell value = items both row-vendor and column-vendor have for the same property. Diagonal = vendor's total distinct items.
🏠 Unverified Properties 0
📞 Unmatched Skiptrace 0
📬 Unverified Mailing 0
🏠 Unverified Properties
Properties Census couldn't geocode. Fix the address and retry, or fall back to Google for one-offs.
—
Owner
Street
City
State
ZIP
Lists
Offer
Error reason
Actions
📞 Unmatched Skiptrace Rows
Rows from a skiptrace upload whose address didn't match any property in the DB. Retry with a geocode to canonicalize the address (often fixes spelling/format issues), or add it as a brand-new property so the vendor's phones/emails can be linked.
—
Vendor (source)
Uploaded
Street
City
State
ZIP
Offer
Actions
📬 Unverified Mailing Addresses
Properties with a mailing address on file that hasn't been run through the geocoder yet, or that the geocoder couldn't verify. A verified mailing address is the strongest absentee-owner signal you have.
—
Owner
Property
Mailing street
City
State
ZIP
Offer
Source
Actions
⛔ Non-Skiptraced Properties
Properties in your system that have zero skiptrace records from any vendor. Best candidates for the next skiptrace pull.
—
Address
City
State
Zip
Lists
📬 No Mailing Address On File
Properties with literally no mailing address from any source — none on the property, none from any skiptrace vendor. Direct mail is impossible until you find one.
—
Property address
Mailing on file
Offer
Lists
☎️ No Phone Numbers
Properties with zero phone numbers across any vendor. Cold outreach is impossible until skiptraced.
—
Address
City
State
Zip
Skip records
Lists
✉️ No Email Addresses
Properties with zero email addresses across any vendor. Email outreach campaigns can't reach these owners until enriched.
—
Address
City
State
Zip
Skip records
Lists
📋 Lists
🏢 Vendors
🎯 Campaigns
🏚️ Foreclosure
0
0 properties
⚖️ Probate
0
0 properties
🚧 Code Violation
0
0 properties
⚡ Utility Lien
0
0 properties
🔥 Fire Damage
0
0 properties
📬 Absentee
0
0 properties
🏘️ Vacant
0
0 properties
👵 Senior Owner
0
0 properties
🚪 Eviction
0
0 properties
💔 Divorce
0
0 properties
💰 Tax Delinquent
0
0 properties
👮 Arrested
0
0 properties
💼 Bankruptcy
0
0 properties
📎 Liens
0
0 properties
🌎 Out-of-State
0
0 properties
🏷️ Other
0
0 properties
📋 All Properties
Every property in your system. Stack filters to drill down — flag combinations (AND/OR), contact status, geocode status, state, import date.
Flags:
Lists:
—
Owner
Property
Mailing
Top phone
Last contact
Flags
📋 Active list scope
Pick one or more lists below. Every vendor count and every CSV download in this section is filtered to those lists. Leave all chips off to include every list.
🏢 Vendor Download For Campaigns
Pick a vendor and download a CSV with one row per matched property — first/last name, property address, top 4 phones, top 2 emails, mailing address. Drop straight into a calling or mailing campaign.
Filter by vendor (click chips to toggle — leave all off for every vendor). Stacked & Master downloads only include the selected vendors:
Vendor
Properties matched
Phones
Emails
w/ mailing addr
Download
CSV columns: First Name · Last Name · Address · City · State · Zip · Phone 1 · Phone 2 · Phone 3 · Phone 4 · Email 1 · Email 2 · Mailing Address · Mail City · Mail State · Mail Zip
🎯 Saved Campaigns
Each campaign is a saved snapshot of properties from the Marketing → All Properties view. Pick which vendors to include, then export ready-to-call CSVs.
📭
No campaigns saved yet. Go to Marketing → Lists, filter to the slice you want, then click 💾 Save as Campaign.
👥 Employees
Drop a fresh Campaign Agent Performance CSV anytime to refresh. Re-imports overwrite the same day. For live mid-day stats, export every hour or two.
→
No agent data yet.
📅 Upload CallTools Agent Performance
Drop a Campaign Agent Performance CSV exported from CallTools → Reports → Performance Reports → Campaign Agent Performance. Date parsed from the filename. Re-importing the same day overwrites.
👥
Drop agent performance CSV
📝 Saved Logs
📥 Upload Call Results
Drop a Twilio / BatchDialer / ReadyMode export.
📞
Drop CSV/XLSX
📊 Uploaded to DB
—
total uploaded
Loaded in app
0
in current view
Unique numbers
0
Matched to properties
0
Peak hour (local)
—
🔥 Motivated
0
results
📅 Follow Up
0
results
🚫 Not Interested
0
results
💰 Sold
0
results
📋 Listed
0
results
🌳 Land
0
results
📋 Records
📊 Overview
📋 List scope
Restrict the panels below to phones whose property belongs to a specific list. Default = all lists.
🔥 Heat Of Your Called Numbers
Of the unique numbers you actually dialed, how many are Hot/Warm/Cold based on vendor agreement, and how many were listed as phone-1 by at least one provider.
🔥 Hot
0
—
♨️ Warm
0
—
❄️ Cold
0
—
🔥 Hot & listed 1st
0
—
❓ Unknown (no vendor has it)
0
—
👥 Owners Talked To
0
—
📞 Providers On Your Called Numbers
For each phone you called, which skiptrace vendors had that number on file.
🎯 Best 2-Vendor Combo On Your Dials
For every pair of providers, how many of the phones you actually dialed at least one of the two had. "Slot 1 only" = vendor's primary guess. "Any slot" = vendor had the number anywhere in their list.
—
Rank
Pair
Combined
Coverage %
📊 Call Volume By Hour
Local hour (from Last Contact). Hover a bar for exact count.
→
12a
1a
2a
3a
4a
5a
6a
7a
8a
9a
10a
11a
12p
1p
2p
3p
4p
5p
6p
7p
8p
9p
10p
11p
📅 Call Volume By Day of Week
Sunday–Saturday. Uses the same Lists filter + meaningful-disposition toggle above.
Peak day: —
Sun
Mon
Tue
Wed
Thu
Fri
Sat
🗓️ Call Volume By Month
Jan–Dec. Uses the Lists filter above. Use the year picker to scope a specific year, or pick All Years to combine.
Peak: —
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
Contact Coverage By List
How many properties in each list you have reached at least once (any result counts). The red Unmatched bar shows results whose address did not link to a property in any of your lists.
🎯 Motivated Leads per Owner — by Tag
For each property tag (Vacant, Foreclosure, etc.), the share of owners (unique properties) that produced at least one motivated disposition. Higher = that tag converts to leads more reliably. Tags with fewer than 5 owners contacted are skipped to keep ratios meaningful.
📋 Dispositions Per List
Each result is counted under every list its property belongs to. Results that didn't match a property fall into "Unknown list." 🏆 goes to whichever bucket (including Unknown) has the highest motivated % of results (≥10 results minimum). Hide Unknown with the checkbox if you only care about named lists.
📍 Motivated Leads per Owner — by County
For each county, the share of owners (unique properties) that produced at least one motivated disposition. Counties with fewer than 5 owners contacted are skipped. Properties without a geocoded county fall into 'Unknown County' at the bottom.
🌍 Batch geocode unmatched
Try 🔗 Local first (free, instant) then fall back to Census/Google for the leftovers.
🔗 Local:
Batch size:
Call Records
📅 Today: 0
✓ Verified
Channel
Disposition
Name
Address
Phone
Time
Lists
Flags
Providers
No call results uploaded yet. Drop a CSV above to get started.
📜 New —
🔁 Assigning —
🔥 Hot —
✅ Assigned —
💀 Dead —
🌱 Recent —
🔎 Vetting —
? Unknown —
✓ Qualified —
✗ Unqualified —
🎯 Per Deal
🗺 GIS
📋 All —
❓ Help —
🔍 Analyzing —
⭐ Priority —
🕵️ Check —
✅ Analyzed —
🔥 Hot —
📤 Offered —
📷 Inspection —
📝 Contracted —
🏁 Finalized —
🗑️ Trash —
🗺 GIS Maps
County assessor / GIS portal links collected from your deals. Click any link to open its parcel in a new tab.
No GIS map links yet — open a deal and paste a link into the "Assessor Site / GIS Map URL" field on Property Info to start building this list.
Location
Source
GIS Map Link
Open
📇 County Contacts
County offices and the people you work with — assessor, recorder, building/permits, and more. Add as many department contacts per county as you need.
No county contacts yet — click "+ Add County" to add one.
🗺 Add Assessor Site
Add a new county GIS / assessor portal URL to your input list. City is optional — leave blank for county-wide references.
📇 Add County
Department Contacts
Websites
📐 Deal Calculator
Single-property underwrite. Enter inputs, formulas auto-recalculate.
Idle
📄 Packet Asking Price
Override the asking price shown to buyers. Leave blank to use Cash Flip Max × 1.20 (rounded to nearest $1,000). Packet-only — your underwriting math is unchanged.
📋 Deal Status
ARV − Asking
—
Suggested Offer
—
Max Offer
—
Commission
—
🏠 Property Info
💰 Comparable Sold Properties (drives After Repair Value)
Sold Comparable Properties (3) — enter sale prices to auto-derive A$/SqFt average. Zillow / Google icons auto-link from the address.
✏️ Edit mode — Drag any field to move it: drop on the upper half of another field to insert above it, lower half to insert below, or drop in empty column space to append at the end. Works between columns AND for re-ordering within the same column. Click a column header to rename it. + Add Column creates a new group. ✕ next to a header deletes that column (its fields move to the first column). + Add Custom Item adds a new field row in the Custom Items section. Click "✓ Done Editing" when finished.
🛠️ Rehab Calculator
Multiplier: Total Livable SqFt
RECOMMENDED MATERIALS — BUILDER GRADE▼
Quick presets:
⚠ Pre-1978 home detected — Lead paint and asbestos testing recommended. Auto-suggested in Special Cases below.
⚡ Estimated Renovation
Each box auto-checks the matching detailed items below. Use this for fast estimates; use the Detailed Breakdown below to fine-tune.
$/SqFt
$0.00
Estimated Total
$0
includes special cases · excludes contingency
🏠 Occupancy Status
If occupied, +2 months added to project timeline (eviction / move-out time).
Timeline Adjustment
+0 days
⚠️ Special Cases — Hazards & Disasters
Severity-based flat rates (Light / Moderate / Heavy). Click any tier to add to your total.
Special Cases Total
$0
▶
Material Cost
$0
—
Labor Cost
$0
—
Total Labor Hours
0
~0 days
Project Total
$0
before contingency
Budget Contingency
$0
20% standard
Occupancy Contingency
$0
+0% · vacant
■ Material■ Labor
🎯 Grand Total + Cost Contingency$0
🔁 Override$
Override empty → exits use Grand Total. Type a number → exits use that.
PROJECT SCHEDULE ESTIMATE
Repossession
0
vacant · none
Renovation w/ Crew
0
0 work days + 30% buffer
Listing Time
0
market default
Total Time
0
~0 weeks
000
📅 Estimated Project Duration
0 days · 0 weeks · 0 months
WHO TO HIRE — by category and special case
▶
🎯 Final Rehab Amount (used by the exit math): $0
💰 Ideal Flip Profit
Slide to dial in the profit you want before you'll do the deal. Worse condition + longer project = higher margin. Five benchmarks marked, smooth in-between and past Complete.
Cosmetic ≤$10/sf 8%
Light $25/sf 10%
Medium $35/sf 15%
Heavy $50/sf 20%
Gut $70/sf 25%
Monster $85+/sf 35%
Condition
—
Base margin
—
Time bonus
—
Final margin
—
Ideal profit $
—
—
📈 Equity per Dollar of Rehab
For every dollar of rehab spent, how much equity (ARV minus what you paid + spent) does it create. A high ratio means cheap value-add work; a ratio below 1 means you're spending more than you're creating.
—
📅 Timeline (Flip + Refi)
Reno time is pulled directly from the Rehab Calculator → Estimated Project Duration (labor hours × crew + bottleneck buffer + time contingency). Listed-to-sell is fixed at 2.5 months (market average). Wholesale + Wholetail aren't affected. Add or remove items in the Rehab Calculator to change the timeline.
—
🎯 Best Exit Strategy
Five exits compared side-by-side using your inputs above. Click any card to see its full cost & profit breakdown. Recommendation = highest expected return adjusted for time and capital tied up.
—
📝 Notes
Free-form notes for this deal. Auto-saves with the rest of the underwrite.
💰 Budget & Scope
Budget Use0%
Spent: $0Budgeted: $0
Timeline Use—
Start: —Set the closing dateTarget: —
Items shown here are the ones checked in the 🔨 Renovation rehab calculator.
Budgeted = $/SF × property sqft. Enter what you actually spent per item — the bar updates automatically and stays read-only.
🛠 Scope of Work
Itemized list of every task checked in the Rehab Calculator, plus a free-form notes field for anything not covered above (contractor names, permit numbers, special instructions).
Items from Rehab Calculator0 items
No items checked yet — open the 🔨 Renovation tab and tick what needs work.
Phase Timelines—
Each phase has its own duration. Sequential phases run one after another. Parallel phases (e.g., exterior work) run alongside the sequential timeline — total project time = max(sequential, parallel).
📎 Contractor Quotes
🔍 Analyzing
Status empty or Evaluating.
Nothing in analyzing. Underwrite one in the Deal Calculator and click 💾 Save (leave Offer Status blank or set to "Evaluating").
Address
Offer
Rent
ARV
Asking
Max Offer
Accepted
Budget
Exit Margins
Imported
Actions
⭐ Priority
Manually flagged for priority follow-up.
Nothing flagged for priority. Open a deal and click ⭐ Priority in the stage selector to add it here.
Address
Offer
Rent
ARV
Asking
Max Offer
Accepted
Budget
Exit Margins
Imported
Actions
✅ Analyzed
—
Status Submitted or Dead.
Nothing analyzed yet. A deal moves here when you set its Offer Status to "Needed" or "Rejected".
Address
Offer
Rent
ARV
Asking
Max Offer
Accepted
Budget
Exit Margins
Imported
Actions
🔥 Hot
—
Max Offer within $15k or 25% of Asking.
Nothing hot right now. A deal lands here when (1) Asking is below Max Offer, or (2) Max Offer is within $15,000 of Asking, or (3) Max Offer is within 25% of Asking — and rehab has been priced.
Address
Offer
Rent
ARV
Asking
Max Offer
Accepted
Budget
Exit Margins
Imported
Actions
📤 Offered
Deals with an offer out — packet status is Offered. Click any row to open the full property details + calculator.
Nothing offered yet. A deal moves here when you click 📤 Offered on its workflow header (or set its Offer Status to Sent).
Address
Offer
Rent
ARV
Asking
Max Offer
Accepted
Budget
Exit Margins
Imported
Actions
📷 Inspection
Deals in the inspection / due-diligence window — packet status is Inspection. Click any row to open the full property details + calculator.
Nothing in inspection. A deal moves here when you click 📷 Inspection on its workflow header.
Address
Offer
Rent
ARV
Asking
Max Offer
Accepted
Budget
Exit Margins
Imported
Actions
📝 Contracted
Deals under contract — packet status is Accepted. Click any row to open the full property details + calculator.
Nothing under contract yet. A deal moves here when you set its Packet Status to Accepted.
Address
Offer
Rent
ARV
Asking
Max Offer
Accepted
Budget
Exit Margins
Imported
Actions
🏁 Finalized
—
Deals that have reached a terminal state — either Closed (successful close) or Dropped (deal fell through). Click any row to open the full property details + calculator.
Nothing finalized yet. A deal moves here when you set its Offer Status to Closed (successful close) or Dropped (deal fell through).
Address
Offer
Rent
ARV
Asking
Max Offer
Accepted
Budget
Exit Margins
Imported
Actions
🗑️ Trash
Soft-deleted underwrites. Anything you delete from the rest of the app lands here. Restore brings it back; Permanent Delete is the only way to actually erase a row — and it asks twice.
Trash is empty.
Address
Deleted
Results
Disposition
Actions
🕵️ Double-Check
Awaiting verification.
Nothing waiting for review. When an underwriter is done with a deal, they click 🕵️ Send to Double-Check in the calculator header and it shows up here.
Address
Offer
Rent
ARV
Asking
Max Offer
Accepted
Budget
Exit Margins
Imported
Actions
📋 All Deals — Search Everything
Every deal across every workflow stage in one searchable list. Click any row to open the property.
No deals yet. Add one in the Analyzing tab.
Address
Offer
Rent
ARV
Asking
Max Offer
Accepted
Budget
Exit Margins
Imported
Actions
❓ Help — Properties Needing Review
Properties an employee marked with the 🆘 Needs Help toggle (in the calculator header). Click any row to open the full property and review.
Nothing flagged for review. Open any deal in Analyzing/Analyzed and click the 🆘 button in the header to mark it as needing help.
Address
Offer
Rent
ARV
Asking
Max Offer
Accepted
Budget
Exit Margins
Imported
Actions
❓ Underwriting Help & Reference
A quick-reference guide for what each field does, how the math works, and how to use every feature in the Underwriting tab.
🚀 Getting Started
To analyze a new property:
Click + New Deal in the Analyzing tab
Type the address — autosave kicks in 1.2 seconds after you stop typing (look for the green "Saved just now" pill in the header)
Fill out Property Info, then add 3 sold comps to drive the After Repair Value
Check items in the Rehab Calculator that need work
Set your Offer (and Accepted Price once the seller agrees)
Look at the 5 exit cards at the bottom — the green-bordered one with "BEST" is your recommended exit
Click any exit card to see its full cost + profit breakdown
To revisit an existing property: click any row in the Analyzing or Analyzed list. The Imported column shows how long ago each property was added (green ≤ 7 days, amber ≤ 30, red > 30).
📋 Deal Status — Pricing & Commission
Asking Price — what the seller is asking
Offer — the price you've offered (or are about to offer)
Accepted Price — what the seller agreed to. Once filled, this becomes the actual buy price for all exit math (overrides Offer)
ARV − Asking — gap between After Repair Value and Asking
Max Offer — your highest viable offer to still hit profit cushion ($10k). Computed as No Profit Offer − $10,000
No Profit — break-even price: ARV − rehab − money − selling − closing
Commission — 15% × (Max Offer − Accepted/Asking). Your assignment-fee target on a wholesale
🏠 Property Info — Identity, Dimensions, Risk
Z + G icons next to Address open the subject in Zillow / Google Maps
Total Livable SqFt is auto-summed: Floor 1 + Floor 2 + Floor 3, plus Basement and/or Attic only when their checkboxes are ticked
Flood Zone + 🌊 = FEMA flood map for the address
Crime Grade + 🚓 = CrimeGrade.org for the ZIP
Assessor Site / GIS Map URL — paste any county portal link; the 🌐 button opens it
Lot Size in acres, Parking Status dropdown
💰🏷️🏘️ The Three Comp Panels
Comparable Sold Properties — 3 closed sales nearby. Drives After Repair Value (= Total Livable SqFt × Avg Sold $/SqFt, rounded to $1,000). Use the Override field if you have an appraisal that says different.
Comparable Listed Properties — 3 active listings. Computes Estimated Listed Value + Estimated Real Value (90% of listed, since listings typically drop ~10%). Informational only — doesn't drive math, but useful for sanity-checking your ARV.
Rental Comparable Properties — 3 nearby rentals. Computes Average Rent /mo which feeds the Cash Rental and Financed Rental exits. Override field lets you lock in a known lease rate.
Each comp row has: address (with Z + G icons), price/rent, distance to subject (📍 Refresh Distances button uses free US Census geocoder, no API key), bed / bath / sqft / year built, lot size, parking.
Override Rehab $ (optional) — type a contractor's bid here to bypass the per-item math
Final Rehab Amount (highlighted indigo box) = Override (if filled) or Subtotal w/ Contingency. This is what the exits use.
✏️ Edit mode works the same as the Condition Checklist — drag items between columns, rename, add columns, set custom prices. ↺ Reset Defaults snaps back to the standard 4-column layout (Interior / Exterior / Mechanicals / Other).
🎯 Exit Strategy — The 5 Cards
Five strategies are computed in parallel using your inputs. The card with the green border + "BEST" badge is the highest annualized return.
🤝 Wholesale (Assignment) — never close, assign the contract to a cash investor. Profit = (70% ARV − rehab) − your contract price. Days to close ≈ 14. Capital tied up = $0.
🔨 Wholetail — light cosmetic + clean-out (capped at $30/sqft), sell at ~80% ARV. Max 90-day timeline; anything heavier or longer is a full Flip.
🏗️ Full Flip — full rehab + retail sale at ARV. Use the rehab months + listing months to set timeline.
💵 Cash Rental — buy with cash, no leverage. Pure cashflow + cap rate. Capital tied up = buy + rehab + closing.
🏦 Financed Rental — 25% down, 75% loan at 6.5% / 30yr. Best leveraged return.
Click any card to see the full breakdown: closing costs, money costs, holding costs, selling costs, profit math, and editable assumptions (closing %, holding months, agent commissions, loan terms, tenant expenses) for that specific exit.
💾 Saving & Auto-Save
Every keystroke triggers a debounced auto-save 1.2 seconds after you stop typing
The status pill in the header shows: Idle (grey) → Unsaved… (amber) → Saving… (blue, pulsing) → Saved Xs ago (green)
💾 Save Now forces an immediate save with a confirmation toast
Address must be filled for the first save (otherwise the database can't insert)
Refreshing the page or closing the browser does NOT lose data — everything's stored in Supabase
The 📅 Added X days ago badge under the address shows when the property entered the system
🔀 Reordering Sections
Click the 🔀 Reorder button in the calculator header. Each section gets a dashed indigo outline and a drag handle pill at the top-left. Drag panels up or down to change the order. Drop above a section to insert before it, below to insert after.
Order saves per-deal. New sections added in future updates automatically appear at the end so nothing gets hidden.
📋 Demo Deal
Click 📋 Load Demo Deal in the calculator header to pre-fill everything with the 2530 S Roosevelt Dr (Evansville, IN) property — useful for seeing how the formulas work before entering your own data.
The demo loads address, comps, rehab tier, condition checklist values, and rental comps. Click 💾 Save Now to persist it as a real deal in your Analyzing list.
🧮 Key Formulas Cheat Sheet
Avg Sold $/SqFt = mean of sold comp $/SqFt values
After Repair Value = Total Livable SqFt × Avg Sold $/SqFt (rounded to $1,000)
Closing Cost = ARV × (Buyer % + Seller %)
Money Cost = ARV × Origination % + ARV × (Interest %/12 × hold months)
Holding Cost = ARV × (1% + 1% + 1.5%) ÷ 12 × hold months
💵 DSCR Cash-Out Refinance — pull equity out of rental
🔁 Same-Company Refinance — BRRRR refi inside the same lender
🤝 Agents
Your rolodex of real estate agents. Ratings, brokerages, specialties, commission terms, and contact info, all in one place. Click ✏ Edit to update or remove.
No agents saved yet — click + Add Agent to start building your rolodex.
Name
Rating
Specialties
Commission
Contact
Location
Actions
🤝 Add Agent
Fill in whatever info you have. Only Entity / Purchaser is required — everything else is optional. (Use the company name for LLC purchases, or the buyer's own name if they buy personally.)
⚖️ Attorneys
Your rolodex of attorneys — closings, evictions, contracts, entity formation. Click ✏ Edit to update or remove.
No attorneys saved yet — click + Add Attorney to start building your rolodex.
Name
Rating
Practice Areas
Fees
Contact
Location
Actions
⚖️ Add Attorney
Fill in whatever info you have. Only Contact Name is required — everything else is optional.
📜 New —
🔁 Assigning —
🔥 Hot —
✅ Assigned —
💀 Dead —
🌱 Recent —
🔎 Vetting —
? Unknown —
✓ Qualified —
✗ Unqualified —
🎯 Per Deal
📜 New Contract
Contracts that have just been signed but haven\'t moved to assignment yet.
📜
No contracts in this list yet.
This view will populate once contracts are wired up. Tell me what data you want to show here and I\'ll connect it.
💰 Buyers
No buyers saved yet — click + Add Buyer to start building your rolodex.
Name
Status
Acquisitions
Strategy
Contact
Location
Actions
💰 Add Buyer
Fill in whatever info you have. Only Contact Name is required — everything else is optional.
States
Cities
Counties
Zip Codes
Other Names / Sister LLCs (optional — add one per chip)
Lenders Used (add one per chip + tag with loan type)
PML = Private Money · HML = Hard Money · DSCR = Long-term · Conventional · Other
▸ 📊 Purchased Addresses (0)
Click to expand / collapse
📤 Import Buyers
Map each column → a buyer field. Auto-detected from headers; change any dropdown to override. Anything mapped to Skip won't be imported. Duplicates (same company name) are merged — lists like cities / counties / lenders / channels combine without removing what's already there.
📁
No file picked yet.
📍 Apply to every imported row — optional. Use this when the whole CSV is "all my buyers in X."
🔀 Column mapping
CSV Column
Maps to →
Sample values
👁 Preview first 5 rows
🏘️ Holdings
Closed deals you currently own. Add or remove properties from the Closed subview in Underwriting.
No properties in Holdings yet. Open the Underwriting → 🏁 Finalized tab and click 🏘️ Hold on a deal to add it here.
Address
Accepted
Budget
ARV
Exit Margins
Closed On
Timeline
Budget
Actions
📸 Photo Submissions
———
Photo submissions from your bird-dog photographers. Flip Paid / Transferred as you process each one.
No photo submissions yet. Send a photographer to your public submission URL and their submissions will appear here.
Address
Submitter
Phone
PayPal
Photos
Expectations
Transferred
Paid
Submitted
Delete
📸 Submission detail
📋 SOP
100%Idle
📝 Edit Mode is ON. Click text to edit · + Add Box / + Inside adds boxes · click × to delete · ↗ Arrow / ⤴ Curve connects boxes (click source then destination; click an arrow to delete) · ↶ Undo / ↷ Redo (or Ctrl+Z). Layout actions (drag, resize, font size) live in 🔓 Free Mode. Drag empty canvas or wheel to pan, Ctrl + wheel to zoom. Auto-saves.