Real estate listing photo QA
Screen listing photography for AI-generated staging, impossible fixtures, or misleading visual edits before MLS publication and syndication to Zillow, Realtor.com, and Redfin. Virtual staging is allowed; deceptive staging is the problem the gate solves.
Business value
- Distinguishes the two categories of AI in real estate photography: disclosed virtual staging (allowed and useful) and undisclosed deceptive staging (an MLS rules violation and a litigation risk).
- Catches listings where renovated 'after' photos don't match the actual property condition, before a buyer schedules a showing and discovers the difference.
- Reduces MLS-listing-suppression incidents and the resulting carrier-broker disputes.
Agent job to be done
Be a listing-compliance reviewer. Allow disclosed virtual staging and authentic photography. Hold listings with undisclosed manipulation cues. Reject listings where AI-generated rooms misrepresent the actual property state.
format: otherintended_use: publishdomain: real estate listing photo QA / virtual staging
MLS disclosure rules and the virtual-staging line
NAR's Code of Ethics Article 12 requires truthful representation in advertising — including photos. Most regional MLS systems (Bright MLS, CRMLS, Stellar MLS) have explicit virtual-staging disclosure rules: virtually staged photos must be labeled, and structural/fixed-property features cannot be virtually altered. The gate's value is enforcing the disclosure step uniformly across an agent's listings, especially when listings are syndicated to multiple portals with different disclosure requirements.
When to call VeracityAPI
Before MLS submission, before listing syndication to third-party portals, and on any photo replacement during the listing lifecycle.
What image URL to submit
Public HTTPS image URL for each listing photo. For listings with both 'original' and 'virtually staged' versions, score both and confirm the disclosure label matches.
Decision policy
- allow: low risk, OR medium risk with a disclosed 'virtually staged' label visible on the photo.
- revise: medium risk without disclosure — add the staging-disclosure overlay or replace with an unstaged photo.
- human_review: high risk on photos representing fixed-property condition (foundation, structural elements, exterior shots) — these can't be 'virtually staged' under most MLS rules.
- reject: photos showing rooms or features that don't exist in the actual property.
Request template
The exact payload shape this use case sends. The sample below uses representative content for this workflow; substitute your own.
curl https://api.veracityapi.com/v1/analyze \
-H "Authorization: Bearer $VERACITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"image","content":"https://veracityapi.com/demo/influencer-beauty-tonic.jpg","context":{"format":"other","intended_use":"publish","domain":"real estate listing photo QA / virtual staging"},"store_content":false}'Automation recipe
- Listing-agent worker receives the photo bundle.
- Score each photo with intended_use=publish.
- Cross-reference with the listing's 'has virtual staging' disclosure field — undisclosed manipulation is the failure mode to surface.
- Allow-tagged listings flow to MLS submission.
- Held listings route to the broker with evidence categories pinned, plus a 'add staging disclosure or replace photo' prompt.
Evidence spans agents should inspect
- 'virtual_staging_undisclosed' — furniture, decor, or finishes inserted into otherwise-authentic room photos without staging-disclosure overlay
- 'impossible_fixture' — fixtures or features that don't exist in the property (a 'kitchen' inserted into a room that's actually unfinished)
- 'composite_exterior' — exterior shots with grass, landscaping, or views composited in
- 'staging_inconsistency' — staging style that doesn't match across photos of the same room
Policy pseudocode
if (result.recommended_action === "allow") continueWorkflow(); if (result.recommended_action === "revise") rewriteWith(result.evidence, result.recommended_fixes); if (result.recommended_action === "human_review") queueForHumanReview(result); if (result.recommended_action === "reject") discardOrRebuild();
KPIs to track
- % of listings with held photos before MLS submission
- MLS rule-violation incidents per 1,000 listings (target: drop after deployment)
- carrier-broker dispute volume
- buyer-side complaints citing 'photos didn't match property' per quarter
- median time from photo upload to listing-live
What can go wrong
- Virtual staging is explicitly allowed by most MLS systems WITH disclosure. The gate's job is to enforce the disclosure step, not to prohibit virtual staging.
- Drone photography has aerial-perspective cues that can occasionally trip 'composite_exterior' on real photos. Calibrate against your local-market drone-photography prevalence.
- Real estate photography is highly post-processed even when it's authentic (HDR, color correction, perspective straightening). 'Low confidence' on heavily-edited photos is normal.
Cost and latency notes
Image analysis is a flat $0.02 per image. The endpoint accepts HTTPS image URLs, stores no image bytes, and logs only a URL hash plus hostname. Current v0.1 latency is vision-model-bound, so preflight balance and retry carefully.
Agent evaluation checklist
- Does this workflow have a costly failure mode from manipulated or synthetic-looking visuals?
- Can the agent store evidence categories without storing raw image bytes or full URLs?
- Should this workflow fail open, fail closed, or queue human review if image scoring is unavailable?
- Which field drives policy: recommended_action, risk_level, content_trust_score, or synthetic_image_risk?
- What local provenance check should complement the API score?