Skip to main content
ChatAds analyzes your message and picks out what it believes is the most relevant product mention to monetize. Sometimes it nails it — and sometimes it picks a term that feels off. This happens because extraction runs in under 200ms across a wide variety of messages. We’re balancing speed with accuracy, and that means we’re working with heuristics — brand detection, word patterns, position in the sentence, and purchase intent signals — rather than deep semantic understanding of every possible context. A few reasons the extracted term might not be what you expected:
  • Multiple products in one message — ChatAds picks the highest-confidence match, which may not be the one you consider most important. A message mentioning both “MacBook Pro” and “USB-C hub” might return the hub if it scores higher on our signals.
  • Generic vs. specific — Sometimes a brand mention gets picked over a more specific product deeper in the text, or vice versa. The scoring model weighs factors like brand recognition and position, which don’t always align with what a human would choose.
  • Context we can’t see — ChatAds only sees the message you send. It doesn’t know the broader conversation, the user’s intent, or what your app is about. A term that seems obviously wrong in context may look reasonable in isolation.
We understand that a bad extraction can lead to a poor user experience — an irrelevant affiliate link undermines trust. But it’s a tradeoff between speed, cost, and quality. Doing this perfectly would require slower, more expensive processing that defeats the purpose of a sub-second API. We’re continuously improving extraction accuracy within those constraints. If you consistently see poor term selection, check your category filters or try Brand Only mode to narrow results.

Is the Term Brand-Derived?

Each offer includes an is_branded field that tells you whether the extracted term was classified as brand-derived (true) or generic (false). A brand-derived term is one that contains a recognizable brand or product name (e.g., “Bose QuietComfort Ultra earbuds”), while a generic term describes a product category without a brand (e.g., “noise-cancelling earbuds”). This field is omitted when no classification is available — for example, when using extraction_mode=none, where you supply the term yourself.