Real estate listing video with an AI avatar: fair housing script check
Describe the home, not the buyer. A fair housing word check in Python, a listing-photo scene on Sume Avatar 1.0, and the cost of a 45-second listing clip.
Write the script about the property and check it for words that describe people before you render. A listing video with an AI presenter is still an advertisement, and the Fair Housing Act covers advertisements in any form. The Fair Housing Institute's advertising guidelines, read 2026-10-06, say it prohibits 'any notice, statement, or advertisement' indicating preference, limitation or discrimination because of race, color, religion, sex, handicap, familial status or national origin.
What the page flags
| Topic | What the page says |
|---|---|
| Restrictive buzzwords | Steer clear of restricted, exclusive and limited |
| Family status | Never use "no children"; "no pets" is listed as permissible |
| Religion | Phrases like Christian roommate are prohibited |
| Disability | Restrictions such as no wheelchairs violate the rules |
| Acceptable | Master bedroom, desirable neighborhood, walk-in closets, walk to bus stop |
| Imagery | Show both majority and minority groups, both sexes, persons with disabilities and, when appropriate, children |
| Equal Housing Opportunity logo | Optional, but viewed favorably by regulators |
A word check before you render
This script flags phrases from the page. It is a first pass, not a legal review, and a clean result does not make a script compliant.
import re
FLAG = ["no children", "christian roommate", "no wheelchairs",
"restricted", "exclusive", "limited"]
def check(script: str) -> list[str]:
low = script.lower()
return [w for w in FLAG if re.search(r"\b" + re.escape(w) + r"\b", low)]
script = ("Welcome to 14 Maple Lane. Three bedrooms, a walk-in closet "
"in the master bedroom, and a great view of the park.")
hits = check(script)
print("review these:", hits) if hits else print("no flagged phrases")Rendering the video
Use the property photo as the scene. In POST /v1/avatar-1.0/talking-video, scene: { "type": "photo", "image_url": "https://..." } takes a public HTTPS photo, and product_image is optional. A video is 4-60 seconds, with the avatar presenting a script of roughly 125 words at most for 45 seconds, since Sume estimates 2.8 words a second.
Run an avatar video preview first. It shows the first-frame stills, so you can check that the composition does not imply who the home is for.
Cost
A 45-second clip without a product image costs, per Sume's pricing code on main, $8.28 at standard ($0.184 a second), $11.03 at plus ($0.245) and $24.75 at max ($0.55). Keep the property facts, price and agent details in the description, where you can edit them without a new render.
Keep the compliance check in your own workflow, ahead of the paid call. Sume renders the words you send; it does not review them for housing law. If you use a multi-scene plan, run the check on every scene's text, not only the opener.
Imagery counts too. The page asks for diverse communities, so a property photo with a neutral scene prompt is safer than a prompt that describes the kind of household the home is for. Describe the room, the light and the street, and leave buyers out of the scene text.
Sources
Related posts
More in Use cases
- Reddit 15-second ad: join hook, demo and offer, then plan first
Build a 15-second ad from three clips on Timeline 1.0 and check its length and cost with the unbilled /plan call before you pay for a render.
- Reddit 15-second engaged views: does your voiceover CTA land?
Reddit's Engaged Video Views beta bills videos over 15 s at 15 s. Use TTS word timestamps to check that your call to action is spoken before second 15.
- Reddit 15-second video ad: burn captions so it reads on mute
For a 15-second Reddit video ad, burn captions into the cut with POST /v1/video-captions: one $0.20 job, style slam for English, no new edit.
- Reddit 15-second ad: find the best 15 seconds with video frames
Before cutting a long ad to 15 seconds for Reddit, pull up to 24 stills with POST /v1/video-frames, one every two seconds, and choose where the cut starts.
Written by Sume