TL;DR I led design and research for Goals Hub — a new account-level intent layer for TikTok Ads that lets every campaign inherit signal instead of rebuilding settings from scratch. The core insight came from research: 7 of 12 key accounts were unknowingly resetting their Learning Phase mid-flight, and the real pain wasn't complexity, it was repetition. Rather than simplifying the campaign form, I reframed the problem as a memory problem. Goals Hub captures intent once at the account level through Account Goals and reusable Objective Profiles, so new campaigns inherit smart defaults and pool conversion signals across campaigns — compressing Learning Phase and reducing misconfigured settings. The design is optional by design, phased to prove UI-layer value before touching the delivery model, and currently in testing.
Every advertiser rebuilds the same settings from scratch. Sometimes they reset the learning algorithm without knowing it. Budget, targeting, and creative edits mid-flight were resetting Learning Phase for 7 of 12 key accounts — without their knowledge. The pain wasn't complexity, it was repetition.
Move intent upstream. Every campaign inherits signal instead of starting from zero. Goals Hub pools conversion signals across campaigns into one unified container — so 10 websites + 10 form leads + 10 DM leads become 30 pooled signals that exit Learning Phase as a single unified goal rather than three starved learners.
Today the model sees 10 starved learners with account-level goals. With Goals Hub, new campaigns inherit learning from every prior campaign tied to the same goal. 42 CSAT entries and a competitive gap confirmed the opportunity: Google has account-level conversion actions. TikTok has no equivalent.
Smarter defaults for every advertiser — SMB and Key Account alike. DS projections set the targets:
What told us setup complexity and Learning Phase fragmentation were the real problem:
Goals Hub owns the UI layer — intent capture upstream, account-level conversion goals before campaign creation. Built on three layers: Account Goals capture primary outcome, setup posture, and Primary vs. Secondary action hierarchy, defined once before any campaign is created. Objective Profiles translate that intent into reusable per-objective defaults (pixel, event, optimization depth, cost controls, attribution windows) set once and inherited everywhere. Inheritance + Cross-Campaign Signal closes the loop: Phase 1 delivers UI-layer inheritance so every campaign starts from account defaults; Phase 2 enables the delivery model to consume cross-campaign signal — Collective Memory unlocked.
The calls that shaped the system:
My first instinct was to simplify the form — fewer fields, smarter defaults, better ordering. I explored that direction for two weeks before the research stopped me. 54 dogfooding sessions. 402 CSAT responses. The friction wasn't the fields themselves. It was seeing the same ones every single campaign. That shifted everything. The design problem wasn't simplification. It was memory.
The optional vs. mandatory debate: my first instinct was to make Goals Hub mandatory. If advertisers skip it, signal pooling doesn't work at scale. But mandatory flows at the top of the funnel kill activation. I explored both directions before landing on opt-in with a >60% voluntary completion gate.
Goals Hub is designed as an optional account-level flow, surfaced to new advertisers and accessible from account settings at any time. Three components in Phase 1: Account Goal selection, Objective Profile configuration, and campaign-level inheritance with ad-group overrides. Currently in testing.
Currently in testing. DS projections show potential for significant reduction in setup time, abandonment, and Learning Phase fragmentation across both SMB and Key Account segments.
Proud of the reframe — arriving at "the platform has no memory" from "reduce setup time," and the restraint of shipping a clean Phase 1 instead of overscoping towards the full vision. Would involve DS earlier in problem framing next time, not just solution review. We would have arrived at the Phase 1/2 split faster with stronger shared ownership of the model-side dependency.