Building compliant software in real estate / The rules that apply to your code
Housing advertising and audience targeting
This is the obligation engineers find least intuitive, because audience targeting and delivery optimisation feel like technical concerns. They are not. Deciding who sees a housing listing is deciding who learns the opportunity exists, and that is advertising of a housing opportunity.
Published August 22, 2026. Editorial.
Key takeaways
- HUD's May 2024 guidance addresses housing advertising through online platforms using targeted ads, including where AI performs the targeting.
- Optimisation for engagement can produce a skewed audience without any targeting criterion being set, because the optimiser learns from historical response.
- Recommendation feeds and search ranking are the same problem in a different form, and are usually excluded from the compliance conversation entirely.
- The testable property is the delivered audience, not the requested audience.
In May 2024 HUD issued guidance addressing the application of the Fair Housing Act to the advertising of housing opportunities through online platforms that use targeted ads, noting that platforms often use AI to target ads to specific groups and that such targeting must not discriminate against protected classes [1].
The reason this is worth its own page is that engineers building housing products usually do not think of themselves as being in the advertising business, and several common features are advertising in the relevant sense.
Three places this shows up
Explicit targeting. A campaign configured to reach a defined audience. This is the obvious case and the one most teams already treat carefully, since selecting audiences by characteristics related to protected classes is understood to be a problem.
Delivery optimisation. This is the case that surprises teams. Nobody sets a discriminatory targeting criterion. The system is told to maximise engagement or minimise cost per enquiry, and it learns from historical response data which users are most likely to respond. If historical response patterns differ across groups, and they generally do, the optimiser will deliver the ad disproportionately to some groups without any targeting criterion having been set.
The system is doing exactly what it was asked to do. The requested audience was neutral. The delivered audience was not.
A concrete version of this: a "lookalike" or "similar audience" feature, common in ad platforms, that takes a seed list of people who previously engaged with a listing or a campaign and finds other users who resemble them on whatever signals the platform uses internally, which the advertiser generally cannot see or control. If the seed list itself reflects a skewed pattern of past engagement, the lookalike expansion propagates and can amplify that skew, because the platform's similarity model is doing exactly what it is designed to do: finding more people like the ones already in the list. The advertiser set no discriminatory criterion and often cannot even inspect what the platform's similarity model used to build the expanded audience. That opacity is itself a reason to measure the delivered outcome rather than only reviewing the campaign's stated targeting, since the stated targeting can be completely neutral while the actual mechanism behind it is not visible at all.
Ranking and recommendation. A search results page ordering listings for a user. A feed suggesting properties. A notification deciding which new listing is worth alerting someone about. Each of these decides which housing opportunities a person learns about, and each is typically built by a team that has never been part of a fair housing conversation, because it is filed under relevance rather than advertising.
That third category is where we would expect most unexamined exposure to be in a typical proptech product, precisely because nobody has framed it as the same problem. It is worth asking directly which team owns ranking or the recommendation feed and whether fair housing has ever come up in that team's own reviews, since the honest answer in most organisations is that it has not, and that gap is the finding rather than a footnote to it.
Measure the delivered audience
The single most useful engineering consequence of all this: the property to measure is the audience that actually received the impression, not the audience that was requested.
That is a data model requirement before it is an analysis one. The system has to record, for each listing or campaign, the composition of who was actually shown it, in a form that can be assessed against the composition of the eligible population. Most ad and feed systems record delivery in aggregate for billing and performance and do not retain what is needed to answer this question later.
The comparison that matters is between the delivered audience and a reasonable baseline of who could have been shown it. A delivered audience that differs sharply from the eligible population is the signal, and it is a signal regardless of whether any targeting criterion explains it. In fact the cases with no explanatory criterion are the interesting ones, because they are the ones nobody would have found by reviewing the campaign configuration.
Constrain the optimiser
If an optimiser learns to deliver a housing ad unevenly, the engineering options are the ones available for any constrained optimisation problem.
Remove features that carry protected-class signal from the optimisation, understanding from why removing the protected field is not a defence that this is necessary and not sufficient. Constrain the optimiser explicitly, so delivery composition is bounded relative to the eligible population rather than following engagement without limit. Or take housing listings out of the general optimisation path entirely and deliver them under a different, simpler policy.
That last option is worth considering seriously rather than dismissing as a worse option. Housing is a category where the cost of getting delivery wrong is high and the marginal benefit of aggressive optimisation is modest. A simpler delivery mechanism for housing content, applied uniformly, is defensible, explainable, and cheap to verify. Sophisticated optimisation of housing ad delivery gains a small amount of efficiency and adds a category of risk that is hard to measure and harder to explain.
Ranking is the same problem
If your product ranks listings for users, the same analysis applies, and it applies to a feature nobody flagged.
The questions are identical. Does the ranking model use features correlated with protected characteristics? Does the resulting exposure of listings differ systematically across user groups? Are certain listings systematically shown to a narrower or different audience than others, and does that pattern align with anything it should not?
The practical starting point is simply to ask, for a sample of listings, who saw them. Most teams cannot answer that question today, and finding out that you cannot answer it is itself the first finding.
A specific mechanism worth checking for in a ranking model: features derived from historical engagement with a listing, such as click-through rate or time spent viewing, fed back into the ranking of future listings. This is a completely standard technique for improving relevance and it creates a feedback loop. If a listing received less engagement in the past because it was shown to fewer people in a particular group, and the ranking model treats low historical engagement as a signal that the listing is less relevant, it will show that listing to fewer people going forward, which produces even less engagement, which reinforces the signal further. Nothing about the model's objective mentions a protected characteristic, and the loop can still produce a pattern where certain listings, or certain groups of viewers, are shown a narrowing set of options over time. Breaking the loop generally means periodically exploring outside what the model currently ranks highest, rather than only exploiting what it already believes works, so that a listing is not permanently disadvantaged by an early measurement that itself reflected uneven exposure.
The vendor question
Many housing products advertise through platforms they do not control. The targeting, optimisation, and delivery happen inside somebody else's system.
That does not remove the need to understand what is happening, and the practical position is to use the controls the platform provides for housing-related advertising, which major platforms have introduced, and to retain records of the audience configuration used for each campaign. What you can measure is limited by what the platform reports, which is an argument for keeping your own records of what you asked for, and for treating platform-provided housing ad controls as a minimum rather than a complete answer.
There is also a practical distinction worth drawing between running a housing campaign on a general-purpose ad platform and running it through a specialised listing syndication channel, such as a multiple listing service feed or a rental listing aggregator. The general-purpose platform's optimisation and audience tools were built for advertising broadly and then adapted for housing content, which is why the housing-specific controls exist as an overlay rather than as the platform's original design. A specialised housing channel is more likely to have been built around the constraint from the start, which does not make it automatically safer, but does mean the questions to ask a specialised vendor are different from the questions to ask a general platform: ask the specialised vendor how listings are ordered and to whom, and ask the general platform what its housing-specific controls actually restrict, since "we have housing ad controls" describes a feature category rather than a specific guarantee about what is and is not restricted.
If you want help working out what your product currently decides about who sees what, get in touch.
Best for
- Products with a feed, a ranking model, or notification logic over housing listings
- Teams running paid campaigns with engagement or cost optimisation on housing content
Avoid if
- Listings are shown to everyone uniformly with no ranking, targeting, or optimisation, which is rarer than teams assume
Check before you decide
- For a sample of listings, ask who actually saw them, and see whether the system can answer
- Check whether delivered audience composition is retained or only aggregate delivery counts
- Ask whether the ranking or feed team has ever been part of a fair housing discussion
- Check whether housing content goes through the same optimiser as everything else
Common questions
Is ad targeting a fair housing issue?
HUD's May 2024 guidance addresses housing advertising through online platforms using targeted ads, including where AI performs the targeting. Deciding who sees a listing is deciding who learns the opportunity exists, which is why this reaches engineering decisions that feel purely technical.
How can ad delivery skew without any targeting criterion?
Through optimisation. An optimiser told to maximise engagement learns from historical response data which users respond most, and if response patterns differ across groups it will deliver disproportionately without any criterion being set. The requested audience is neutral and the delivered audience is not.
Do recommendation feeds and search ranking count?
They decide which housing opportunities a person learns about, which is the same function under a different name. This is where most unexamined exposure is found in a typical proptech product, because ranking is filed under relevance and built by teams who have never been part of a fair housing conversation.
What should a housing product measure about ad delivery?
The delivered audience rather than the requested one, compared against a reasonable baseline of who could have been shown the listing. This is a data model requirement first, since most ad and feed systems record delivery in aggregate for billing and do not retain what is needed to answer the composition question later.
Should housing listings go through the same optimiser as other content?
Taking them out is worth serious consideration rather than dismissal. Housing is a category where the cost of getting delivery wrong is high and the marginal gain from aggressive optimisation is modest, so a simpler uniform delivery policy for housing content is defensible, explainable, and cheap to verify.
What is the difference between explicit ad targeting and delivery optimisation?
Explicit targeting is a campaign configured to reach a defined audience, and most teams already treat it carefully. Delivery optimisation is different: nobody sets a discriminatory criterion, but a system told to maximise engagement learns from historical response data, and if response differs across groups the ad is delivered unevenly with no targeting criterion ever having been set.
How do you check whether ad delivery is compliant with fair housing guidance?
Measure the audience that actually received the impression, not the audience that was requested, and compare it against a reasonable baseline of who could have been shown the listing. This requires the system to record delivery composition rather than only aggregate counts for billing, which most ad and feed systems do not retain today.
Does relying on a major ad platform's housing controls remove the compliance risk?
It reduces but does not remove it. Major platforms have introduced controls for housing-related advertising, and using them is a reasonable minimum, but what a product can measure is limited by what the platform reports. Keeping independent records of the audience configuration requested for each campaign is what makes that minimum a starting point rather than a complete answer.
Related reading
How to tell if an AI feature idea is worth building
Most AI feature ideas look good in a demo and fail during the work of making them reliable. Here are the four questions we ask to tell the ones worth building from the ones that just look good in a demo.
AI is an amplifier, not a fix
The 2025 DORA data says AI raises throughput and hurts stability at the same time. Which of those two you get is decided by what has to pass before a change is released, and by nothing else.
More in The rules that apply to your code
AVM quality control standards in practice
The AVM rule is unusual in that it names testing as a requirement rather than leaving it implicit. For an engineering team, that makes it one of the easier regulations to build for, because most of what it asks for is measurement you can automate.
Tenant screening and fair housing
Screening software is used at the point where a person does or does not get housing. HUD's May 2024 guidance addressed how the Fair Housing Act applies to that function, including where algorithms and AI perform it, and the design implications are concrete.