Instagram Search Ads: a machine learning ad product that reaches people at high intent moments in Instagram Search, turning a high traffic, low revenue part of Instagram into a new monetization surface.
Overview
Meta was facing a companywide decline in ad revenue, and soon reported the first year-over-year revenue drop in its history. Two shifts were driving it at once. Apple's iOS 14 update cut off access to the cross app data that ad targeting depended on, a change Meta estimated would cost it about $10 billion in revenue in a single year. And as Reels took off, people's attention moved away from Feed, where ads were mature and monetized well, to a newer surface that carried a lighter ad load and lower intent. Meanwhile, the usual playbook of optimizing ad targeting in Feed was hitting diminishing returns.
Feed ads were mostly shown to people passively scrolling, with no strong purchase intent. But a meaningful share of Instagram's users were actively telling us what they wanted, searching for brands, products, and interests, and that surface was completely unmonetized. I saw the opportunity: instead of pushing more ads into Feed, where satisfaction was already strained, introduce ads where intent was explicit and high signal. I self-originated Instagram Search Ads, the first ads inside one of Instagram's utility features, using machine learning on keywords, engagement history, and user interests to show people sponsored results that matched what they were looking for. The bigger goal was to prove that monetization opportunities exist inside utility features, and that Meta should take advantage of every high intent signal, wherever it shows up.
AI Hypothesis
The bet the product was built to test:
If ads in Instagram Search match what someone is actively searching for, they will read as relevant results rather than interruptions, which lets Meta grow ad revenue without hurting search engagement, retention, or user satisfaction, and proves that utility features can be monetized: Meta should act on high intent signals wherever they appear, not only in Feed.
Customer Research
Before asking for approval, I needed evidence on two questions: would people tolerate more ads where they already saw them, and would they accept ads in a place they'd never seen them before? We answered both mostly with surveys, which reached far more people and gave us numbers leadership could act on, backed by a smaller set of interviews.
Feed ad density survey
How satisfaction (CSAT) changed as more ads were added to Feed
Search ads survey
How people responded to ads matched to their searches
Respondents
Instagram users
What kept coming up
More ads in Feed felt like interruptions. Satisfaction dropped significantly as ad density rose, which ruled out the "more ads, same surface" approach.
Relevant ads read as results. When an ad closely matched what someone was searching for, people treated it as a useful result rather than an interruption.
Search is where intent shows up. People came to Search looking for specific brands, products, and interests, a much stronger signal than passive scrolling.
Trust depends on restraint. Too many ads in a single search session, or ads that missed the query, would erode the trust that made Search useful.
Persona & Customer Journey
Search Ads served two groups with different needs:
Instagram users who search with intent, looking for a specific brand, product, or interest. They decide whether an ad in Search feels like a useful result or an interruption.
Advertisers, who wanted to reach people at the moment they were looking, after iOS 14 made it harder to find them anywhere else.
We built the MVP around the user who searches with intent. The whole bet depended on them: if a sponsored result didn't feel relevant, search engagement, retention, and satisfaction would drop, and the experiment would stop no matter how well it monetized. If it did feel relevant, advertisers would follow, because those users convert.
Primary persona · composite of surveys and interviews
Maya, the intentional searcher
Uses Instagram
Daily
Uses Search for
Brands, products, ideas
Shops on Instagram
Sometimes
Ad tolerance
Low, unless it's useful
A day in her life
Maya scrolls Feed and Reels to pass the time, but opens Search with a purpose: a sneaker brand a friend mentioned, a recipe idea, a gift for a birthday next week. She wants to find the right account or product fast, and she skips past anything that doesn't match what she typed.
Goals
Find the brand, product, or idea she's looking for quickly
Discover options she didn't know about
Trust that results match what she asked for
Act on what she finds: follow, visit, or buy
Frustrations
Ads that interrupt instead of help
Feeling like more of her feed is ads every month
Results that miss what she actually searched for
Having to leave Instagram to finish what she started
Customer journey
How Maya moves from a search to an action, and where a sponsored result has to earn its place.
Open Search
Type a query
Scan results
Explore
Act
What she does
Opens Search with something specific in mind
Types a brand, product, or interest
Looks over the results, including a sponsored result
Taps into a profile, post, or product
Follows, visits the site, or buys
How she feels
Focused
Hopeful
Wary of ads
Interested
Satisfied
Pain points
Expects a fast, clean search experience
Vague queries return a mix of results
An ad that misses the query feels like an interruption
Irrelevant content breaks the flow
Leaving the app to finish adds friction
How the product helps
Ad load per session agreed with the search team to protect the experience
Targeting reads the query alongside engagement history and interests
The sponsored result matches the search, so it reads like a relevant result
Sponsored results lead to the advertiser's content, just like organic ones
A high intent moment turns into a conversion for the advertiser
AI Models Overview
Search Ads plugged into Meta's existing ads system rather than starting from scratch. Three models worked in sequence: one to find ads that matched the search, one to predict which of those a person would act on, and one to keep ads out of sensitive categories.
Query to ad matching
Two-tower embedding model
Purpose
Find the small set of ads that match what someone is searching for, out of millions of active ads, fast enough not to slow down search.
Model characteristics
One "tower" turns the search query, the person's engagement history, and their interests into a numeric profile; the other does the same for each ad. Ads whose profiles sit closest to the search are retrieved as candidates. Because ad profiles can be computed ahead of time, retrieval stays fast at Instagram's scale, a pattern Meta uses widely in its recommendation systems.
Click and conversion prediction
Deep learning ranking model
Purpose
Predict how likely each candidate ad is to be clicked and to lead to a conversion, so only the most relevant ad earns a place in the results.
Model characteristics
A deep learning recommendation model, the approach behind Meta's open source DLRM and built in PyTorch, that combines the query, user signals, and ad features to predict click-through and conversion. Those predictions feed Meta's ad auction alongside the advertiser's bid and an ad quality score, and how many ads a search session could carry was set jointly with the search team to protect the experience.
Sensitive category filter
Classification model
Purpose
Keep ads and targeting clear of sensitive categories, such as housing, financial services, and health, to stay within Meta's policies.
Model characteristics
A machine learning classifier trained on the rules and keyword lists set by Policy, working with Legal, Privacy, and Integrity. It labels search queries and ads by topic so sensitive ones never enter matching or ranking, and because it learns from examples rather than matching keywords alone, it catches phrasings a fixed list would miss. It deliberately trades some targeting precision for compliance: the most effective model would have leaned harder on query level signals, but scope stayed constrained by design.
AI Proof of Concept
The A/B test was the proof of concept, and it had to answer one question: could ads in Search earn revenue without hurting the search experience? We showed Search Ads to 5% of Instagram users and compared them with a control group that saw none. Before it started, we agreed with the search team on business metrics and user experience guardrails: search engagement, retention, and search quality. If any guardrail broke its threshold, the test would stop, however well it was monetizing. Because advertiser revenue is noisy and slow to settle, I held the test open longer than the standard duration, which also gave the search team time to confirm that search quality held. Only when business and user experience metrics proved healthy together did we scale to a full launch.
AI Input & AI Output
AI input
Search queries: the keywords someone types into Instagram Search, the clearest signal of what they want right now.
Engagement history: the accounts, posts, and content a person has interacted with on Instagram. After iOS 14 limited cross app data, on platform signals like these carried more of the targeting.
User interests: topics and categories inferred from a person's activity on Instagram.
Advertiser campaigns: each ad's creative, objective, targeting settings, and bid.
Policy rules and keyword lists: the sensitive categories set by Policy, such as housing, financial services, and health, used to train the classifier.
AI output
Sponsored results: an ad placed alongside organic search results, matched to the query so it reads as a relevant result rather than an interruption.
Click and conversion predictions: the likelihood each candidate ad is clicked and leads to a conversion, which feeds Meta's ad auction.
Sensitive category decisions: queries and ads flagged by the classifier and kept out of matching and ranking entirely.
Performance and guardrail reporting: click-through, conversion, and revenue for advertisers and the business, tracked alongside search engagement, retention, and search quality.
Data Pipeline
Data moves through four stages, from a search typed into Instagram to a sponsored result and the metrics that decided whether it could scale.
Collect
Search queries are captured as people type them into Instagram Search.
Engagement history and inferred interests come from activity on Instagram.
Advertiser campaigns supply each ad's creative, objective, targeting, and bid.
Policy's rules and keyword lists define the sensitive categories.
Prepare
Queries are cleaned and normalized so spelling and phrasing variations map to the same intent.
The classifier screens queries and ads, and anything in a sensitive category is removed before matching.
Ads are turned into embeddings ahead of time, so they can be matched against a search instantly.
Past clicks and conversions are assembled into training data for the ranking model.
Match & rank
The two-tower model retrieves the ads closest to the search, the person's engagement history, and their interests.
The ranking model predicts click-through and conversion for each candidate.
Meta's ad auction weighs those predictions with the bid and ad quality, within the ad load agreed with the search team.
Deliver & measure
The winning ad appears as a sponsored result alongside organic results.
Clicks and conversions are logged and fed back into ranking model training.
Business metrics and user experience guardrails are tracked together, and shared with the search team as the data comes in.
Tech Stack
Machine learning: PyTorch, Meta's own framework, for the two-tower matching model, the click and conversion ranking model, and the sensitive category classifier.
Retrieval: FAISS, Meta's open source library for similarity search, to find the ads whose embeddings sit closest to a search in milliseconds.
Ads system: Meta's existing ads ranking and auction, which Search Ads plugged into rather than rebuilding.
Data: Hive and Presto, both created at Meta, with SQL and Python to prepare training data and analyze results.
System Architecture
How a search becomes a sponsored result: sources on the left, safety screening and preparation next, the models and auction inside Meta's ads system, and the results and guardrails on the right, with a feedback loop that keeps the ranking model learning.
Ad serving path
Policy and safety screening
Feedback loop
Product Opportunities & Prioritization
Revenue had to come from somewhere, and there were four ways to go after it. The question was which one to bet on first, with a surface that had never carried ads before.
Search Ads
Place sponsored results in Search, matched to what people are actively looking for, where intent is explicit and the surface was completely unmonetized.
Chosen as the core hypothesis.
More ads in Feed
Raise ad density in Feed, the traditional volume play. A survey showed a significant drop in satisfaction (CSAT) as density rose, so it was rejected outright.
Discovery Ads
Put ads into Discovery, the other intent rich surface, first or alongside Search. Discovery leaned on the signals iOS 14 had just blocked, so it was the less certain bet, and splitting the team across both would have diluted focus and slowed the proof.
Profile Visit Ads
A new ad objective that drives people to a business's profile. It had an open measurement problem, and leadership challenged its baseline metrics, so it waited.
Why Search came first
The core insight was relevance over volume. More ads in Feed had a measured cost to user satisfaction, and Discovery depended on data that was no longer reliable. Between the two intent rich surfaces, Search won the priority over Discovery: it had the cleanest intent signal and the fastest, most defensible path to proof: if an ad matched the query, it worked more like a relevant result than an interruption. A survey confirmed that people responded positively to ads closely matched to their search intent, which gave us the evidence to get approval. Sequencing mattered too: proving Search first built a credible case for monetizing utility features, and I launched Profile Visit Ads about a year later once its measurement was solved.
Tradeoffs
Speed vs. confidence
Advertiser revenue metrics are noisy and slow to mature, so I chose a stable read over a faster decision before scaling.
Ad density vs. trust
Every extra ad per search session meant more revenue and lower satisfaction. How many insertions a session could carry was an ongoing negotiation with the search team.
Precision vs. compliance
Leaning harder on query level signals would have made targeting sharper, but we deliberately kept the model clear of sensitive categories (housing, financial, and health) to stay within Meta's policies.
Product Roadmap
I self-originated Instagram Search Ads and owned its product strategy and roadmap. The roadmap followed the prioritization: prove ads could work in Search first, with guardrails the search team trusted, then scale. Every phase had to clear both business metrics and the guardrails the search team cared about before the next one began.
Phase 1 · MVPBuild
Phase 2Test
LaunchScale
Post launchSustain
AI & data
Two-tower matching on query, history, and interests
Click and conversion ranking
Sensitive category classifier
Business metrics and guardrails tracked together
Models serving all of Search
Clicks and conversions retrain ranking
Product
Sponsored results in Search
Ad load agreed with the search team
Guardrails and stop rule
Search Ads for 5% of users
Full launch to advertisers
Ongoing guardrail monitoring
Research & GTM
Feed density and Search ads surveys
Business case for approval
Guardrail data shared with the search team
Launch support with Product Marketing
Governance playbook documented
Phase 1 · MVPBuild
Evidence
Feed ad density survey
Search ads survey with Instagram users
Business case for leadership approval
Targeting models
Two-tower matching on query, history, and interests
Click and conversion ranking
Plug into Meta's ad auction
Safety
Sensitive category classifier trained on Policy's rules
Review with Legal, Privacy, and Integrity
Guardrails
Agree metrics and guardrails with the search team
Set the stop rule
Agree ad load per session
Phase 2Test
A/B test
Launch to 5% of users
Run until the read is stable
Track business metrics and guardrails together
Alignment with Search
Share guardrail data with the search team as it comes in
Confirm search ranking metrics aren't degrading
LaunchScale
Full launch
Scale once business and guardrail metrics are healthy together
Open Search Ads to advertisers
Launch support with Product Marketing
Post launchSustain
Learning loop
Clicks and conversions retrain the ranking model
Ongoing guardrail monitoring
Governance framework
Document the four step playbook for utility features
User Stories & Acceptance Criteria
The stories center on the Instagram user who searches with intent, the primary persona, alongside the advertisers who buy the ads and the teams whose trust the launch depended on. Each acceptance criterion is something the team could test, and many come straight from the guardrails agreed with the search team.
Area
User story
Acceptance criteria
Relevant resultsMVP
As an Instagram user, I want any ad in my search results to match what I'm looking for so that it helps me find something instead of getting in the way.
Ads are matched to the search query, engagement history, and interests
Only ads with a strong predicted click and conversion rate are shown
Sponsored results are clearly labeled and sit alongside organic results
Ad loadMVP
As an Instagram user, I want Search to stay mostly about my results so that it doesn't start to feel like another feed full of ads.
Ad load per search session is set jointly with the search team
The top organic result stays visible above the fold
Ad hide and report rates are tracked against the Feed baseline
Sensitive categoriesMVP
As a Policy partner, I want ads and targeting kept clear of housing, financial services, and health so that Search Ads stays within Meta's policies.
A classifier trained on Policy's rules and keyword lists screens every query and ad
Anything in a sensitive category never enters matching or ranking
The policy violating impression rate is tracked as a guardrail
High intent reachMVP
As an advertiser, I want to reach people while they're searching for brands and products like mine so that my ads land at the moment they're ready to act.
Campaigns can serve in Instagram Search through Meta's existing ad auction
Targeting uses the search query alongside engagement history and interests
Search Ads doesn't cannibalize the advertiser's Feed spend
Protect search qualityPhase 2
As a Search PM, I want to see that ads aren't degrading search quality so that I can trust the test and support scaling it.
Guardrail data is shared with the search team as it comes in
Search engagement, retention, and search quality are tracked against the control group
Trends are stable before any scaling decision
Stop rulePhase 2
As a Search PM, I want the test to stop automatically if a guardrail breaks so that revenue can never be the only reason to keep ads in Search.
Guardrail thresholds are agreed before the test starts
Any breached threshold stops the test, however well it's monetizing
Scaling requires business and guardrail metrics to be healthy together
Performance reportingLaunch
As an advertiser, I want to see how my Search Ads perform so that I can decide whether to put more budget into them.
Click-through and conversion are reported for sponsored results
Results can be compared with the same campaign's Feed ads
Advertiser adoption is tracked after launch
Learning loopPost launch
As an advertiser, I want Search Ads to get better at finding people who convert so that my results improve the longer I run them.
Clicks and conversions are logged as training data
The ranking model is retrained on new data
Retrained models must keep guardrail metrics healthy before they go live
Risks & Mitigation
Putting ads into Search for the first time meant risking two things at once: the experience people relied on, and the trust of the team that owned it. Each risk below was rated on how much damage it would do and how likely it was, and most mitigations were guardrails agreed before the test began.
Risk
What could go wrong
Impact
Likelihood
Mitigation
Degraded search experience
Ads make Search feel cluttered, and engagement, retention, or satisfaction drop on a surface people rely on.
High
Medium
Guardrails agreed with the search team before launch, a stop rule if any threshold broke, a 5% test before scaling, and ad load per session set jointly with Search
Distorted search metrics
Ad insertion skews the metrics used to evaluate and improve search quality.
High
Medium
Guardrail data shared with the search team as it came in, and a stable read before any decision to scale
Sensitive category violations
Ads or targeting touch housing, financial services, or health, creating legal and policy exposure.
High
Medium
A classifier trained on Policy's rules and keyword lists screening every query and ad, review with Legal, Privacy, and Integrity, and policy violating impressions tracked as a guardrail
Irrelevant ads
A sponsored result misses the query and reads as an interruption, eroding trust in Search.
Medium
Medium
Matching on the query, engagement history, and interests, ranking by predicted click and conversion, and ad hide and report rates tracked against the Feed baseline
Feed cannibalization
Advertisers shift budget from Feed to Search, so revenue moves around instead of growing.
Medium
Medium
Feed spend cannibalization tracked as a guardrail, and incremental revenue and incremental conversions used as the success metrics
Noisy revenue read
Advertiser revenue settles slowly, so an early read could make a weak result look strong and lead to scaling too soon.
Medium
High
A test run longer than standard, with scaling only when business and guardrail metrics were healthy together
Search latency
Matching and ranking ads adds time to every search and slows the experience down.
Medium
Low
Ad embeddings precomputed and searched with FAISS, and p99 search latency tracked as a guardrail
Business Model / Lean Canvas
Search Ads was a new revenue surface inside an existing ads business, so it sold through Meta's existing advertiser channels rather than a new go-to-market. The canvas below sums up the business on one page.
Problem
Ad revenue falling after iOS 14 cut off cross app targeting data
Attention shifting from Feed to Reels, a lower intent, lighter ad load surface
Search, where intent is explicit, completely unmonetized
Existing alternatives
Raising ad density in Feed, which hurt user satisfaction, or advertisers buying search ads on other platforms
Solution
Sponsored results matched to the search query
Sensitive category classifier
Guardrails and a stop rule agreed with Search
Key metrics
Incremental conversions per 1,000 search sessions
Incremental revenue
CTR and conversion rate vs. Feed
Advertiser adoption
Unique value proposition
Reach people on Instagram at the moment they're searching for brands and products like yours, with ads that read like relevant results instead of interruptions.
Channels
Meta Ads Manager, as a new placement for existing campaigns
Meta's advertiser sales teams
Agency partners
Launch support from Product Marketing
Customer segments
Advertisers already running campaigns on Instagram
Early adopters
Brands and retailers people search for by name on Instagram
Cost structure
ML training and serving infrastructure
Ads engineering, data science, and design
Policy, Legal, Privacy, and Integrity review
Product marketing for launch
Revenue streams
Auction priced ads in a new Search placement, sold through the same bidding as Feed ads
$7M a year in new ad revenue
AI Product Scalability
Instagram Search handles an enormous volume of queries, and every one is a chance to show an ad. The product was built so that more searches made it more accurate and more valuable, without slowing search down or loosening its safeguards.
Built on Meta's ads system
Search Ads plugged into Meta's existing ads ranking and auction instead of rebuilding them. Advertisers didn't need new campaigns, just a new placement, so adoption could scale with Meta's existing advertiser base from day one.
A model that improves with every search
Every click and conversion becomes training data for the ranking model, so the more people search, the better it gets at showing the ad someone will act on. Because intent comes from the query itself, the model leans on signals Instagram owns rather than the cross app data iOS 14 took away.
Fast at Instagram's scale
Ad embeddings are computed ahead of time and searched with FAISS, so matching a query against millions of ads takes milliseconds. Search latency was tracked as a guardrail, so growth in ads or queries couldn't quietly slow the experience down.
A playbook that scales to other surfaces
The governance framework, business metrics plus guardrails agreed with the surface owning team, limited exposure first, and scaling only when both are healthy, became a reusable playbook for monetizing other utility features at Meta.
MVP
The MVP did one job: put a single, relevant sponsored result into Instagram Search, and prove it could earn revenue without hurting the search experience. The storyboard follows Maya from a search to a purchase, and what the system does at each step.
Sponsored results matched to the search query, engagement history, and interests
Sensitive category filter screening every query and ad before matching
Ranking and auction through Meta's existing ads system, within the ad load agreed with Search
Guardrails and a stop rule tracked alongside revenue from the first day of the test
Results
I led the development and launch of Instagram Search Ads, a machine learning ad product that matches ads to search intent using keywords, engagement history, and user interests. I directed a cross functional team of AI/ML engineers and data scientists through an A/B test with 5% of users, and scaled to a full launch once both the business metrics and the user experience guardrails proved healthy:
$7M / yrnew ad revenue
3.2%click-through rate
9%conversion rate
+25%CTR vs. baseline Feed ads
Guardrail metrics such as search engagement and retention stayed stable, proving that monetization and search quality could coexist. The project also produced a reusable governance framework for monetizing utility features at Meta, which let Discovery Ads launch later with far less friction.