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
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
value | string | Yes | Intent classification | "purchase_inquiry" |
confidence | number | Yes | Confidence score 0.0-1.0 | 0.85 |
topics | string[] | Yes | Identified topics from conversation | ["family travel", "golf"] |
signals | string[] | Yes | Intent 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:
| Signal | Description |
|---|---|
asked_about_options | User requested multiple options |
asked_about_pricing | User inquired about prices |
price_sensitive | User shows price consciousness |
quality_focused | User emphasizes quality |
time_sensitive | User has urgency |
comparison_shopping | User comparing alternatives |
expressed_excitement | Positive emotional signals |
expressed_concern | Hesitation or worry |
asked_for_recommendations | Seeking suggestions |
ready_to_purchase | Strong 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
- Sentiment Analysis - Sentiment detection
- Conversation Metadata - Operational metrics
- Field Reference - Complete field documentation