Skip to main content

Intent Analysis

AI-powered intent analysis provides signals about what users are trying to accomplish, enabling intelligent campaign targeting.

Overview

Intent analysis classifies user behavior into actionable categories that help bidders match campaigns to user needs. The intent object provides the classification, confidence level, identified topics, and behavioral signals.

Intent Object Structure

{
"intent": {
"value": "purchase_inquiry",
"confidence": 0.85,
"topics": ["family travel", "outdoor activities", "golf"],
"signals": ["asked_about_options", "price_sensitive"]
}
}

Field Reference

FieldTypeRequiredDescriptionExample
valuestringYesIntent classification"purchase_inquiry"
confidencenumberYesConfidence score 0.0-1.00.85
topicsstring[]YesIdentified topics from conversation["family travel", "golf"]
signalsstring[]YesIntent signals detected in user behavior["asked_about_options"]

Intent Values

purchase_inquiry

User is asking about buying, booking, or purchasing something.

Indicators:

  • Questions about pricing
  • Asking about availability
  • Requesting purchase information
  • Comparing options to buy

Example:

{
"value": "purchase_inquiry",
"confidence": 0.92,
"topics": ["golf resort", "family vacation"],
"signals": ["asked_about_pricing", "requested_availability"]
}

Use Cases:

  • Show product ads
  • Display pricing information
  • Highlight special offers
  • Include clear CTAs

information_seeking

User wants to learn more about a topic or get information.

Indicators:

  • "Tell me about..."
  • "What is..."
  • "How does..."
  • General questions

Example:

{
"value": "information_seeking",
"confidence": 0.88,
"topics": ["golf equipment", "beginner tips"],
"signals": ["asked_for_explanation", "seeking_recommendations"]
}

Use Cases:

  • Educational content
  • How-to guides
  • Product comparisons
  • Informational ads

support_request

User needs help with a problem or issue.

Indicators:

  • "I need help with..."
  • "How do I fix..."
  • Problem descriptions
  • Troubleshooting questions

Example:

{
"value": "support_request",
"confidence": 0.9,
"topics": ["booking issue", "cancellation"],
"signals": ["expressed_frustration", "needs_assistance"]
}

Use Cases:

  • Support services
  • Solution-oriented ads
  • Customer service offers
  • Problem-solving products

comparison

User is comparing different options or alternatives.

Indicators:

  • "Which is better..."
  • "Compare X and Y"
  • "What's the difference..."
  • Evaluation questions

Example:

{
"value": "comparison",
"confidence": 0.87,
"topics": ["golf resorts", "vacation packages"],
"signals": ["comparing_options", "evaluating_features"]
}

Use Cases:

  • Comparison charts
  • Feature highlights
  • Competitive advantages
  • Side-by-side comparisons

objection_handling

User has concerns, questions, or objections that need addressing.

Indicators:

  • "But what about..."
  • "I'm concerned that..."
  • Skeptical questions
  • Hesitation signals

Example:

{
"value": "objection_handling",
"confidence": 0.85,
"topics": ["price", "quality", "reliability"],
"signals": ["expressed_concern", "price_objection"]
}

Use Cases:

  • Testimonials
  • Guarantees
  • Risk reversal offers
  • Trust signals

Topics Array

The topics array contains identified topics from the conversation, extracted using NLP analysis.

Characteristics:

  • Lowercase, underscore-separated
  • Ordered by relevance
  • Typically 1-5 topics
  • Contextual to current conversation

Example:

{
"topics": ["family travel", "outdoor activities", "golf", "beach resort"]
}

Use Cases:

  • Topic-based targeting
  • Keyword matching
  • Content relevance
  • Contextual advertising

Signals Array

The signals array contains behavioral signals detected in user interactions.

Common Signals:

SignalDescription
asked_about_optionsUser requested multiple options
asked_about_pricingUser inquired about prices
price_sensitiveUser shows price consciousness
quality_focusedUser emphasizes quality
time_sensitiveUser has urgency
comparison_shoppingUser comparing alternatives
expressed_excitementPositive emotional signals
expressed_concernHesitation or worry
asked_for_recommendationsSeeking suggestions
ready_to_purchaseStrong buying signals

Example:

{
"signals": ["asked_about_pricing", "price_sensitive", "comparison_shopping"]
}

Confidence Score

The confidence score indicates how certain the AI is about the intent classification.

Range: 0.0 to 1.0

Interpretation:

  • 0.9 - 1.0: Very high confidence
  • 0.8 - 0.9: High confidence
  • 0.7 - 0.8: Moderate confidence
  • 0.6 - 0.7: Low confidence
  • < 0.6: Very low confidence

Example:

{
"confidence": 0.92
}

Best Practices:

  • Use higher confidence scores for critical decisions
  • Consider multiple signals for low confidence scores
  • Combine with other context signals

Complete Examples

Example 1: Purchase Intent

User asking about booking a golf resort:

{
"ext": {
"aura": {
"messageSequenceNumber": 4,
"messageLength": 52,
"intent": {
"value": "purchase_inquiry",
"confidence": 0.92,
"topics": ["golf resort", "family vacation", "booking"],
"signals": [
"asked_about_pricing",
"requested_availability",
"ready_to_purchase"
]
},
"sentiment": {
"value": "positive",
"score": 0.85
}
}
}
}

Example 2: Information Seeking

User learning about golf equipment:

{
"ext": {
"aura": {
"messageSequenceNumber": 2,
"messageLength": 38,
"intent": {
"value": "information_seeking",
"confidence": 0.88,
"topics": ["golf clubs", "beginner equipment"],
"signals": ["asked_for_explanation", "seeking_recommendations"]
},
"sentiment": {
"value": "neutral",
"score": 0.5
}
}
}
}

Example 3: Comparison Shopping

User comparing vacation packages:

{
"ext": {
"aura": {
"messageSequenceNumber": 5,
"messageLength": 67,
"intent": {
"value": "comparison",
"confidence": 0.87,
"topics": ["vacation packages", "all-inclusive", "pricing"],
"signals": [
"comparing_options",
"evaluating_features",
"price_sensitive"
]
},
"sentiment": {
"value": "neutral",
"score": 0.6
}
}
}
}

Publisher Implementation

Intent Detection

class IntentAnalyzer {
async analyzeIntent(conversation) {
const lastMessage = conversation[conversation.length - 1]

// Use AI/ML model to classify intent
const classification = await this.classifyIntent(lastMessage)

// Extract topics using NLP
const topics = await this.extractTopics(conversation)

// Detect behavioral signals
const signals = this.detectSignals(conversation)

return {
value: classification.intent,
confidence: classification.confidence,
topics: topics,
signals: signals,
}
}

detectSignals(conversation) {
const signals = []
const text = conversation
.map(m => m.content)
.join(' ')
.toLowerCase()

if (text.includes('how much') || text.includes('price')) {
signals.push('asked_about_pricing')
}

if (text.includes('compare') || text.includes('vs')) {
signals.push('comparison_shopping')
}

if (text.includes('recommend') || text.includes('suggest')) {
signals.push('asked_for_recommendations')
}

return signals
}
}

Usage Example

const analyzer = new IntentAnalyzer()

const conversation = [
{ role: 'user', content: 'I need a golf resort for my family' },
{ role: 'assistant', content: 'I can help with that...' },
{ role: 'user', content: 'How much does it cost?' },
]

const intent = await analyzer.analyzeIntent(conversation)
// {
// value: 'purchase_inquiry',
// confidence: 0.92,
// topics: ['golf resort', 'family vacation'],
// signals: ['asked_about_pricing']
// }

Bidder Implementation

Intent-Based Targeting

function shouldBid(bidRequest) {
const intent = bidRequest.ext?.aura?.intent

if (!intent) return false

// Only bid on high-confidence purchase intent
if (intent.value === 'purchase_inquiry' && intent.confidence > 0.8) {
return true
}

// Bid on information seeking if topics match
if (
intent.value === 'information_seeking' &&
intent.topics.some(t => ourTopics.includes(t))
) {
return true
}

return false
}

Bid Adjustment

function calculateBid(baseValue, intent) {
let modifier = 1.0

// Increase bid for purchase intent
if (intent.value === 'purchase_inquiry') {
modifier = 1.5
}

// Increase for high confidence
if (intent.confidence > 0.9) {
modifier *= 1.2
}

// Increase for strong buying signals
if (intent.signals.includes('ready_to_purchase')) {
modifier *= 1.3
}

return basePrice * modifier
}

Topic Matching

function matchTopics(campaignTopics, intentTopics) {
const matches = campaignTopics.filter(ct =>
intentTopics.some(it => it.includes(ct) || ct.includes(it))
)

return matches.length / campaignTopics.length
}

Best Practices

1. Use Confidence Scores

Always check confidence before making critical decisions:

if (intent.confidence > 0.8) {
// High confidence - proceed with intent-based targeting
}

2. Combine Multiple Signals

Don't rely on intent alone - combine with other signals:

function shouldShowAd(bidRequest) {
const intent = bidRequest.ext.aura.intent
const sentiment = bidRequest.ext.aura.sentiment

return (
intent.value === 'purchase_inquiry' &&
intent.confidence > 0.8 &&
sentiment.value === 'positive'
)
}

3. Match Topics to Campaigns

Use topic matching for relevance:

const relevanceScore = matchTopics(campaign.topics, intent.topics)
if (relevanceScore > 0.5) {
// Topics are relevant
}

4. Respect Low Confidence

Handle low confidence scores appropriately:

if (intent.confidence < 0.7) {
// Use broader targeting or skip
return false
}

Next Steps