JSON Photo Blueprints: Structured Property Condition Documentation with Gemini
What This Builds
Your inspection photos contain dozens of condition details that need to make it into your report: floor material, condition rating, visible deficiencies, feature-by-feature comparisons to comps. Most appraisers pull this from memory after the inspection or squint at photos back at the desk. This workflow changes that. Upload a property photo to Gemini, extract a structured JSON blueprint of every visible element, then use that blueprint to write precise condition notes, annotate comp comparisons, and produce consistent documentation that holds up under underwriter review.
After the initial setup, each photo takes about 3 minutes to process. The output: condition notes ready to paste into your URAR form, a structured comp annotation comparing subject to comparable photo elements, and a defensible record of what you observed.
Prerequisites
- Comfortable using an AI chat tool for basic tasks (Level 3)
- Gemini account at gemini.google.com — free tier works for basic condition extraction; Advanced ($20/month) produces cleaner JSON and handles complex interior scenes better
- At least one interior and one exterior photo per property, already on your computer or phone
- Familiarity with Fannie Mae condition ratings C1-C6 (used throughout)
The Concept
When you upload a photo to Gemini and ask it to "describe this kitchen," you get a paragraph. Useful, but hard to compare against another property's kitchen description. Ask Gemini to return the same analysis as structured JSON, and you get a machine-readable list of every element — floor material, counter surface, appliance condition, cabinet style, overall rating — each in a separate named field.
That named structure is the key. Once you have the kitchen as a JSON object for the subject property and a second JSON object for the same kitchen in Comparable 1, comparison is direct. You can see exactly which fields differ. You can edit one field to correct an observation, and nothing else shifts. You can paste both JSON blocks into a third prompt and ask Gemini to write the comparison narrative — and it produces a paragraph that addresses only the actual differences, not a generalized description.
Think of it like your comp grid. The URAR adjustment grid works because every property fills the same named columns. This workflow does the same thing for visual condition data from photos.
Build It Step by Step
Part 1: Extract the JSON Blueprint from a Subject Photo
Open Gemini at gemini.google.com and start a new conversation.
Upload one interior photo of the subject property (kitchen, bathrooms, and main living areas are the highest-value targets for condition documentation).
Use this exact prompt to extract the blueprint:
Analyze this property photo and return a structured JSON object describing every visible element. Use this schema:
{
"room": "",
"condition_rating": "", // Use Fannie Mae scale: C1, C2, C3, C4, C5, or C6
"flooring": { "material": "", "condition": "", "visible_defects": "" },
"walls_ceiling": { "material": "", "condition": "", "visible_defects": "" },
"counters": { "material": "", "condition": "", "visible_defects": "" },
"cabinets": { "style": "", "material": "", "condition": "" },
"appliances": { "present": [], "condition": "", "apparent_age": "" },
"lighting": { "type": "", "condition": "" },
"windows": { "present": true, "condition": "", "type": "" },
"notable_features": [],
"visible_deficiencies": [],
"update_apparent": "", // "original", "partial update", "full update", estimated decade
"overall_notes": ""
}
Return only the JSON. Do not add explanation outside the JSON block.
Copy the returned JSON and save it in a text file named for the photo (e.g.,
subject-kitchen.json).Repeat for each room you photographed. Exterior photos use a different schema (see Variations section below).
Part 2: Build the Comparable Annotation
Once you have the subject's JSON, extract the same structure from your comp photos. Most MLS systems store photos you can download.
In a new Gemini conversation, upload the comparable property photo for the same room.
Use the same schema prompt from Part 1, but add one line at the top:
Analyze this property photo and return a structured JSON object describing every visible element. This is a comparable sale photo, not the subject property. Use this schema: [paste same schema]
Save this as
comp1-kitchen.json.Now open a fresh Gemini conversation and paste both JSON blocks with this prompt:
I have two property kitchen photos analyzed as JSON. Compare them and write a 2-3 sentence appraisal adjustment narrative explaining the material differences that would affect value. Use professional appraisal language appropriate for a URAR addendum.
Subject kitchen:
[paste subject JSON]
Comparable 1 kitchen:
[paste comp1 JSON]
Focus only on differences that are visible and material to condition rating or value. Do not invent details not present in the JSON.
- The output is a ready-to-use comparison paragraph for your report addendum.
Part 3: Generate Condition Notes for URAR Form Fields
The JSON blueprint also feeds your standard condition documentation directly.
- Take the subject JSON for any room and use this prompt:
Using this property photo analysis JSON, write condition notes suitable for a URAR appraisal report. Address: overall condition rating, any deficiencies requiring repair, and any features that positively or negatively affect value. Keep to 3-5 sentences. Use professional appraisal language.
[paste room JSON]
Copy the output into the Comments section of your URAR form or your report addendum.
For properties with condition issues, save the JSON alongside your report work file. It documents exactly what was observed and when, which is useful if a reconsideration of value request questions your condition rating.
Part 4: Build a Reusable Prompt Template
After 2-3 reports, create a saved text file with your standard prompts. Paste and go rather than retyping each time.
Suggested file structure:
/Appraisal AI Templates/
schema-interior.txt (the interior JSON schema prompt)
schema-exterior.txt (the exterior JSON schema prompt)
compare-rooms.txt (the comparison narrative prompt)
condition-notes.txt (the URAR condition notes prompt)
This turns a new technique into a repeatable workflow. The setup time drops from 10 minutes to 2 minutes per photo after the first few reports.
Real Example: Ranch Home with Mixed Condition Kitchen
Assignment: 3/2 ranch, 1978 construction, Chandler, AZ. Appraiser has concerns about the kitchen condition — original cabinets, partial counter update, older appliances. Needs to justify C4 rating against a comp with a renovated kitchen.
Step 1 — Extract subject blueprint:
Appraiser uploads subject kitchen photo with the schema prompt. Gemini returns:
{
"room": "kitchen",
"condition_rating": "C4",
"flooring": {
"material": "vinyl tile",
"condition": "fair",
"visible_defects": "cracking at seams near dishwasher, discoloration"
},
"walls_ceiling": {
"material": "painted drywall",
"condition": "fair",
"visible_defects": "grease staining above range"
},
"counters": {
"material": "laminate with tile backsplash",
"condition": "average",
"visible_defects": "edge separation at sink"
},
"cabinets": {
"style": "raised panel",
"material": "wood veneer",
"condition": "fair — original, showing wear on door faces"
},
"appliances": {
"present": ["range", "dishwasher", "refrigerator"],
"condition": "functional, older",
"apparent_age": "15-20 years"
},
"update_apparent": "partial update — counters only, circa 2010-2015",
"visible_deficiencies": ["floor seam cracking", "grease staining", "cabinet wear"],
"overall_notes": "Kitchen is functional but showing deferred maintenance. Consistent with C4 rating."
}
Step 2 — Extract comp blueprint:
Appraiser downloads the MLS photo for Comparable 1 (renovated kitchen, sold 4 months prior). Same schema prompt returns a C2-rated kitchen with quartz counters, refaced cabinets, LVP flooring, and updated appliances circa 2022.
Step 3 — Generate comparison narrative:
Prompt: paste both JSON blocks with the comparison narrative request.
Gemini output (lightly edited):
"The subject kitchen rates C4, reflecting original cabinetry showing surface wear, vinyl tile flooring with visible seam cracking, and appliances approximately 15-20 years old. Comparable 1 rates C2, with a full kitchen update completed circa 2022 including quartz countertops, refaced cabinetry, LVP flooring, and updated appliances. The condition differential supports a downward adjustment to Comparable 1 of approximately $8,000-$12,000, consistent with paired sales analysis for the Chandler market."
Time saved: Condition documentation that previously took 20-30 minutes of review, typing, and cross-referencing — done in 8 minutes.
What to Do When It Breaks
Gemini returns a paragraph instead of JSON. The model occasionally ignores formatting instructions. Add "Return ONLY the JSON object. No prose before or after the JSON block." to the end of your prompt. If it persists, paste your prompt into a code block using triple backticks around the schema.
The condition rating doesn't match your professional judgment. The JSON is a starting point, not a final determination. Change the
condition_ratingfield to reflect your assessment and leave a note inoverall_notes. The point of the JSON is precision in documentation — your certification is still what counts in the report.The comparison narrative mentions things you can't verify from the photo. Add this line to the comparison prompt: "Only describe differences visible in the JSON data. Do not infer or speculate about items not present in either JSON object." This constrains the output to observable facts.
MLS photos are too small or compressed for clear analysis. Gemini performs better on high-resolution photos. Use your own inspection photos for the subject. For comps, download the largest available MLS image. Agent-submitted comp photos in CoStar or from the listing file are often higher quality than thumbnail exports.
Free tier produces incomplete or malformed JSON. Complex scenes (cluttered rooms, unusual angles) can cause the free model to truncate output. Switch to Advanced for those photos, or simplify the schema to fewer fields for the initial extraction.
Variations
Exterior schema: Replace the interior fields with
roof_condition,siding_material,siding_condition,foundation_visible,driveway,landscaping_condition,garage_type,visible_defects, andcondition_rating. Same workflow, different schema.Simpler version: Skip the comparison step entirely. Use Gemini only to extract condition notes for your own URAR form fields. No comp photos needed. This still cuts condition documentation time significantly and produces more consistent language than free-form typing.
Batch processing for a market area: If you work in a specific subdivision repeatedly, build a reference JSON for a typical C3 "average condition" home in that market. Compare every new subject against that reference to calibrate your ratings consistently across reports.
AI Studio alternative: When Gemini Pro quota runs out, AI Studio (aistudio.google.com) uses the same underlying model at no cost. The interface is more technical but the output quality is equivalent.
What to Do Next
This week: Run the workflow on one completed report you already wrote. Compare the AI-generated condition notes to what you typed manually. The gap between the two tells you where your current documentation is thin.
This month: Build your four saved template files and run the workflow on every new inspection. After 10 reports, you have a calibrated library of JSON blueprints showing your condition ratings across a range of properties.
Advanced: Combine this with your Claude Project (see "Claude Project: Build Your Personal Appraisal Report Writing Assistant"). Store your standard condition schemas inside the Project so the extraction step is always pre-configured. Feed subject and comp JSON directly into a report-writing session — one workflow from photo to URAR-ready narrative.
Advanced guide for property appraiser professionals. Gemini Advanced ($20/month) is recommended for complex interior scenes. Free tier works for most residential inspections.