In this article
Before you start
This question belongs to the machine learning (ML) system design interview path, and its closest neighbor is real-time fraud detection.
Why interviewers ask this
The question is a rare-event problem with a human cost on both sides, so one answer shows whether a candidate thinks about data, metrics and operations or only about algorithms. Candidates report it in machine learning (ML) system design rounds for marketplaces; no public source says which company asks it.
A weak answer names a model ("gradient boosting on listing features") and stops. A strong answer starts from the label and the base rate, says what happens to a listing at each score, and picks metrics that survive imbalance. A Staff-level answer adds the parts around the model: the review queue's capacity, the feedback loop that creates new labels, re-scoring over time, and the fact that fraudsters adapt. The interviewer is listening for those trade-offs, because a model is a small part of a trust system.
Fraudulent host listings from first principles
- Listing-fraud model
- A listing-fraud model is a classifier that reads the signals of a host and a listing, such as reputation, message templates and photos, and outputs a risk score that the platform turns into an action: block, review or allow.
- Operating threshold
- An operating threshold is the score cutoff chosen after training that decides which listings are blocked, reviewed or allowed, and moving it trades missed fraud against wrongly flagged honest hosts.
In plain words
Think of a hotel front desk that checks every new booking. It lets most guests in, turns away a few obvious impostors, and calls a manager for the unclear ones. The analogy breaks in one place. Here the desk is a model that learns its checks from past cases. Impostors also change their story once they learn the checks.
In one precise sentence: score each listing for fraud risk, then pick cutoffs that turn the score into actions at a cost you accept.
Step 1: Name the label and the class imbalance
Step-by-step description
- Start from confirmed fraud labels.
- Risk signals feed a risk model.
- Cutoffs route to block, review or allow.
- Outcomes become new labels.
- Labels come first, then risk signals and a model.
- Thresholds route each listing to block, review or allow.
- Review outcomes and user flags become new labels for retraining.
The label is "this listing was later confirmed as fraud", and fraud is rare, so the data show class imbalance, which is a condition where one class is far rarer than the other. Airbnb said in 2017 that fake listings are rare but gave no rate, so this page assumes that 0.5% of new listings are fraud, an illustrative figure.1 Out of 100,000 new listings that is 500 frauds. A model that always answers "legit" is right 99.5% of the time and finds none of them.1
Accuracy therefore misleads. The scikit-learn course from Inria says accuracy should not be used on imbalanced classes, and the scikit-learn guide offers balanced accuracy instead. Precision is the share of flagged listings that are really fraud, tp / (tp + fp), and recall is the share of all frauds that get flagged, tp / (tp + fn), as the scikit-learn documentation defines them. Labels matter most: the Airbnb risk engineers' takeaways heading in their 2014 post reads "ground truth > features > algorithm choice".
Step 2: Build risk signals and a first model
Risk signals are the inputs, and the labels of Step 1 are what the model learns from. Airbnb described in 2017 a system that evaluates each listing against hundreds of risk signals, naming host reputation, template messaging and duplicate photos. A useful grouping is the host and account, the listing content, and behavior over time, such as bursts of new listings. Photos need image matching; the computer vision system design questions cover that part.
Start with rules and add a model once the rules get unwieldy. The 2014 Airbnb post says that for complex, evolving fraud, heuristics eventually become too complicated, and it reports that random forests had an appropriate precision-recall for its purposes. A tree ensemble on mixed features is a sound first model. Sudden spikes that no rule anticipated belong to anomaly detection, and non-ML controls still count: Airbnb screens out contact details until a booking and holds payment until after check-in, which makes fraud harder to cash out. In this step the signals and a model sit between the labels and the thresholds.
Step 3: Choose thresholds and three actions
The model outputs a score, and an operating threshold turns it into one of three actions. Airbnb described in 2017 that a high predicted likelihood leads to an automatic block, and other cases are delayed for extra review. That gives block, review or allow, with thresholds routing each listing to one of the three.
Moving the cutoff trades recall against precision. At the three assumed operating points below the model finds 300, 400 or 450 of the 500 frauds.1 The cost uses an assumed ratio of 200 cost units for a missed fraud to 5 for a wrongly flagged honest host, and the review team can inspect 1,500 listings per 100,000, both illustrative.1
To keep the arithmetic simple, each operating point here is a single review cutoff: every flagged listing goes to the review queue, and the 5-unit cost is the reviewer time plus the friction for an honest host (illustrative). In the full system a second, higher cutoff blocks automatically, and its false alarms cost far more.
| Quantity | High cutoff | Middle cutoff | Low cutoff |
|---|---|---|---|
| Recall | 60% | 80% | 90% |
| False-positive rate | 0.2% | 1% | 3% |
| Frauds caught | 300 | 400 | 450 |
| False alarms | 199 | 995 | 2,985 |
| Listings flagged | 499 | 1,395 | 3,435 |
| Precision | 60.1% | 28.7% | 13.1% |
| Expected cost (cost units) | 40,995 | 24,975 | 24,925 |
At the middle cutoff recall is 80% and precision is 28.7%.1 At the low cutoff precision falls to 13.1% while recall rises to 90%. The low cutoff has the lowest cost by a hair, but it flags 3,435 listings, more than the queue can hold, so the middle cutoff wins. Capacity, not only cost, picks the threshold.
Text description of the diagram
- At the middle cutoff recall is 80% and precision is 28.7%.
- At the low cutoff precision falls to 13.1% while recall rises to 90%.
Step 4: Score at the right time and close the loop
Scoring happens at listing creation and again as new events arrive, and the answers to those scores become new labels. The 2014 Airbnb post describes an asynchronous design, fine where a few seconds of delay has no negative effect, and notes that most of its scoring responses took under 10 milliseconds. Blocking a listing before it goes live needs the fast path with precomputed features. Re-scoring matters because a bad host may look fine at upload.
Models do not learn on their own. The Airbnb engineers wrote that "models cannot train themselves on-the-fly" and that a secondary mechanism must account for new ground truth. In the 2017 post, user flags feed the risk model, which decides between automatic removal and manual review. Review outcomes and user flags therefore become new labels for retraining. A related loop is described in harmful-content detection. A common pitfall is to treat labels from review only: reviewed cases are the ones the model already found suspicious, so keep a small random sample reviewed too.
Knowing it is half the job. Saying it is the other half.
Interview Clozo is an AI interview copilot for real interview rounds: it hears the question and puts a strong answer on your screen, and you say it in your own words. See the features or how it works.
Start Free Trial →The Staff-level answer
How would you build a model to detect fraudulent host listings?
I would treat it as a rare-event classification problem. First I define the label from confirmed fraud and assume a low base rate, so I report precision and recall, never accuracy. Features cover host reputation, listing content such as duplicate photos and template text, and behavior over time; I start with rules and a tree ensemble.
The score drives three actions: block above a high cutoff, hold for human review in a middle band sized to reviewer capacity, allow below it. I choose the cutoffs from the cost of a missed fraud against a wrongly flagged or blocked honest host. Then I re-score as events arrive, feed review outcomes and user flags back as labels, and retrain, because fraudsters adapt.
What makes it Staff-level is that it ends with capacity, cost and a feedback loop, not with an algorithm name.
The rubric
| Dimension | Weak answer | Strong answer | Staff answer |
|---|---|---|---|
| Correctness | Names one model and reports accuracy. | Frames a rare-event classifier and reports precision and recall. | Adds the base rate and shows how low prevalence drags precision. |
| Depth | Lists features loosely. | Groups signals by host, listing and behavior. | Mixes rules, model and non-ML controls such as held payouts. |
| Trade-offs | Blocks anything suspicious. | Uses block, review and allow tiers. | Picks cutoffs from cost and review capacity together. |
| Communication | Jumps between topics. | States the label, the model, then the action. | Gives the answer in a clear order and says what breaks. |
| Follow-up readiness | Stalls on drift or late labels. | Re-scores and retrains on new labels. | Keeps a random review sample to avoid label bias. |
Three variants of this question
How would you detect fake listings with almost no labels?
Start with rules on the signals Airbnb named, such as duplicate photos and templated messages, plus anomaly detection for sudden spikes, and send the top cases to review. The reviewed cases become the first labels for a supervised model.
What if the fraud rate doubles overnight?
With the base rate at 1% and the same recall and false-positive rate, the middle cutoff finds 800 frauds and raises 990 false alarms.1 Precision rises to 44.7%, and flagged volume grows to 1,790, above an assumed capacity of 1,500, so you add reviewers or raise the cutoff.
How would you handle fraudsters who copy real listings?
Treat duplicates as a signal, not a verdict: matching photos or text across hosts raises the score, and the review queue decides. Image matching and embeddings are covered in the computer vision system design questions.
Common mistakes
- "My model is 99.5% accurate." (wrong) Accuracy hides a model that finds nothing. (right) "I report precision and recall at the chosen threshold."
- "One classifier at upload time is enough." (wrong) Bad hosts can look fine at upload. (right) "I re-score as events arrive and add rules and product friction."
- "I block everything the model flags." (wrong) That blocks honest hosts. (right) "High scores are blocked, middle scores go to review."
- "A better algorithm fixes weak labels." (wrong) The Airbnb risk engineers put ground truth first. (right) "I invest in labels and a feedback loop before tuning the model."
Follow-up questions
Why not block every listing the model scores as suspicious?
Because the precision is low at a loose cutoff: in the example only 13.1% of flagged listings are fraud, so most blocks would hit honest hosts. A review tier lets people settle the unclear cases.
How do you handle labels that arrive late?
Train on listings old enough to have a verdict, treat recent ones as unlabeled, and refresh the training set on a schedule. Retraining on new ground truth needs its own mechanism, as the 2014 Airbnb post says.
Why keep rules if you have a model?
Rules are quick to ship and explain, so they catch known patterns while the model learns the subtler ones. The 2014 post says heuristics become unwieldy only for complex, evolving fraud.
How do you catch duplicate photos across hosts?
Compute a compact fingerprint or embedding of each photo and look up near matches among other hosts' listings; feed the match count into the risk model as one signal. The retrieval and ranking funnel shows how such lookups are staged.
How do you know the model has gone stale?
Watch precision on reviewed cases, the share of listings landing in each tier and the score distribution over time. A shift means fraud changed or the base rate moved, and it is time to retrain. A sibling problem with delayed labels is churn, customer value and credit-risk prediction.
- Define the label first and assume a low base rate; judge the model by precision and recall, not accuracy.
- Combine rules, a tree ensemble and non-ML controls such as held payouts.
- Route scores to block, review or allow, and pick cutoffs from cost and review capacity.
- Re-score over time and turn review outcomes and user flags into new labels.
- Fraudsters adapt, so monitor precision and retrain.
Sources
- What we're doing to prevent fake listing scams — Airbnb Newsroom, 21 Apr 2017
- Architecting a Machine Learning System for Risk — The Airbnb Tech Blog (Hakim and Keys), 16 Jun 2014
- precision_recall_curve, scikit-learn documentation — scikit-learn, 26 Oct 2026
- Classification: confusion matrix and class imbalance, scikit-learn MOOC — Inria, 26 Oct 2026
- Metrics and scoring, scikit-learn User Guide — scikit-learn, 26 Oct 2026