A comparison step has one job: decide whether two records agree. It cannot do that job if it is also guessing what the records mean. When you paste a batch of ad headlines into a model and ask it to summarize the selling points, you get aggregate adjectives that are true and useless, because the model skipped ad-by-ad extraction and summarized a wall of text on impression ad copy clustering at scale. The result cannot be traced to individual ads, cannot be counted, and shifts when you rerun it.
Splitting the work fixes this. Step one extracts fields from each ad on its own into a fixed schema. Step two operates on those structured records, which is a counting and grouping task rather than a semantic one ad copy clustering at scale.
The same logic already governs the page side of the handoff. Message-match audits ask the team to record product, problem, promise, proof, offer and action for the ad and again for the landing page, then compare the two lists message match checklist. The extraction record is that list, made machine-readable and reproducible.
There is a content lesson here too. Web users scan rather than read, which eye-tracking research has shown consistently since the late 1990s, when 79 percent of test users were observed scanning any new page and only 16 percent read word by word how users read on the web. Those findings held across five studies spanning 13 years and over 500 participants how people read online. Ad copy inherits the same compression: the promise is carried in a headline and a short description, so the extraction schema has to be tolerant of very small text.



