Tl;dr: A model trained only on your own transaction data can only learn relationships it’s counted often enough to notice. It can’t connect a gym membership to a sports drink unless enough households already bought both. A language model that’s read the world already knows they belong to the same story. This wasn’t possible a few years ago, for three reasons: language models weren’t reliable enough for a real business decision, frontier models were too expensive to run at this scale, and CPG audience measurement was never rigorous enough to make the gap visible. A compact, fine-tuned open-weight model solves the first two: reliable enough, and cheap enough to run at scale. In a comparable ad-ranking engagement, it beat a traditional gradient-boosted model by more than 10 AUC points. The third gets solved by building real holdout measurement into the pipeline itself.
A household buys a $60 monthly gym membership, deodorant twice a quarter, and a pair of running shoes twice a year. Ask a person to connect the three purchases and they do it instantly: this is someone who works out, and a brand selling sports nutrition should want to reach them, even though they’ve never bought a sports drink. Ask a model trained only on a retailer’s own transaction history to make the same connection, and it can’t. The pattern is real. The model just never saw it: nothing in a gradient-boosted tree’s training data ever told it that gyms and sports drinks belong to the same story. It sees a merchant category code and a product category code: two numbers, no relationship encoded between them, and no way to learn one unless enough other households happen to buy both often enough for the statistics to notice. It has never read a sentence in its life, though, so it has no idea either code refers to something a fit, health-conscious person would care about.
That’s the actual argument for using a language model here, and it’s worth being precise about it, because “we’re using an LLM” is not by itself an interesting claim anymore. The interesting claim is narrower: a model that has read the world can supply relationships that a model trained only on a company’s own data cannot derive on its own, no matter how much of the data it sees. This gap shows up constantly in the specific, ordinary work of building an audience.
What a behavioral model can’t learn on its own
A gradient-boosted tree, the standard approach for building an audience segment today, is fed numbers, e.g., purchase frequency, a category code, dollars spent, days since last transaction. It learns real, useful patterns from these numbers, the kind any analyst would expect. Households that buy often tend to keep buying. High spenders in one category often spend more broadly across others. What it cannot do is generalize past what its own training data happens to contain. This isn’t a minor limitation. It’s the whole shape of the problem. If gym membership and sports-drink purchases don’t co-occur often enough in a company’s own data for the statistics to surface the pattern, the model will never find it. That has nothing to do with whether the relationship is real in the world. It has everything to do with the fact that a GBDT can only learn by counting, and nobody counted this particular pair.
A retail transaction panel tags every product against a standard, large product taxonomy, hundreds of category leaves deep. A can of sports drink lives under something like Beverages, Sports and Energy Drinks. A gym membership, if it appeared in a credit card transaction panel at all, would live under a completely different branch, something like Retail, Membership Clubs, Sports, Recreation. These two leaves aren’t close to each other in any taxonomy distance a rule-based lookup could traverse, and no amount of clever engineering changes that. A join can’t bridge them because there’s no shared key. A percentile rank can’t bridge them because they’re not measuring the same thing. Only something that actually understands, the way a person does, that gym-goers tend to buy sports nutrition, can make the connection. That’s a fact about the world that happens not to be encoded anywhere in either taxonomy.
Why this wasn’t possible a few years ago
1. Language models had to get good enough at this specific kind of reasoning to be trustworthy for a real business decision. Reading a purchase history and drawing a correct behavioral inference from it is a narrower, harder problem than generating fluent text, and earlier generations of language models weren’t reliable enough at it to fine-tune into a calibrated scoring system that a business could run production audiences on. That changed only in the last couple of years. Models got genuinely capable of following a narrow instruction precisely, instead of producing a plausible-sounding answer that’s wrong in ways that are hard to catch.
2. Frontier models could plausibly do this well from the start, but never at a cost this problem could carry. Scoring tens of millions of households every month, repeated for every strategy a brand asks for, against a hosted frontier API, was never going to pencil out. CPG audience margins are thin to begin with. What changed the economics is a more recent discovery: a small, open-weight model, fine-tuned narrowly on exactly this kind of task, gets most of a frontier model’s judgment at a small fraction of the cost. That’s not something that’s been quietly true all along and only recently noticed. It’s a genuinely new result, and it’s the reason a compact model can be the actual production system rather than a compromise version of a better idea.
3. This piece is less about the model and more about the industry it’s entering. CPG audience performance has rarely been measured with any real rigor. The standard product is a rule-based segment or a pre-built audience bought off a marketplace, sold with no holdout, no causal lift number, and no real accountability for whether it worked better than a simpler, cheaper alternative would have. Without a real measurement culture, there was never much pressure to prove a smarter approach was worth switching to, because nobody could show the gap in the first place, and a vendor selling the status quo had no reason to volunteer the comparison. A product that treats causal measurement not as an afterthought bolted on for credibility, but as a first-class part of the pipeline, changes the calculus directly. It’s the same instinct as the world-knowledge argument itself: don’t take the benefit on faith, build the pipeline so it proves itself against a real number every time.
World knowledge’s reach doesn’t stop at scoring. It extends into the front end of the product too, which is easy to miss if the whole story sounds like it’s only about better audience scores. The same generational jump in language model capability is what makes it possible for a brand to state a growth objective in plain language and have an agentic layer translate that into a set of formal, executable strategies on its own, rather than a person hand-writing eligibility rules for each one. New buyer acquisition, lapsed reactivation, frequency defense, competitive conquest: an agent generates the formal definition for each, working from the same underlying capability that lets a fine-tuned compact model read a purchase history and understand what it means. World knowledge does two jobs in this pipeline, not one. It scores a household correctly, and separately, earlier in the process, it turns a plain-language business goal into an executable audience strategy before any household ever gets scored at all.
The case for a compact model over a frontier one
A hosted frontier API isn’t something that can be fine-tuned on a company’s own outcome data and run as a self-hosted batch job against its own infrastructure, which rules it out for the actual production role regardless of how capable it is in the abstract. Scoring needs a model whose weights can be touched directly. That’s not a preference. It’s a real constraint.
A comparable engagement with one of the largest marketplaces in Latin America demonstrated the answer, on a different problem: ad ranking rather than audience scoring. A small, open-weight language model, fine-tuned on real outcome data, got nearly all of the benefit at a fraction of the cost. In this engagement, a compact model fine-tuned with a lightweight adapter beat a traditional gradient-boosted model by more than 10 AUC points, a gap that has nothing to do with parameter count and everything to do with what each model type structurally can and cannot know going in. A GBDT trained on a company’s own logs starts from nothing but its own history, which is exactly the limitation described above. A language model, even a small one, starts already knowing what a phone case is and what two detergent brands have in common. It knows why running shoes from two different brands are substitutes for each other. Fine-tuning doesn’t have to teach it the world from scratch. It only has to turn the existing understanding into a calibrated answer to one specific business question, which is a much smaller and cheaper problem to solve.
The compact-model advantage matters even more for audience scoring than it did for ad ranking, because audience scoring doesn’t run against a real-time bidding clock the way an auction does. Ad ranking has to answer in single-digit milliseconds. That’s what forces a real-time system into a compressed, cacheable architecture that trades away some accuracy for the sake of latency, typically by distilling a slower, more accurate model down into something fast enough to serve. Scoring a household has no such constraint. It runs weekly, on a schedule, while the model itself is only retrained monthly, on the same cadence as the underlying transaction data refresh. Because neither of those runs against a real-time clock, the fine-tuned compact model can be the production system directly. It reads a household’s actual purchase history as plain text and produces a score. There’s no compression step in between, and no accuracy left on the table for speed nobody needs.
Where the gap shows up
1. A retail transaction panel’s product descriptions aren’t the abbreviated shorthand people sometimes assume receipt data looks like, but already clean, readable text. A gradient-boosted model still gets none of the meaning in the text, clean or not. The field gets encoded into an opaque category bucket long before any model sees the actual words. Whatever the text said gets thrown away, however legible it was. A language model reads a plain description like “lactose free cottage cheese” and understands something a category code simply can’t carry: this is a household managing a dietary restriction, a fact about the person, not just a fact about the product they happened to buy. A description that says “private label” signals something just as real about how price-conscious the household is, the same way a person skimming a receipt would read it without needing anyone to point it out.
2. A retail panel and a credit card transaction panel describe two different axes of the same underlying reality, and only a model that understands both axes at once can put them together. One tags what was bought, a product, a category, a brand. The other tags where the money went, a merchant, a type of business. A household’s credit card record might show heavy spend at premium grocery while its retail panel record shows frequent purchases in personal care. A rule-based system treats these as two unrelated facts, because they sit in different branches of two entirely different classification systems that were never designed to talk to each other. A language model, reading both as plain English describing the same household, synthesizes them into a single coherent picture instead: a household that shops at premium grocery and buys higher-end personal care, a pattern no rule anyone wrote down happens to encode. Add DTC purchase data on top, direct brand relationships that never pass through a retailer or a card network at all, and the picture gets sharper still. A specific brand loyalty layers on top of the general behavioral pattern the other two sources already established.
3. Cross-brand relationships, the ones that matter most when a client names a specific target, aren’t in any taxonomy at all, no matter how detailed it is. When a brand wants new buyers for a specific product, the useful signal is rarely just “buys this category.” It’s “buys a competing brand,” or “shops at gyms.” Sometimes it’s stranger than that: “buys adjacent products in a completely different aisle.” None of that is encoded as one clean category anywhere in a retail or credit card panel’s schema, because it was never meant to be. A rule-based lookup can only ever search inside one taxonomy branch at a time. It structurally cannot find these connections, no matter how carefully it’s built. Only a model that understands what these products mean to the person buying them can draw the connection between a competitor’s product, a gym membership, and a protein bar, the same connection a sharp category manager would draw by hand, at a fraction of the cost and none of the manual research time it would otherwise take.
A note on what this argument does and doesn’t claim
None of this is a claim that a language model is magic, or that world knowledge substitutes for evidence, and it’s worth saying that plainly rather than letting the examples above speak for themselves and imply more than they should. This doesn’t get treated as a fact to assume. It gets treated as a hypothesis to test, at every point it gets used. Does raw product text, fed directly into a compact model, outperform a hand-built category feature? That gets tested, sliced by how common the product is, rather than assumed either way based on how compelling the argument sounds. Does a household’s gym spend help predict a completely different category’s propensity when there are few examples of that exact combination sitting in the training data? That’s a real, checkable question, not a rhetorical one. Build the test case, run it, and see what the model actually does under pressure, rather than take the world-knowledge story on faith just because the reasoning is intuitive.
The argument for using an LLM here isn’t that language models understand everything perfectly. It’s narrower and more defensible: they start from a genuinely different, genuinely larger base of understanding than anything a company’s own transaction history could ever teach a model on its own, no matter how much of that history exists. This head start is worth having, but not on faith. It’s worth having once it’s been tested and verified against a real number.
How to get started
If you’re a brand building audiences from retail, credit card, or DTC transaction data and want to know whether a fine-tuned compact model would outperform what you’re running today, we can tell you fast. Share the strategy you care about most, whether that’s new-buyer acquisition, lapsed reactivation, or a specific brand target, and roughly how much labeled outcome history you have. We can usually tell you within a week whether the gap is worth closing and what it would take to close it.
If you already have a modeling pipeline and want to add this as a capability rather than replace what you have, we scope a single-segment pilot, fine-tune against your own held-out data, and hand you a real AUC comparison against your current production model. You don’t commit to anything larger until you’ve seen the number.