Meta Platforms, Inc. · Product Manager

ML Search Ad Targeting

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.

A hand holding a smartphone showing a grid of photos in a social media app

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.
A product team discussing research findings around a table, with notes on the board behind them

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 SearchType a queryScan resultsExploreAct
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.

An analyst reviewing charts and test results at a desk

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
An engineer working on code across a laptop and a large monitor

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.

System architecture Policy rules for sensitive categories train an ML classifier that screens every search query and ad. Search queries are normalized, advertiser campaigns become precomputed ad embeddings in a FAISS index, and engagement history and interests become user features, all inside Meta's ads infrastructure built on PyTorch. A two-tower retrieval model matches the query, history and interests to candidate ads; a deep learning ranking model predicts click-through and conversion; and Meta's ad auction weighs those predictions with the bid and ad quality, within the ad load agreed with the search team. The winning ad appears as a sponsored result alongside organic results. Advertiser clicks and conversions are tracked with guardrail metrics on engagement, retention and search quality, shared with the search team, with a stop rule if any guardrail breaks. Clicks and conversions are logged as training data that retrains the ranking model. META ADS INFRASTRUCTURE · PYTORCHDATA SOURCESSAFETY + PREPAI LAYEROUTPUTPolicy rulesSensitive category listsSearch queriesTyped into Instagram SearchAdvertiser campaignsCreative, targeting, bidsEngagement + interestsOn platform activitySensitive category filterML classifier · screens allNormalize queriesVariations map to one intentAd embeddingsPrecomputed, FAISS indexUser featuresHistory and interestsTwo-tower retrievalMatches query, history, andinterests to candidate adsClick + conversion rankingDeep learning modelpredicts CTR and CVRMeta ad auctionBid + quality, within the adload agreed with SearchSponsored resultAlongside organic resultsAdvertiser resultsClicks and conversionsGuardrail metricsEngagement, retention, searchquality · shared with SearchStop ruleHalt if a guardrail breaksClicks and conversions logged as training dataRetrains the ranking model

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.

AreaUser storyAcceptance criteria
Relevant resultsMVPAs 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 loadMVPAs 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 categoriesMVPAs 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 reachMVPAs 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 2As 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 2As 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 reportingLaunchAs 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 launchAs 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.

RiskWhat could go wrongImpactLikelihoodMitigation
Degraded search experienceAds make Search feel cluttered, and engagement, retention, or satisfaction drop on a surface people rely on.HighMediumGuardrails 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 metricsAd insertion skews the metrics used to evaluate and improve search quality.HighMediumGuardrail data shared with the search team as it came in, and a stable read before any decision to scale
Sensitive category violationsAds or targeting touch housing, financial services, or health, creating legal and policy exposure.HighMediumA 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 adsA sponsored result misses the query and reads as an interruption, eroding trust in Search.MediumMediumMatching 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 cannibalizationAdvertisers shift budget from Feed to Search, so revenue moves around instead of growing.MediumMediumFeed spend cannibalization tracked as a guardrail, and incremental revenue and incremental conversions used as the success metrics
Noisy revenue readAdvertiser revenue settles slowly, so an early read could make a weak result look strong and lead to scaling too soon.MediumHighA test run longer than standard, with scaling only when business and guardrail metrics were healthy together
Search latencyMatching and ranking ads adds time to every search and slows the experience down.MediumLowAd 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
Search Ads MVP storyboard A five step storyboard. 1: Maya opens Instagram Search looking for running shoes. 2: She types "running shoes"; the query is screened by the sensitive category filter and matched to candidate ads. 3: Ranking and the auction place one sponsored post from Nike in the search results grid alongside organic posts. 4: She taps through to the brand's shoes, just as she would an organic result. 5: She buys; the conversion retrains the ranking model and is tracked against guardrails. Search01Open SearchMaya opens Search withsomething specific in mind:new running shoes.running shoesrunning shoesrunning shoes womenrunning shoes trailrunning clubs02Type a query"running shoes" is screened bythe sensitive category filter,then matched to candidate ads.running shoesSponsored03Sponsored resultRanking and the auction placeone relevant ad in the searchresults grid, alongsideorganic posts.running shoesNikeSponsoredShop now04ExploreShe taps through to thebrand's shoes, just like shewould an organic result.running shoesOrder placedRunning shoes05ActShe buys. The conversionretrains the ranking model andis tracked against guardrails.Storyboard illustration · not an actual ad

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.