I've worked both sides of the ad business.
广告生意的两头我都做过。
Xiaomi Games buys ads to acquire players. Xiaomi Browser sells ads in its feed. On the buying side I led the 0-to-1 launch of an ML-driven ad delivery platform with a 60-person team; on the selling side I owned ad recommendation strategy. This page follows the platform; the selling side is the appendix.
小米游戏花钱买广告拉玩家;小米浏览器在信息流里卖广告。买方这头,我带 60 人团队从 0 到 1 上线了 ML 驱动的广告投放平台;卖方这头,我负责广告推荐策略。本页主线是平台,卖方放在附录。
On both sides, the work comes down to one question: is this the right ad for this person?
两边的工作归根结底是同一个问题:这条广告对这个人合不合适?
A cheap install isn't a valuable player.便宜的安装,不等于有价值的玩家。
Operators picked audiences by age, gender and interests and bid the industry average. The signal that mattered — who actually pays — stayed inside Xiaomi, unused at the moment of bidding: in China, advertisers don't hand conversion data to the ad platforms.
运营按年龄、性别、兴趣圈人,按行业均价出价。最关键的信号——谁会真的付费——留在小米内部,出价那一刻没用上:在中国,广告主不把转化数据交给广告平台。
The question to answer, ad slot by ad slot: is this person worth an ad, and how much?
要逐个广告位回答的问题:这个人值不值得投,值多少?
The operator who spends, the partner who shares.花预算的运营,分收入的伙伴。
LinLin
Ad operations lead, Xiaomi Games小米游戏投放运营负责人- Who
- Runs the acquisition campaigns on ByteDance and Tencent; owns the daily budget.在字节、腾讯上跑获客投放;管每天的预算。
- Pain
- Picks audiences by intuition and learns a cohort's value a month after paying for it.凭经验圈人,付完钱一个月后才知道这批人值不值。
- Wants
- To bid more for players who will pay and skip those who won't, without a data team on call.对会付费的玩家出高价、跳过不会的,而且不用随时找数据团队。
"I can see installs today. I see payers next month.""装机今天就能看到,付费要等下个月。"
ZhouZhou
Partner manager, game studio游戏厂商合作经理- Who
- Co-publishes titles on Xiaomi Games and shares what players spend.在小米游戏联运游戏,分成玩家的消费。
- Pain
- Install counts look good; the revenue share doesn't follow.装机数好看,分成却没跟上。
- Wants
- New players who pay, and a number that shows the campaign pays for itself before it scales.会付费的新玩家,以及一个能证明"放量前已回本"的数字。
"Don't send me installs. Send me players.""别给我装机数,给我玩家。"
One campaign, before and after the platform.一次投放,平台前后。
Lin's week, from picking an audience to reading the result.
Lin 的一周:从圈人到看结果。
Machine learning went last, not first.机器学习放最后,而不是最先。
A model can only learn from conversions we didn't yet have. So: manual campaigns to get data flowing, tiered bids by player value, then ML bids per person.
模型只能从转化数据里学,而那时数据还没有。所以先人工投放让数据流起来,再按玩家价值分档出价,最后逐人 ML 出价。
| Phase 1 · Manual targeting第一阶段 · 人工定向 | Phase 2 · Tiered bids by value第二阶段 · 按价值分档出价 | Phase 3 · ML real-time bids第三阶段 · ML 实时出价 | |
|---|---|---|---|
| Targeting & bidding定向与出价 | Hand-picked audiences; industry-average bids.人工圈人;行业均价。 | Paying players as seeds → lookalike groups by value; one bid tier per group.付费玩家做种子 → 按价值分组的相似人群;每组一档出价。 | Per-person 30-day value prediction; through RTA, skip below the threshold, bid up to value ÷ target ROI above it.逐人预测 30 天价值;通过 RTA,低于阈值跳过,高于阈值按价值 ÷ 目标 ROI 封顶出价。 |
| Data & model数据与模型 | Collect installs and payments; attribution by device ID.积累安装、付费数据;按设备 ID 归因。 | Payment data connected to the delivery platform.付费数据接入投放平台。 | Value model trained on real payments; offline evaluation + live A/B before release.用真实付费训练价值模型;先离线评估,再线上 A/B。 |
| Creative & ops素材与运营 | Hand-assembled creatives: ~1,000 a week, 5 people.人工拼素材:每周约 1,000 条,5 人。 | ML similarity-matching assembly with human review: 3,000 a week, 3 people, CTR +10%.ML 相似度匹配拼装 + 人工审核:每周 3,000 条,3 人,CTR +10%。 | |
| Result结果 | 30-day ROI 10%30 日 ROI 10% | Bids start to follow player value.出价开始跟着玩家价值走。 | 30-day ROI 120% · $45M+ a year30 日 ROI 120% · 每年 $45M+ |
Three teams, three promises.三个团队,三个承诺。
- As Lin, the ad operations lead, I want to bid more for players likely to pay and skip those who won't, so that 30-day ROI stays above target as spend scales.作为投放运营负责人 Lin,我想对可能付费的玩家出高价、跳过不会付费的,这样放量时 30 日 ROI 仍高于目标线。
- As the algorithm team, I want a clear prediction target and a clear release bar, so that we know when a model can go live.作为算法团队,我想要清楚的预测目标和上线标准,这样知道模型什么时候能上。
- As Zhou, a studio partner, I want to see new players' 30-day spending by title, so that I agree to scale the budget on evidence.作为游戏厂商合作方 Zhou,我想按游戏看到新玩家前 30 天的付费,这样能基于证据同意放量。
What I wrote for the teams.我写给各团队的验收线。
| Story故事 | Criteria标准 |
|---|---|
| S1 · Bidding | PerformanceThe RTA response returns within tens of milliseconds; on timeout, fall back to the default bid. FunctionalityBelow the value threshold, no bid; above it, bid ≤ predicted 30-day value ÷ target ROI. ReliabilityFirst-party data never leaves Xiaomi; only the decision does.性能:RTA 几十毫秒内回复;超时回退默认出价。功能:低于价值阈值不出价;高于阈值,出价 ≤ 预测 30 天价值 ÷ 目标 ROI。可靠:第一方数据不出小米,只有决策出去。 |
| S2 · Model release | FunctionalityThe target is each player's spending in the first 30 days. PerformanceOffline evaluation first, then a live A/B with half the budget on new bids and half on old; promote only if 30-day ROI improves.功能:预测目标是每个玩家前 30 天的付费。性能:先离线评估,再线上 A/B——一半预算新出价、一半旧出价,30 日 ROI 更好才替换。 |
| S3 · Partner view | FunctionalityDashboard shows 30-day ROI by install cohort and title, updated daily; 7-day ROI as the in-flight gate. GuardrailBudget scales only while ROI stays at or above target.功能:看板按装机批次和游戏显示 30 日 ROI,每日更新;7 日 ROI 做过程关卡。护栏:ROI 不低于目标线才放量。 |
What could have gone wrong.哪里可能出问题。
| Risk风险 | Type类型 | Mitigation应对 |
|---|---|---|
| The model has nothing to learn from on day one.第一天模型无数据可学。 | Schedule | Three-phase sequencing: manual campaigns first, so installs and payments start flowing.三阶段排序:先人工投放,让安装和付费数据流起来。 |
| Real-time integration: latency and data exposure.实时接入:延迟与数据外流。 | Technical | Only a skip-or-bid decision leaves Xiaomi, within tens of milliseconds; timeouts fall back to the default bid.出小米的只有"跳过或出价"的决策,几十毫秒内返回;超时回退默认出价。 |
| Optimizing for installs instead of payers.只优化安装、不优化付费。 | Metric | 30-day ROI as the north star, 7-day ROI as the gate; installs are never the goal.30 日 ROI 做北极星、7 日 ROI 做关卡;装机数从来不是目标。 |
| Scaling spend before efficiency is proven.效率没证明就放量。 | Budget | ROI ≥ target as the precondition; budgets grew only as ROI rose.以 ROI ≥ 目标线为前提;预算只随 ROI 上升而增长。 |
| Automated creatives trade quality for volume.自动化素材以质量换数量。 | Quality | A person reviews every creative; A/B against hand-made ones; CTR +10% as the bar.每条素材人工审核;和人工素材 A/B;以 CTR +10% 为门槛。 |
Lean canvas.精益画布。
Problem问题
- Players bought almost blind: installs ≠ payers.几乎盲投地买玩家:装机 ≠ 付费。
- Platform targeting predicts clicks, not who pays.平台定向能预测点击,预测不了付费。
- Our payment data sat unused at bidding time.我们的付费数据在出价时没用上。
Solution解决方案
- Predict each player's 30-day value from first-party data.用第一方数据预测每个玩家的 30 天价值。
- Answer every ad slot through RTA: skip, or a value-based bid.通过 RTA 回答每个广告位:跳过,或按价值出价。
Key metrics关键指标
- North star: 30-day ROI = player spending in 30 days ÷ ad spend.北极星:30 日 ROI = 30 天玩家消费 ÷ 广告费。
- Gate: 7-day ROI.关卡:7 日 ROI。
- Spend scales with ROI.花费随 ROI 放量。
Unique value proposition独特价值主张
Pay for players, not installs.
为玩家付钱,而不是为装机数。
Concept: our value estimate, the media's final decision.一句话:我们估价值,媒体做最终决定。Unfair advantage不公平优势
- First-party install, gameplay and payment data the platforms can't see.平台看不见的第一方安装、游戏行为、付费数据。
- It never leaves Xiaomi; only decisions do.数据不出小米,只有决策出去。
Channels渠道
- ByteDance and Tencent ads, via RTA.字节、腾讯广告,通过 RTA 接入。
- The Xiaomi Games store on every Xiaomi phone.每台小米手机上的小米游戏商店。
Customer segments客户细分
- Users: Xiaomi Games' growth and ad-ops team.用户:小米游戏增长与投放运营团队。
- Customers: game studios co-publishing on Xiaomi Games.客户:在小米游戏联运的游戏厂商。
Cost structure成本结构
Ad spend on the media platforms · engineering and algorithm teams · RTA integration and serving.媒体平台广告费 · 工程与算法团队 · RTA 接入与服务。Revenue streams收入来源
Xiaomi's share of what acquired players spend on co-published titles: $45M+ a year in ad-attributed revenue at the mature stage.买来的玩家在联运游戏里的消费分成:稳定阶段每年 $45M+ 广告归因收入。Our value estimate. The media's final decision.我们估价值,媒体做最终决定。
A simplified view drawn for this portfolio, not Xiaomi's internal architecture.
为作品集绘制的简化示意,不是小米的内部架构。
A yes or no on every ad slot.每个广告位,先回答"要不要"。
The first release did one thing: through RTA, answer each ad slot with skip or bid — one media platform, one game category. Press play, then step through.
第一版只做一件事:通过 RTA 逐个广告位回答"跳过还是出价"——一家媒体、一类游戏。点播放,再逐步看。
In the first release第一版做
- RTA endpoint with one media platform.接一家媒体的 RTA 接口。
- Threshold gate and a bid cap tied to predicted 30-day value.价值阈值门控 + 和预测 30 天价值挂钩的出价上限。
- Value model on first-party installs, gameplay and payments.基于第一方安装、游戏行为、付费数据的价值模型。
- Offline evaluation, then a 50/50 live A/B before every release.每次上线前先离线评估,再 50/50 线上 A/B。
Later phases后续阶段
- The second media platform.第二家媒体。
- Creative automation with human review.带人工审核的素材自动化。
- Automatic budget allocation across titles.跨游戏的自动预算分配。
Result at the mature stage: 30-day ROI 10% → 120%, and $45M+ a year in ad-attributed revenue.
稳定阶段的结果:30 日 ROI 从 10% 到 120%,每年 $45M+ 广告归因收入。
The other side: Xiaomi Browser's feed.另一头:小米浏览器的信息流。
Free reading apps buy ads in the feed and pay per click. I owned the ad recommendation strategy — recall and ranking, lookalike targeting, frequency capping — then redesigned the post-click flow and sold the results to new clients.
免费阅读 app 在信息流里买广告、按点击付费。我负责广告推荐策略——召回与排序、相似人群、频控——再重做点击后的流程,并拿成绩拉来新客户。
After the click: keep the story going.点击之后:让故事继续。
Deep links, pre-loading, fewer steps to the first chapter, landing page matched to the ad. Toggle Before / After.直达下载、预加载、更少步骤读到第一章、落地页和广告一致。切换优化前 / 后。