Real Estate Comping Skill
Perform appraiser-grade property valuations using the Two-Bucket method for disclosure states or the Triangulation method for non-disclosure states. This skill is strictly about comparable sales analysis and ARV determination — it does not estimate rehab costs, renovation budgets, or scope of work. If the user needs rehab cost estimation, direct them to the appropriate skill for that.
Workflow Overview
- Identify property location → Determine state from address
- Route to correct methodology → Disclosure or Non-Disclosure framework
- Execute 9-step analysis → Follow the appropriate prompt framework
- Generate deliverables → PDF summary report + Excel breakdown + comps table
State Detection & Routing
Determine state type from property address:
- Non-Disclosure States (sold prices not publicly recorded): TX, UT, WY, NM, ID, MT, ND, AK, KS, MS, LA, MO
- Disclosure States: All other US states
Routing:
- Non-disclosure state → Read
references/non-disclosure-prompt.md
- Disclosure state → Read
references/disclosure-prompt.md
Quick Reference
| Framework |
States |
Key Method |
Price Source |
| Disclosure |
Most US states |
Two-Bucket (Unrenovated vs Renovated PPSF) |
MLS sold prices |
| Non-Disclosure |
TX, UT, WY, NM, ID, MT, ND, AK, KS, MS, LA, MO |
Triangulation (LLP + DOM, Deed of Trust, Tax Ratio) |
Derived estimates |
Core Comping Rules (Both Frameworks)
These rules apply regardless of disclosure status:
Comp Selection Filters
- Age: ≤90 days preferred, 6 months max
- Subdivision: Same micro-pocket, do not cross major roads
- GLA: ±100 sqft ideal, ±250 sqft outer bound
- Property type: Match elevation style (ranch↔ranch, 2-story↔2-story)
- Build year: ±10 years
Feature Adjustments (by price tier)
See references/adjustment-cheatsheet.md for complete adjustment values.
Quick reference:
| Feature |
<$500k Tier |
>$500k Tier |
| Bedroom |
+$10k |
+$25k |
| Bathroom |
±$10k |
±$10k |
| Garage |
+$10-25k |
+$10-25k |
| Traffic (backing) |
-$10k |
-10-15% |
| Traffic (fronting) |
-$20k |
-20% |
Basement/ADU Rules
- Basements: Not counted as GLA; value at ~50% of above-grade PPSF if finished
- ADUs: 50% value if not separately deeded; 100% if separately titled
Required Deliverables
Every comp analysis MUST produce these two outputs:
1. Excel Breakdown Workbook
Comprehensive multi-sheet workbook with:
- Executive Summary sheet: Quick-view of key findings
- Subject Property sheet: All property details
- Comparable Sales sheet: Full comps table with bucket analysis
- Adjustments Detail sheet: Line-by-line adjustment breakdown
- Market Analysis sheet: Market metrics and trends
- ARV Calculation sheet: Step-by-step ARV math
- Sources & Notes sheet: Data sources, parameters, recommendations
Generate using: scripts/generate_excel_report.py
2. In-Context Analysis
The detailed analysis text with tables shown directly in the conversation, including:
- Step-by-Step ARV Breakdown (Base PPSF → Adjustments → Final ARV)
- Comps Summary Table (Address, Sale Date, Price, GLA, Beds/Baths, Year, Condition, Adjustments, Final Adjusted Value)
- Market Overview (Median price, PPSF, DOM, sale-to-list ratio, market phase)
- Sources & Assumptions (Data sources, time window, radius constraints)
- Recommendations & Caveats (Verification steps, risk factors, disclaimer)
Output Generation Instructions
Data Structure for Report Generation
Prepare analysis data as JSON with this structure:
{
"subject_property": {
"address": "123 Main St",
"city": "Austin",
"state": "TX",
"zip": "78701",
"county": "Travis",
"subdivision": "Downtown",
"property_type": "Single Family",
"gla": 1850,
"lot_size": 6500,
"beds": 3,
"baths": 2,
"year_built": 1985,
"condition": "Dated"
},
"comps": [
{
"address": "456 Oak Ave",
"sale_date": "2025-12-15",
"sale_price": 485000,
"gla": 1780,
"ppsf": 272.47,
"beds": 3,
"baths": 2,
"year_built": 1982,
"condition": "Renovated",
"distance": 0.3,
"total_adjustments": -5000,
"adjusted_value": 480000
}
],
"bucket_analysis": {
"unrenovated": { "count": 2, "median_ppsf": 235.20, "avg_ppsf": 235.20 },
"renovated": { "count": 2, "median_ppsf": 257.33, "avg_ppsf": 257.33 },
"market_premium_pct": 9.4
},
"market_overview": {
"market_phase": "Balanced",
"median_price": 455000,
"median_ppsf": 248.50,
"avg_dom": 28,
"sale_to_list_ratio": 0.98,
"active_count": 45,
"pending_count": 22,
"notes": ["Market observations..."]
},
"arv_calculation": {
"base_ppsf": 235.20,
"market_premium_pct": 9.4,
"renovated_ppsf": 257.33,
"subject_gla": 1850,
"base_arv": 476061,
"feature_adjustments": -5000,
"final_arv": 471000,
"confidence_level": "Moderate",
"confidence_band_pct": 5.0,
"arv_low": 447450,
"arv_high": 494550
},
"adjustments_applied": [
{
"comp_number": 1,
"comp_address": "456 Oak Ave",
"adjustment_type": "GLA",
"reason": "Subject 70 sqft larger",
"amount": -5000
}
],
"sources": ["MLS", "County Records", "Zillow"],
"search_parameters": {
"time_window": "90 days",
"radius": "0.5 miles",
"gla_range": "1600-2100 sqft"
},
"recommendations": ["Verification steps..."],
"caveats": ["Disclaimers..."]
}
Generate Reports
- Save the analysis data to a JSON file
- Run the Excel generator:
python scripts/generate_excel_report.py output_report.xlsx data.json
Execution Instructions
- Gather property address from user
- Identify state and determine disclosure status
- Load appropriate framework:
- Disclosure:
references/disclosure-prompt.md
- Non-Disclosure:
references/non-disclosure-prompt.md
- Add property context (if provided): current condition, seller notes, known issues
- Optional boundary drawing: For block-by-block markets, use Zillow boundary tool
- Execute analysis following the 9-step framework
- Verify results: Cross-reference with market knowledge
- Prepare data structure: Compile all analysis into JSON format
- Generate deliverables:
- Run
generate_excel_report.py for Excel breakdown
- Deliver all outputs to user: Excel and in-context analysis
Special Considerations
Non-Disclosure State Caveats
- Wider confidence bands (±5-7% vs ±2-5%)
- Must derive sold prices using triangulation methods
- Recommend "Option Period Verification" once under contract
Market Sentiment Adjustments
- Hot market (fast pendings, >50% over list): +5-7%
- Balanced market: +3-5%
- Cool market (60+ DOM, price cuts): 0-2% or negative
Two-Bucket Spread Sanity Check
The spread between unrenovated and renovated bucket PPSF is a market-derived metric (not a rehab cost estimate). It reflects what buyers in that market are willing to pay for updated finishes.
- Typical spread: 10-30%
- <5% or >30%: Re-examine comp validity — comps may be miscategorized or the market may have unusual dynamics
1---2name: real-estate-comping-23description: Perform AI-powered property valuation and comparable sales analysis for real estate wholesaling. Use when the user needs to comp a property, determine ARV, analyze comparable sales, or perform property valuation. Automatically detects disclosure vs non-disclosure states and applies the appropriate methodology (standard comping for disclosure states, triangulation method for non-disclosure states like Texas). This skill focuses purely on comping — determining market value through comparable sales analysis. It does NOT estimate rehab costs or renovation budgets; those are handled separately.4---56# Real Estate Comping Skill78Perform appraiser-grade property valuations using the Two-Bucket method for disclosure states or the Triangulation method for non-disclosure states. This skill is strictly about comparable sales analysis and ARV determination — it does not estimate rehab costs, renovation budgets, or scope of work. If the user needs rehab cost estimation, direct them to the appropriate skill for that.910## Workflow Overview11121. **Identify property location** → Determine state from address132. **Route to correct methodology** → Disclosure or Non-Disclosure framework143. **Execute 9-step analysis** → Follow the appropriate prompt framework154. **Generate deliverables** → PDF summary report + Excel breakdown + comps table1617## State Detection & Routing1819**Determine state type from property address:**2021- **Non-Disclosure States** (sold prices not publicly recorded): TX, UT, WY, NM, ID, MT, ND, AK, KS, MS, LA, MO22- **Disclosure States**: All other US states2324**Routing:**25- Non-disclosure state → Read `references/non-disclosure-prompt.md`26- Disclosure state → Read `references/disclosure-prompt.md`2728## Quick Reference2930| Framework | States | Key Method | Price Source |31|-----------|--------|------------|--------------|32| Disclosure | Most US states | Two-Bucket (Unrenovated vs Renovated PPSF) | MLS sold prices |33| Non-Disclosure | TX, UT, WY, NM, ID, MT, ND, AK, KS, MS, LA, MO | Triangulation (LLP + DOM, Deed of Trust, Tax Ratio) | Derived estimates |3435## Core Comping Rules (Both Frameworks)3637These rules apply regardless of disclosure status:3839### Comp Selection Filters40- **Age**: ≤90 days preferred, 6 months max41- **Subdivision**: Same micro-pocket, do not cross major roads42- **GLA**: ±100 sqft ideal, ±250 sqft outer bound43- **Property type**: Match elevation style (ranch↔ranch, 2-story↔2-story)44- **Build year**: ±10 years4546### Feature Adjustments (by price tier)4748See `references/adjustment-cheatsheet.md` for complete adjustment values.4950**Quick reference:**51| Feature | <$500k Tier | >$500k Tier |52|---------|-------------|-------------|53| Bedroom | +$10k | +$25k |54| Bathroom | ±$10k | ±$10k |55| Garage | +$10-25k | +$10-25k |56| Traffic (backing) | -$10k | -10-15% |57| Traffic (fronting) | -$20k | -20% |5859### Basement/ADU Rules60- Basements: Not counted as GLA; value at ~50% of above-grade PPSF if finished61- ADUs: 50% value if not separately deeded; 100% if separately titled6263## Required Deliverables6465**Every comp analysis MUST produce these two outputs:**6667### 1. Excel Breakdown Workbook68Comprehensive multi-sheet workbook with:69- **Executive Summary** sheet: Quick-view of key findings70- **Subject Property** sheet: All property details71- **Comparable Sales** sheet: Full comps table with bucket analysis72- **Adjustments Detail** sheet: Line-by-line adjustment breakdown73- **Market Analysis** sheet: Market metrics and trends74- **ARV Calculation** sheet: Step-by-step ARV math75- **Sources & Notes** sheet: Data sources, parameters, recommendations7677**Generate using:** `scripts/generate_excel_report.py`7879### 2. In-Context Analysis80The detailed analysis text with tables shown directly in the conversation, including:81- Step-by-Step ARV Breakdown (Base PPSF → Adjustments → Final ARV)82- Comps Summary Table (Address, Sale Date, Price, GLA, Beds/Baths, Year, Condition, Adjustments, Final Adjusted Value)83- Market Overview (Median price, PPSF, DOM, sale-to-list ratio, market phase)84- Sources & Assumptions (Data sources, time window, radius constraints)85- Recommendations & Caveats (Verification steps, risk factors, disclaimer)8687## Output Generation Instructions8889### Data Structure for Report Generation9091Prepare analysis data as JSON with this structure:9293```json94{95 "subject_property": {96 "address": "123 Main St",97 "city": "Austin",98 "state": "TX",99 "zip": "78701",100 "county": "Travis",101 "subdivision": "Downtown",102 "property_type": "Single Family",103 "gla": 1850,104 "lot_size": 6500,105 "beds": 3,106 "baths": 2,107 "year_built": 1985,108 "condition": "Dated"109 },110 "comps": [111 {112 "address": "456 Oak Ave",113 "sale_date": "2025-12-15",114 "sale_price": 485000,115 "gla": 1780,116 "ppsf": 272.47,117 "beds": 3,118 "baths": 2,119 "year_built": 1982,120 "condition": "Renovated",121 "distance": 0.3,122 "total_adjustments": -5000,123 "adjusted_value": 480000124 }125 ],126 "bucket_analysis": {127 "unrenovated": { "count": 2, "median_ppsf": 235.20, "avg_ppsf": 235.20 },128 "renovated": { "count": 2, "median_ppsf": 257.33, "avg_ppsf": 257.33 },129 "market_premium_pct": 9.4130 },131 "market_overview": {132 "market_phase": "Balanced",133 "median_price": 455000,134 "median_ppsf": 248.50,135 "avg_dom": 28,136 "sale_to_list_ratio": 0.98,137 "active_count": 45,138 "pending_count": 22,139 "notes": ["Market observations..."]140 },141 "arv_calculation": {142 "base_ppsf": 235.20,143 "market_premium_pct": 9.4,144 "renovated_ppsf": 257.33,145 "subject_gla": 1850,146 "base_arv": 476061,147 "feature_adjustments": -5000,148 "final_arv": 471000,149 "confidence_level": "Moderate",150 "confidence_band_pct": 5.0,151 "arv_low": 447450,152 "arv_high": 494550153 },154 "adjustments_applied": [155 {156 "comp_number": 1,157 "comp_address": "456 Oak Ave",158 "adjustment_type": "GLA",159 "reason": "Subject 70 sqft larger",160 "amount": -5000161 }162 ],163 "sources": ["MLS", "County Records", "Zillow"],164 "search_parameters": {165 "time_window": "90 days",166 "radius": "0.5 miles",167 "gla_range": "1600-2100 sqft"168 },169 "recommendations": ["Verification steps..."],170 "caveats": ["Disclaimers..."]171}172```173174### Generate Reports1751761. Save the analysis data to a JSON file1772. Run the Excel generator:178 ```bash179 python scripts/generate_excel_report.py output_report.xlsx data.json180 ```181182## Execution Instructions1831841. **Gather property address** from user1852. **Identify state** and determine disclosure status1863. **Load appropriate framework**:187 - Disclosure: `references/disclosure-prompt.md`188 - Non-Disclosure: `references/non-disclosure-prompt.md`1894. **Add property context** (if provided): current condition, seller notes, known issues1905. **Optional boundary drawing**: For block-by-block markets, use Zillow boundary tool1916. **Execute analysis** following the 9-step framework1927. **Verify results**: Cross-reference with market knowledge1938. **Prepare data structure**: Compile all analysis into JSON format1949. **Generate deliverables**:195 - Run `generate_excel_report.py` for Excel breakdown19610. **Deliver all outputs** to user: Excel and in-context analysis197198## Special Considerations199200### Non-Disclosure State Caveats201- Wider confidence bands (±5-7% vs ±2-5%)202- Must derive sold prices using triangulation methods203- Recommend "Option Period Verification" once under contract204205### Market Sentiment Adjustments206- Hot market (fast pendings, >50% over list): +5-7%207- Balanced market: +3-5%208- Cool market (60+ DOM, price cuts): 0-2% or negative209210### Two-Bucket Spread Sanity Check211The spread between unrenovated and renovated bucket PPSF is a market-derived metric (not a rehab cost estimate). It reflects what buyers in that market are willing to pay for updated finishes.212- Typical spread: 10-30%213- <5% or >30%: Re-examine comp validity — comps may be miscategorized or the market may have unusual dynamics