From rv-park-tools
RV park pre-LOI quick screener — takes a T12, P&L, rent roll, or broker memo and produces a quick NOI estimate, creative finance stack (Gator EMD + PML + seller carry + SBA assumption), true cash flow after all debt service, 2–3 offer scenarios, and a draft LOI. Use when: 'screen this RV park', 'quick look at this T12', 'should I send an LOI', 'what should I offer on this park', 'is this worth pursuing', 'build me an LOI', 'run a quick deal analysis', or any time a broker sends RV park financials and an offer decision is needed fast.
How this skill is triggered — by the user, by Claude, or both
Slash command
/rv-park-tools:rv-park-screenerThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill produces a fast, investor-protective analysis of an RV park deal using whatever financial data is available (T12, P&L, rent roll, broker memo, or even a verbal summary). The output is an LOI-ready report with offer scenarios and a draft Letter of Intent. Speed and protective skepticism are equally important — the goal is to get under contract smart and fast.
This skill produces a fast, investor-protective analysis of an RV park deal using whatever financial data is available (T12, P&L, rent roll, broker memo, or even a verbal summary). The output is an LOI-ready report with offer scenarios and a draft Letter of Intent. Speed and protective skepticism are equally important — the goal is to get under contract smart and fast.
This is Phase 0 of a two-skill system. Once under contract, the rv-park-underwriter skill runs the comprehensive due diligence.
Before running any numbers, load this client's saved RV park investment preferences from Cloud Brain. These replace hardcoded defaults throughout the analysis and make every report specific to their buy box.
Search Cloud Brain using search_notes with query: "rv park preferences". If no results, also try "rv park buy box".
If preferences ARE found:
Display a confirmation table and ask: "These are your saved RV park preferences — shall I use these for this analysis, or would you like to update anything before we start?"
| Preference | Saved Value |
|---|---|
| Target markets | [from memory] |
| Deal size range | [from memory] |
| Min monthly cash flow | [from memory] |
| Target cap rate range | [from memory] |
| Min DSCR | [from memory] |
| Financing approach | [from memory] |
| Risk tolerance | [from memory] |
write_note to brain/preferences/rv-park-preferences.md, then proceedIf NO preferences are found — run this quick setup (required before analysis):
"Before we analyze this deal, I need to capture your investment criteria so every report is calibrated to your buy box. Answer these in one message:"
Save answers immediately before proceeding:
write_notebrain/preferences/rv-park-preferences.mdReplace these defaults with the client's saved values wherever they appear:
| Hardcoded Default | Replace With |
|---|---|
| Cash flow thresholds ($1,500 / $3,000 / $7,500) | Client's stated minimum as the primary benchmark |
| DSCR minimums (1.15x SBA / 1.25x conventional) | Client's stated minimum DSCR |
| Cap rate range for offer scenarios | Weighted toward client's target cap rate range |
| Offer 1 financing structure | Client's preferred financing approach |
| Pursuit decision language | Calibrated to client's risk tolerance |
| Web search market context | Include client's target markets |
Display at the top of every output:
📋 Analysis calibrated to your preferences — Min cash flow: $[X]/mo | Target cap: [X–X]% | Min DSCR: [X]x | Markets: [X]
Assess what data is available and set the confidence level at the top of the output:
| Level | Available Data | Confidence |
|---|---|---|
| HIGH | T12 + rent roll + asking price + existing debt details | LOI-Ready |
| MEDIUM | T12 or P&L + asking price | LOI with contingencies |
| LOW-MEDIUM | Broker memo or summary + asking price | Preliminary offer range |
| LOW | Asking price + site count + location only | Conversation starter only |
For any missing input, flag it clearly and use the conservative default listed in each module. Never stop the analysis because data is missing — flag and continue.
Parse and confirm the following from the user's provided documents or description. For each unknown, note it as [UNVERIFIED] and apply the conservative default.
Required fields (ask for any that are completely missing):
Immediately web search the park name + city to pull:
Perform these 6 normalizations in sequence. Show each adjustment and the dollar amount added or changed. Label all outputs as ESTIMATED until bank statements confirm.
Divide gross site revenue by (operational site count × 12 months × stated occupancy %). Compare result to stated monthly rate.
Separate revenue into streams if data allows:
| Expense | Formula | Note |
|---|---|---|
| Management Fee | IF owner-operated: 20% of gross revenue | Always normalize — buyer needs this cost |
| Capital Reserves | New build (0–5 yr): $500/site/yr | Mid-age (6–15 yr): $750/site/yr |
| Insurance | Use actual if provided; else $500/site/yr | Rising market — don't accept low owner figures without verification |
| Repairs & Maintenance | Actual + 20% cushion; minimum $200/site/yr | New build gets lower end |
| Misc/Contingency | 4% of gross revenue | Buffer for unmodeled small expenses |
Calculate: Total Normalized Expenses ÷ Gross Revenue = Expense Ratio
QUICK NOI FLOOR = Gross Revenue − All Normalized Expenses
Show this in a clean table. Label it clearly: ESTIMATED CONSERVATIVE NOI FLOOR — subject to bank statement verification
Also calculate an Upside NOI (label it separately, NOT used for offer pricing):
Build a 9-cell value matrix. Highlight where the ask price falls.
| 7% Cap | 8% Cap | 9% Cap | 10% Cap
--------------------|-----------|-----------|-----------|----------
NOI Floor $[X] | $[X÷.07] | $[X÷.08] | $[X÷.09] | $[X÷.10]
Upside NOI $[Y] | $[Y÷.07] | $[Y÷.08] | $[Y÷.09] | $[Y÷.10]
ASK PRICE → $[Z] | [cap%] | [cap%] | [cap%] | [cap%]
State plainly: "At the ask price of $[Z], the implied cap rate on the NOI floor is [X]%. This is [above/below/at] the typical range for this asset class."
If implied cap rate at ask is below 6%: 🚨 SELLER IS PRICING TO UPSIDE NOI. Offer must be anchored to floor NOI.
Also calculate Price Per Site: Ask Price ÷ Operational Sites = $[X]/site. Benchmark: rural standard $10,000–$30,000/site. Note if out of range.
Use the client's saved target cap rate range to highlight the column(s) most relevant to their buy box.
Build the full capital stack for this deal. This is the core of the screener. Model every dollar in and every obligation out.
LAYER 1 — Gator EMD
LAYER 2 — Assumed Existing Loan
LAYER 3 — Seller Carry Note
LAYER 4 — PML / PMP (Private Money)
LAYER 5 — Buyer Cash (Minimize)
CAPITAL STACK — [Property Name] @ $[Purchase Price]
Source | Amount | Purpose | Cost/Month | One-Time Cost
--------------------|-------------|----------------------------|-------------|-------------
Gator EMD | $[amount] | Earnest money deposit | $0 | $[fee]
Assumed SBA Loan | $[balance] | Primary acquisition debt | $[P&I/mo] | —
Seller Carry Note | $[amount] | Gap financing | $[I/O pmt] | —
PML Bridge | $[amount] | Closing costs + fees | $[int/mo] | $[points if any]
Buyer Cash | $[amount] | Residual gap | — | $[amount]
--------------------|-------------|----------------------------|-------------|-------------
TOTAL | $[price] | | $[total/mo] | $[total OOP]
If the client's saved preference is conventional-first, model a conventional structure as Offer 1 and label the creative stack as Offer 2.
This is the number that determines whether to pursue. Show it clearly and prominently.
TRUE CASH FLOW CALCULATION — [Property Name]
Gross Effective Revenue (verified/estimated) $[amount]
− Normalized Operating Expenses ($[amount])
= NET OPERATING INCOME (NOI) $[amount]
(This is what the park earns before financing)
− Assumed Loan Annual P&I ($[amount])
− Seller Carry Annual Payment (I/O) ($[amount])
− PML Annual Interest ($[amount])
= TRUE ANNUAL CASH FLOW $[amount] ← REAL RETURN
= TRUE MONTHLY CASH FLOW $[amount] ← CASH IN BANK/MO
Cash-on-Cash Return = True Annual Cash Flow ÷ Total Buyer Cash = [X]%
DSCR = NOI ÷ Total Annual Debt Service = [X]x
Client's minimum DSCR: [from preferences]
SBA 7(a) minimum DSCR: 1.15x | Conventional minimum: 1.25x
Flag immediately if:
Build 3 offer scenarios side by side. Always show all three even if only recommending one.
OFFER SCENARIO COMPARISON
| Offer 1 — [Client Preferred] | Offer 2 — Middle | Offer 3 — [Alternative]
------------------------|------------------------------|----------------------|----------------------
Purchase Price | $[X] | $[X] | $[X]
Cap Rate on NOI Floor | [X]% | [X]% | [X]%
EMD (Gator) | $[X] | $[X] | $[X]
Gator Fee | $[X] one-time | $[X] one-time | N/A
Assumed Loan | $[balance] @ [rate] | N/A — paid off | N/A — paid off
Seller Carry | $[X] @ [rate]% I/O | $[X] @ [rate]% I/O | None
PML Bridge | $[X] @ 10% | $[X] @ 10% | Optional
Down Payment (cash) | $[X] | $[X] | $[X] (25%)
Total Cash to Close | $[X] | $[X] | $[X]
Monthly Debt Service | $[X] | $[X] | $[X]
Annual Debt Service | $[X] | $[X] | $[X]
True Monthly Cash Flow | $[X] | $[X] | $[X]
True Annual Cash Flow | $[X] | $[X] | $[X]
Cash-on-Cash Return | [X]% | [X]% | [X]%
DSCR | [X]x | [X]x | [X]x
Meets client min CF? | ✅/❌ | ✅/❌ | ✅/❌
Meets client min DSCR? | ✅/❌ | ✅/❌ | ✅/❌
Seller Net (at close) | Debt relief + note | Debt relief + note | $[X] cash for 1031
Best For | Client's preferred approach | Moderate cash needed | Seller wants all cash
Recommended Offer: State which offer scenario to lead with and why, in 2–3 sentences. Reference how it compares to the client's saved minimum thresholds.
Run all 10 checks. Any HIGH flag appears in a 🚨 red box BEFORE the offer recommendation.
| # | Flag | Check | Severity |
|---|---|---|---|
| 1 | DSCR below client's minimum | Calculated in Step 4 | 🚨 HIGH |
| 2 | DSCR below 1.0x at ask price | Calculated in Step 4 | 🚨 HIGH |
| 3 | Expense ratio below 35% on seller P&L | Calculated in Step 1D | 🚨 HIGH |
| 4 | Effective rate < stated rate by >10% | Calculated in Step 1A | 🚨 HIGH |
| 5 | No management fee on P&L | Check P&L line items | 🚨 HIGH |
| 6 | SBA assumability not confirmed | Ask broker/seller | ⚠️ MEDIUM-HIGH |
| 7 | Site count discrepancy | Check broker memo vs permit | 🚨 HIGH |
| 8 | Residency ordinance not verified | Web search city + "RV park maximum stay" | ⚠️ MEDIUM-HIGH |
| 9 | Google rating below 3.8 or <20 reviews | Web search in Step 0 | ⚠️ MEDIUM |
| 10 | Park listed >180 days or fell out of contract | Ask broker | ⚠️ MEDIUM |
| 11 | Deal outside client's target market | Check against saved preferences | ⚠️ MEDIUM |
| 12 | Deal outside client's size range | Check against saved preferences | ⚠️ MEDIUM |
For each triggered flag, state:
Calibrate thresholds to client's saved risk tolerance:
GO — SUBMIT LOI: True cash flow meets or exceeds client's minimum + no unresolved HIGH flags + DSCR meets client's minimum → Output full LOI draft
GO WITH CONDITIONS: Cash flow positive and near client's minimum + 1–2 medium-high flags present → Output LOI draft with contingency language for each flag
PROCEED WITH CAUTION: Cash flow below client's minimum OR NOI relies heavily on unverified assumptions → Output lower offer price + list what must be verified before LOI
DO NOT PURSUE YET: True cash flow negative on ALL scenarios at any reasonable price OR 2+ HIGH flags unresolved → State what price/NOI/structure would make this a GO. No LOI output.
When verdict is GO or GO WITH CONDITIONS, generate the following complete LOI:
LETTER OF INTENT
To Purchase: [Property Name and Address]
Date: [Today's Date]
From: [Buyer Name / Entity — leave blank for investor to fill]
To: [Seller Name — from intake]
RE: Non-Binding Letter of Intent — [Property Name], [Address]
Dear [Seller Name],
[OPENING — personalize based on seller motivation]
IF 1031 exchange: "We understand you are seeking a transition from your current
debt obligation and a 1031 exchange pathway. We have structured this offer
specifically to address both goals."
IF debt relief: "We recognize the burden of the current loan payments and have
designed this offer to give you immediate relief while maximizing your long-term proceeds."
DEFAULT: "Thank you for the opportunity to consider [Property Name]. After reviewing
the financials, we are excited to present the following offer."
1. PROPERTY: [Full address], consisting of approximately [site count] operational RV sites
on [acreage] acres, known as [Park Name].
2. PURCHASE PRICE: $[recommended offer price]
3. EARNEST MONEY DEPOSIT: $[EMD amount] to be deposited within [3] business days of
mutual execution. [IF GATOR: Buyer intends to fund EMD through a short-term capital
partner; EMD will be in escrow within [5] business days of execution.]
4. FINANCING STRUCTURE:
[IF ASSUMPTION]: Buyer to assume existing [lender name if known] loan with approximate
balance of $[amount] at existing terms, subject to lender approval. Seller to carry a
purchase money note in the amount of $[carry amount] at [rate]% interest-only for
[term] years, with a balloon payment at maturity.
[IF SELLER CARRY ONLY]: Seller to carry purchase money note of $[amount] at [rate]%
interest, [amortizing/interest-only] over [term] years.
[IF CONVENTIONAL]: Buyer to obtain new conventional financing with 25% down payment.
Closing contingent on financing approval within [21] days of execution.
5. DUE DILIGENCE PERIOD: [30–45] calendar days from mutual execution. During this period,
Buyer shall have the right to inspect all physical, financial, legal, and operational
aspects of the property.
6. DUE DILIGENCE ITEMS: The following items are specifically required during the DD period:
[AUTO-POPULATE from Step 6 flags — each HIGH/MEDIUM-HIGH flag becomes a named DD item]
- Verification of permitted site count via approved site plan
- Confirmation of SBA loan assumability with existing lender [if applicable]
- Review of 24 months of bank statements confirming reported revenue
- Verification of municipal residency/maximum stay ordinances [if not confirmed]
- [Any other flags from Step 6]
7. CLOSING: Approximately [45–90] days from execution of Purchase Agreement, subject to
financing and due diligence completion.
8. SELLER CARRY TERMS: [rate]% per annum, interest-only, [term] year term, balloon payment
at maturity. Seller carry note to be secured by a deed of trust on the property in second
position behind the assumed loan [or in first position if no assumption].
9. BROKER FEES: [Buyer/Seller/Both] to pay broker commissions per separate agreement.
10. EXCLUSIVITY: Seller agrees to remove the property from the market and cease negotiations
with other parties for [30] calendar days from mutual execution.
11. NON-BINDING: This Letter of Intent is non-binding on both parties, except for the
Exclusivity (Section 10) and Confidentiality provisions, which are binding upon execution.
12. EXPIRATION: This LOI expires if not executed by both parties within [5] business days.
This offer reflects our genuine interest in creating a transaction that works for both parties.
We are prepared to move quickly and close efficiently.
Respectfully submitted,
_______________________________
[Buyer Name]
[Entity Name]
[Phone]
[Email]
[Date]
Always end the screener report with this section:
PHASE 2 — WHAT TO VERIFY DURING DUE DILIGENCE
(Hand these items to the rv-park-underwriter skill once under contract)
TOP 5 VERIFICATION PRIORITIES FOR THIS DEAL:
1. [Most critical item from Step 6 flags — e.g., "Bank statements confirming $[X] monthly deposits"]
2. [Second priority — e.g., "City Planning confirmation on residency ordinance"]
3. [Third priority — e.g., "SBA lender confirmation of loan assumability and assumption requirements"]
4. [Fourth priority — e.g., "Utility billing records to verify utility recapture rate"]
5. [Fifth priority — e.g., "Permitted site count via approved site plan from county"]
When the LOI is accepted, run: rv-park-underwriter
The screener's NOI estimate and capital stack become the starting point for full verification.
After delivering the full output, save a deal summary to Cloud Brain so the rv-park-underwriter can reference the screener's findings without starting from scratch.
write_notebrain/deal-analyses/[property-slug]-screen-[YYYY-MM-DD].mdInclude in the saved note:
Deliver the complete report inline, structured as follows:
| Metric | Conservative | Standard | Strong |
|---|---|---|---|
| Monthly rate/site (rural) | $450–$550 | $550–$700 | $700+ |
| Occupancy (monthly-heavy) | 80% | 88–92% | 95%+ |
| Occupancy (transient-heavy) | 55% | 65–75% | 80%+ |
| Expense ratio (monthly-heavy) | 48–55% | 42–48% | 38–42% |
| Expense ratio (transient-heavy) | 65–70% | 58–65% | 50–58% |
| Cap rate (rural standard park) | 10–12% | 8–10% | 7–8% |
| DSCR (minimum bankable) | 1.15x (SBA) | 1.25x | 1.4x+ |
| True monthly cash flow | $1,500 | $3,000–$5,000 | $7,500+ |
| PML rate (bridge) | 12% | 10% | 8% |
| Seller carry rate | 6–7% | 5–6% | 4–5% |
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub owenmecham/mbg --plugin rv-park-tools