How Spotify turned its catalog into thousands of localized ads
New releases arrive every week, and every market loves different artists. Spotify stopped making its acquisition ads by hand. Templates turn the catalog into ads, and a model retrained every day picks which ones each country sees. The Indonesian ads in the original post show how local it gets.

Spotify pays to win new listeners in dozens of countries, with ads on Facebook, Instagram, Google and TikTok. One kind of ad works especially well for it: the content ad, which shows an artist or a playlist people already love and invites them to listen for free. In November 2023 four Spotify engineers described how they automated those ads, from making the images to deciding which ones run where. Look closely at their example creatives and you will find a playlist called "Santai Sejenak" with the line "Dengarkan gratis di Spotify". Indonesia was one of the markets this machine was built for.
The problem: too many ads to make by hand
Spotify reports that a manual test in 2019 showed content ads brought in users who would not have signed up otherwise. Scaling that up is where it got hard. Each ad placement wants its own set of sizes, each campaign needs hundreds of assets per language or region, and the catalog holds hundreds of thousands of artists. Multiply those and no design team keeps up.
The off-the-shelf tools fell short in two places: they could not produce assets at that scale, and they could not reliably estimate the cost per registration in each market. There was a second, quieter constraint. The ad platforms' own optimizers work best with, in the authors' words, "a human-scale number of four to eight ads to optimize across". So the job was not only to make thousands of ads. It was to choose, every day and for every campaign, the few that deserve a slot.
How they built it
The system runs as a loop: ingest new content, rank it, deploy the ads, learn from the results, and repeat. The diagram at the top of this article shows that end vision.
Templates designers already know. The first version was a Java service that layered artist images and text onto a static picture, with a color picker to match the artwork. It could not animate, struggled with right-to-left languages such as Arabic, and boxed the designers in. The second version moved to After Effects templates, rendered on headless machines through nexrender, an open-source tool for batch jobs with many outputs. One template now produced every size a placement needed, and rendering became an asynchronous job instead of a request that waits. Spotify considered Lottie and Blender and passed on both in 2023: Lottie could not yet handle its templating needs, and its creative team did not know Blender.

A daily ranking for every country. Each day the system pulls performance from the ad platforms' APIs, attribution from a mobile measurement partner, and popularity from Spotify's own catalog. The first ranking was a heuristic. Popularity picked eight artists per campaign, and each artist was then scored by results: "We used the share of registrations coming from each artist as a quality score for that artist." A knowledge graph of similar artists estimated a score for artists that had not run yet, and a diversity term kept the slate from filling up with one kind of music.
Then a model. The second version replaced the heuristic with a gradient-boosted model (XGBoost) retrained every day on Spotify's Kubeflow platform. Its features include the market, the ad's dimensions, the phone's operating system, the template and its variation, and the artist's metadata and popularity. Its targets are relative: an artist's share of registrations and the cost per registration compared with the campaign's average. Raw costs depend on how crowded each market is, so relative measures let one model serve many countries.

What it delivered
Spotify compared the model against the heuristic in two regions for three weeks. It reports that the cost per registration fell by 4 percent in one region and 14 percent in the other, and that click-through rates rose by 11 to 12 percent. After the test the model went to every active region, and Spotify credits it with 9 percent more monthly active users than the heuristic "during the lifetime of its operation". The post gives no spend, no absolute costs and no names for the test regions, so treat these as Spotify's own figures.
The authors are just as open about what hurt. Rendering at scale needed its own fleet of workers. When an ad platform's API went down, training stalled, so the system falls back to the previous day's rankings. Apple's App Tracking Transparency rules in iOS 14.5 forced the training data into aggregates, which an offline check showed did no harm. Switching measurement partners from Adjust to Branch meant re-pointing every pipeline. Keeping the slate diverse without hurting results was still unsolved. And "fully automated" has limits: people still design the templates the machine fills.
What has changed since
Spotify kept automating its own ad buying. In an October 2025 case study by Smartly, the ad-automation vendor that already appears in the 2023 architecture diagram, Spotify's performance marketing team describes automated campaign creation, localization, budget allocation and creative rotation across 30 campaigns on four platforms. The vendor reports 3,000 creative variations, 35,000 incremental conversions and 70 hours saved a week, without a baseline or a time period.
Spotify now sells the idea to its own advertisers. In April 2025 it added generative AI tools to Ads Manager that write audio ad scripts and voice them. At its May 2026 investor day Spotify reported "more than 20,000 ads generated by over 7,000 advertisers with this tech". That is Spotify as an ad seller, a different system from the acquisition machine above, but it is the same bet: creative should be produced at the speed the media is bought.
The platforms are absorbing the loop. Google's Asset Studio now generates ads from "your marketing brief, brand guidelines, website, and goals" and tests them with one-click A/B tests. Meta is pushing the same way with its Advantage+ tools. What the platforms cannot supply is what made Spotify's system work: its own catalog, its own brand templates and its own measurement.
Why it matters for your business
Most Indonesian brands buy their growth on Meta, TikTok and Google, and the platforms now automate much of the targeting. That leaves creative as the lever you still control, and the bottleneck is volume. A property developer has units, a retailer has products, a restaurant group has menus, a dealer has models and trims. Each deserves its own ad, in Bahasa Indonesia and sometimes a regional language, in every size, refreshed for Ramadan, Lebaran and payday.
Spotify's design answers the questions that come up the moment you try. Who makes the ads? Designers make a few templates, and the machine fills them, so the brand stays intact. Which ads run? A ranking that starts as a simple rule and earns its way to a model. How do you compare Jakarta with Medan? With relative measures instead of raw costs. What if a platform's API fails? Yesterday's ranking keeps the ads running.
How we would build it today
- Templates first. A designer builds three to five master templates. After Effects through nexrender, still maintained and MIT-licensed, works if your team already lives there. Templates written in code and rendered in a headless browser work just as well and are easier to version.
- A clean catalog feed. Product, listing or menu data with images, prices and approved Indonesian copy. Most of the work is here, not in the model.
- Rank simply, then learn. Start with the share of conversions each item brings in each market. Move to a gradient-boosted model once you have a few months of data, and keep the targets relative.
- Four to eight ads per campaign. Push them through the platforms' APIs, pull results daily, and fall back to yesterday's ranking when an API is down.
- Use generative tools inside the frame. Let them propose copy and backgrounds, keep a person approving what goes live, and keep your templates as the frame around everything.
The clever part of Spotify's system is not the model. It is the loop: content in, ads out, results back, every day, with people deciding what the templates look like and the machine deciding which ones run.