Mortgage Dock Investor Intelligence™

Deal Base v2 — any address, any client · best loan · MAO · scenarios · realtor verbiage

Property & Client

Income & Affordability

Loan Assumptions

Income — leave blank to await

Operating Costs / yr

Client Capital

Structure

Analysis updates automatically as you type or Pull — nothing to reload.
load sample data
🔌 Live Pull — RentCast via your Worker
Enter an address and click Pull to auto-fill value, rent, and taxes from RentCast. You still set the list/target price and confirm STR income from the seller's T12.

Key Numbers

Detail

Returns — Estimate vs Confirmed T12

Remember: DSCR is a loan-qualification ratio, not cash flow. Positive cash flow depends on self-management and STR income at the higher end. Lever: shift debt onto a 0% seller note, shrink the first lien.

Subject-To Comparison

Offer Ladder

Agent Offer Letter — auto-filled

How to Use
Deal Base — internal underwriting console
This tab explains every field, every output, and the rules that are not negotiable. Read the Rules & Warnings block at the bottom before you send a number to anyone.

Getting Started

Deal Base is an internal underwriting console. You put in a property and a client, and it answers one question per mode: can this buyer afford it, or does this deal work as an investment. It also drafts the offer letter you send to the listing agent.

Two modes live in the header bar. They are mutually exclusive — switching one on hides the other's input panel and result sections.

  • 🏠 Primary / 2nd Home — owner-occupied. Qualifies a human being on income and DTI. Picks the loan program, computes the maximum qualifying price and the payment at your target price.
  • 📈 Investment — the property qualifies itself. Builds a capital stack, computes DSCR, cash flow, cap rate, cash-on-cash, and cash to close against the client's out-of-pocket cap.

How to pick: if the client will live in it, Primary/2nd-Home. If the property must pay for itself — rental, STR, BRRRR, buy-and-hold — Investment. A second home that will also be rented gets run both ways; the two answers are different questions, not competing versions of the same one.

The top three fields — Address, Target / list price, Est. market value, plus Client name — are shared by both modes and feed the headline, print header, and the offer letter. Everything recalculates as you type. Nothing to reload, nothing to submit.

Your entry is saved to this browser's local storage under tmd_dealbase_state so a refresh does not lose the deal. The access token is deliberately excluded from that save. + New Deal / Clear wipes the current mode's fields; load sample data drops in a demo deal for the current mode.

The 🔌 Live Pull bar at the top of the results column calls your own Cloudflare Worker, which proxies RentCast (and, when configured, AirROI and PropertyRadar). It never talks to a vendor directly from the browser.

  • Worker URL — defaults to https://tmd-rentcast.themortgagedock.workers.dev. Leave it unless you are testing a staged worker.
  • Property address — full street address with city, state, ZIP. If you leave it blank it falls back to the Address field in the left panel. Whatever you pull with is written back into Address.
  • Access token — your Worker's ACCESS_TOKEN. It is a password field, it is not saved to local storage, and it is not in the source. You paste it each session. The real secret lives in Cloudflare.

What a successful pull auto-fills:

  • Est. market value ← RentCast AVM price
  • LTR rent / mo ← RentCast rent estimate
  • Taxes (annual) ← most recent year in the property tax history
  • STR gross / yr — ESTIMATE ← AirROI revenue estimate, if that source is wired up
  • Existing loan balance ← PropertyRadar open-loan balance, if wired up
  • Insurance ← only if blank, auto-estimated at 1% of value. This is a placeholder, not a quote.

A 📋 Property Facts panel then renders beds, baths, square footage, year built, type, last sale price, tax year, value estimate, the AVM's low-to-high range, and the LTR rent estimate.

What the pull never fills: your target/list price, and the confirmed T12. Those are judgment and seller documents, not API fields. Type them yourself.

If the fetch fails, the status line tells you why. The common cause is opening the file from file:// — some browsers block that fetch. Use the deployed page at calculator.themortgagedock.com.

Primary / 2nd-Home Mode

Income & Affordability inputs:

  • Gross income / mo — qualifying income before tax. Drives everything.
  • Monthly debts — the liabilities that appear on credit: car, student loan, minimum card payments, child support. Not groceries. Subtracted straight off the DTI budget.
  • Down payment avail — cash the buyer actually has for down payment. Also enforces the program's minimum-down floor.
  • Credit score — under 620 routes to FHA.
  • VA-eligible — checkbox. Wins over everything else if checked.
  • Self-employed (bank-statement) — checkbox. Highest-priority override; routes to Non-QM.

The DTI math: maximum PITI = gross monthly income × the program's DTI ceiling, minus monthly debts. From that budget the engine subtracts taxes, insurance, HOA, and mortgage insurance, and converts what's left into the largest loan that payment supports at your rate and term. Add the down payment and you have the Max Qualifying Price.

Loan Assumptions inputs: Rate (%), Term (yrs, defaults 30), Prop tax (%/yr of price, defaults 1.2), Insurance (%/yr of price, defaults 0.6 in the math), HOA / mo, Conforming limit (defaults 806,500 — this is what decides Jumbo), Closing costs (%/price, defaults 3), and Seller concession (%).

Note that taxes and insurance are entered as a percent of price in this mode, not dollars. That is deliberate — as the engine solves for max price, the escrow scales with it.

The picker runs in strict priority order and stops at the first match:

OrderProgramMax DTIMin downMI
1 — Self-employed checkedBank Statement (Non-QM)50%10%No
2 — VA-eligible checkedVA55%0%No (funding fee)
3 — FICO under 620FHA56.9%3.5%Yes
4 — Loan above conforming limitJumbo43%10%No
5 — Down payment under 5%FHA56.9%3.5%Yes
6 — Everything elseConventional50%5%Only above 80% LTV

PMI on Conventional and FHA is estimated at roughly 0.6%/yr of the loan, applied only above 80% LTV. That is a modelling default, not a rate sheet.

These are editable defaults, not guidelines. Every one of these numbers is a placeholder for a real lender's overlay. Confirm before quoting.

Headline answers YES / NOT AT FULL PRICE, names the program, gives the max qualifying price, and shows the cushion or shortfall against your target.

Tiles: Best Loan Type · Max Qualifying Price · Payment @ Target (PITI, plus MI where it applies) · Resulting DTI against the program ceiling (green if inside, red if over) · Down Payment and its percentage · Loan Amount, tagged conforming or jumbo · Min Down for the program in both percent and dollars · MI/PMI yes or no · Seller Concession in dollars with its cap · Cash to Close.

Detail table walks price → down → loan → P&I → taxes+insurance+HOA → MI → total PITI, then compares against the maximum monthly they qualify for, and finishes with the cash-to-close build: down payment + closing costs − seller concession.

Offer Ladder in this mode is anchored to affordability, not to the list price: Comfortable (85% of max), Target (your entered price), Max Qualified, Stretch (103%), Over Budget (110%). Clicking a rung writes that price into the Target field and re-runs everything.

Investment Mode

Income — leave blank to await. A blank field is a feature. Anything unanswered renders as ⏳ awaiting so a half-built deal never looks finished.

  • STR gross / yr — ESTIMATE — your modelled short-term-rental revenue. Feeds the "Est" column.
  • STR gross / yr — CONFIRMED T12 — the seller's actual trailing twelve months. Feeds the "T12" column, and overrides the estimate everywhere the moment you enter it. The tile badge flips from EST to T12.
  • LTR rent / mo — long-term rent. Reference and auto-fill target; the DSCR engine runs on the STR figure in use.

Operating Costs / yr — Taxes ($), Insurance ($), Other opex ($), Mgmt (%). Here they are annual dollars, unlike owner-occ mode. Mgmt percent is applied to gross revenue and is the switch between the self-managed and pro-managed numbers.

Client Capital — Cash, Liquid assets, Max out-of-pocket (the hard ceiling the Cash to Close tile is graded against), and FICO.

Structure — 1st lien LTV (%), Seller carry (%), 1st rate (%), Closing (% of price, defaults 4), Seller concession (%), Seller note rate (%), Balloon (yr, defaults 7), Lender CLTV cap (%), Existing loan rate (%), Existing loan balance ($).

Leave Lender CLTV cap blank until you have actually asked a lender. Blank raises the amber "confirm the cap" flag on purpose. Leave Existing loan rate blank until the seller tells you; the subject-to panel will say it is waiting rather than guessing.

This is the part people get wrong, so read it twice.

You give the engine two structure percentages: 1st lien LTV % and Seller carry %. You do not enter a down payment percentage. Buyer cash down is the residual:

Buyer cash down % = 100 − 1st lien LTV % − Seller carry %
CLTV = 1st lien LTV % + Seller carry %

Worked example. 80% LTV first + 10% seller carry:

1st lien (DSCR loan)  80%
Seller carry (2nd position)  10%
Buyer cash down (residual)  10%
CLTV = 90%

On a $900,000 purchase that is a $720,000 first, a $90,000 seller note, and $90,000 of buyer cash — before closing costs.

Why it is built this way. The whole point of the tool is finding how little of the client's cash a deal needs. Debt is the input you negotiate; cash is what falls out. If you typed a down payment, you would be treating the buyer's money as fixed and the financing as flexible, which is backwards. Push the carry up and buyer cash falls, one for one, with no arithmetic on your part.

The guard rails:

  • If LTV + carry exceeds 100, buyer cash goes negative and a red flag fires: "1st LTV + seller carry exceed 100%." Lower the LTV or the carry.
  • The CLTV tile is graded against your Lender CLTV cap. Amber while the cap is blank, green when CLTV is inside it, red when over. Over the cap means: more cash down, a lower price, or subject-to.

Cash to Close = buyer cash down + closing costs − seller concession. That is the number graded against Max out-of-pocket, and the number the Liquidity Kept tile subtracts from cash + liquid assets.

A concession is the seller paying the buyer's closing costs. It is not a price reduction and it is not the seller carry. The tool caps it two different ways depending on mode, and never lets a concession exceed the actual closing costs — you cannot get cash back at the table.

Investment mode: hard cap of 6%, the interested-party-contribution limit. Enter more and it is silently reduced to 6% with a flag telling you what you asked for.

Owner-occupied mode: the cap is chosen automatically from the selected program:

ProgramMax concession
FHA6%
VA4%
Jumbo6%
Bank Statement (Non-QM)6%
Conventional — above 90% LTV3%
Conventional — 75% to 90% LTV6%
Conventional — 75% LTV and below9%

Request more than the cap and you get an amber flag naming the program, the requested figure, the guideline maximum, and the LTV that produced it. The offer letter always quotes the allowed figure, never the one you asked for.

Lender DSCR = gross revenue ÷ (first-lien P&I + taxes + insurance). This is the qualification ratio the DSCR lender underwrites. It ignores the seller second and it ignores operating expenses. Green at 1.20+, amber at 1.00–1.19, red below 1.00.

True DSCR = gross revenue ÷ (first-lien debt service + second-lien debt service + taxes + insurance). This is the honest one. The gap between the two tiles is exactly the cost of the carryback. Green at 1.10+, amber at 1.00–1.09, red below.

Cap Rate = NOI ÷ purchase price, where NOI = gross − (other opex + taxes + insurance + management fee). Unlevered — it says nothing about your financing.

Cash Flow is reported two ways and the difference is the management fee:

  • Self-managed — the management percentage is added back. This is the tile on the dashboard. It assumes the client does the work.
  • Pro-managed — management is a real expense. This is the number to plan on for an absentee owner.

Both subtract total annual debt service on both liens. Green above $2,000/yr, amber down to −$3,000, red below.

Cash-on-Cash = annual cash flow ÷ cash to close. Green at 8%+, amber at 0–8%, red if negative. Reported self-managed and pro-managed in the returns table.

Cash to Close is graded against Max out-of-pocket. Liquidity Kept is cash + liquid assets − cash to close: green above $100K, amber above zero, red if the deal drains them. A deal that closes and leaves no reserves is a deal that fails on the first insurance renewal.

The EST vs T12 columns. The Returns table prints every metric twice — once on your estimate, once on the seller's confirmed trailing twelve. Blanks show ⏳ awaiting. Present the T12 column. The EST column exists to tell you what to ask for, not what to believe. Once the T12 is entered it drives the tiles, the headline, and the letter.

Subject-To Comparison models taking over the existing loan with the seller carrying the rest, and prints a verdict: subject-to wins by $X/yr, or the new DSCR structure wins. It needs the existing balance and rate. Roughly: sub-4% existing rate and subject-to usually wins; 6%+ and it is not worth the complexity.

Offers and Output

The ladder is five clickable price rungs. Clicking a rung writes that number into the Target / list price field and re-runs the entire model. That is the point: it is a live sensitivity test, not decoration. Click across the ladder and watch DSCR, cash flow, cash to close, and CLTV move.

Investment mode anchors on your current offer price: Steal (94.5%), Opening (100% — the recommended rung, highlighted navy), Target (105.5%), List (est. market value if it is above your price, otherwise 133%), Walk (116.7%, in red).

Owner-occupied mode anchors on max qualifying price: Comfortable (85%), Target (your entered price), Max Qualified, Stretch (103%), Over Budget (110%).

How to actually use it: start at Opening. Click up one rung at a time until a metric turns red — that rung is your real MAO for this structure. Then go back and see whether more seller carry buys the price back. Price and carry trade against each other, which is exactly the flexibility the offer letter offers the seller.

The Walk rung exists so the number is written down before you get emotionally invested.

The bottom section drafts a letter to the listing agent from the current inputs. It regenerates on every keystroke, so it is always in sync with the numbers above it. Select it, copy it, paste it into email.

Owner-occupied version covers price, program name, down payment in dollars and percent, the allowed concession, earnest money, contingency days, and a 30-day close.

Investment version covers price, $10,000 earnest money, buyer cash down percent with the carry stated, the allowed concession at the 6% IPC max, DSCR primary financing, the full carryback terms (amount, percent, rate, 30-yr amortisation, balloon year, 2nd position), a 30–35 day close, the seller-benefit paragraph on installment-sale treatment, and the contingency list — inspection, appraisal, trailing-12 within 5 days, STR permit/VRC transfer, elevation certificate and flood history.

Before you send it: fill the bracketed placeholders — [Listing Agent], contingency day counts, earnest money in the owner-occ version. And read it once. It is a draft written from your assumptions; it is not pre-approved by anyone.

The carryback is described as second position in writing, in the letter, every time. That is not optional — see the rules below.

🖨 Print / Save PDF renders a clean version: the header bar, the input panel, the pull bar, and the toolbar are all suppressed, and a print header with the property, client, date, and Eli's contact block is added.

A printed Deal Base is still an internal document. It contains MAO, the walk-away number, and the offer ladder. See the rules block below before it leaves your screen.

⚠ Rules and Warnings — non-negotiable

Never a silent second
A seller carryback is always disclosed on the closing statement and always disclosed to the first-lien lender. No side agreements, no undisclosed notes, no "we'll paper it after closing." This is loan fraud, it is a compliance failure, and it is Eli's license. Every structure this tool produces assumes a fully disclosed second in recorded second position.
DSCR passing does not mean positive cash flow
DSCR is a qualification ratio. It counts debt service, taxes, and insurance — and ignores management, maintenance, utilities, turnover, reserves, and every other operating expense. A 1.25 DSCR deal can lose money every month. Never quote DSCR without reading cash flow and cash-on-cash beside it. The Lender DSCR tile also ignores the seller second entirely; True DSCR is the one that tells the truth.
RentCast AVMs are unreliable on unique and beach STR property
RentCast quoted $785,000 and $1,350,000 for the same house on different pulls. On waterfront, non-conforming, or short-term-rental property the AVM has almost nothing comparable to anchor to. Treat it as a rough sanity check, never as value. Always cross-check against real comps and the seller's actual trailing-12.
Prefer actual trailing-12 over any AVM or estimate
An estimate is a question to ask the seller. A T12 is an answer. The moment you have real numbers, enter them in the CONFIRMED T12 field and present that column. Where the two disagree, the T12 wins — every time, without discussion.
STR operating costs run 35–50% of gross revenue
Platform fees, management, cleaning, utilities, supplies, restocking, higher maintenance and turnover, and reserves. A long-term-rental operating percentage applied to an STR badly overstates cash flow. If your total opex on a short-term rental is coming in under 35% of gross, you have left something out. Go find it before you write the offer.
Coastal Florida insurance is the number that kills deals
The 1%-of-value auto-fill is a placeholder to keep the model from breaking — it is not a quote and it is frequently far too low on the coast. Get a real bindable quote before going under contract. Flood is a separate policy with separate pricing; wind/hail deductibles, roof age, and elevation all move it. Insurance is the single most common reason a coastal deal that penciled stops penciling.
Confirm STR is legally permitted before counting STR income
Zoning, municipal ordinance, minimum-stay rules, registration or VRC caps, HOA and condo documents, and whether an existing permit actually transfers on sale. If STR is not lawfully permitted at that address, the STR revenue line is zero and the deal is a long-term rental. Verify before you underwrite, not after.
This tool is internal — clients get Deal Base Lite
Do not send this page, screenshot it, share the URL, or forward any output that reveals MAO, the walk-away rung, the offer ladder, or offer strategy to a client, a seller, or a listing agent. It reveals your negotiating position. Clients get Deal Base Lite instead. Client financial data — capital position, FICO, loan terms — stays in this project and never moves to any marketing workspace.
Known defect — max purchase price can be slightly overstated
maxAffordable() applies the down-payment floor inside its averaging loop rather than after it converges. When the down payment — not income — is the binding constraint, the loop can settle a few hundred dollars above the true cap. It shows up most on 3.5%-minimum-down programs (FHA). A corrected version lives in the MDBI calc package. Until that lands here, treat the top of the affordability range as approximate and do not quote Max Qualifying Price to the dollar.
Secrets live in Cloudflare only
The Worker access token is never committed to code, never pasted into chat, never stored in local storage, and never written into a doc. It is typed into the token field each session and lives in Cloudflare. If a token has been exposed anywhere, rotate it in Cloudflare before doing anything else.
Every default in here is editable, not a guideline
DTI ceilings, minimum down payments, MI at 0.6%/yr, the 806,500 conforming limit, concession caps, and closing-cost percentages are modelling placeholders. They are not a rate sheet and not a lender overlay. Confirm with the lender before anything is quoted to a client. Nothing this tool produces is a commitment to lend, an appraisal, or tax or legal advice.
Mortgage Dock Investor Intelligence™ Deal Base v2 — proprietary internal tool. All figures are estimates for discussion, pending verification of income, rental performance, condition, insurance, existing-loan terms, and lender approval. Not a commitment to lend, an appraisal, or tax/legal advice. Any seller-held second is disclosed on the closing statement. Program parameters are editable defaults, not guidelines — confirm with the lender. Data stays in this page only.