Intent Classification
The system uses a dual-path strategy to classify user intent with excellent accuracy.
Intent Types
const INTENTS = [
'product_search', // Primary search
'author_search', // Search by author
'show_more_products', // Pagination
'cheaper_alternatives', // Budget refinement
'budget_alternatives', // Budget-constrained search
'product_inquiry', // Ask about specific product
'purchase_confirmation',// Ready to buy
'greeting', // Conversational
'question', // General question
'unknown', // Ambiguous
'ambiguous' // Multiple interpretations
];
Dual-Path Detection
Path 1: Fast Classifier
Model: llama-4-scout-17b-16e-instruct
Temperature: 0 (deterministic)
Duration: 100-200ms
Confidence threshold: 0.7
Fast-path patterns:
- Teacher gifts ("õpetajale")
- Housewarming ("sissekolimine")
- Birthdays ("sünnipäevaks")
- Popular queries ("populaarseid")
Returns:
{
intent: string,
occasion?: string,
recipient?: string,
budget?: { min?, max? },
confidence: number
}
Path 2: Main LLM Extraction
Model: llama-4-scout-17b-16e-instruct
Temperature: 0.1
Duration: 300-500ms
Enhanced capabilities:
- Pronoun resolution via conversation state
- Complex intent detection
- Multi-field extraction
- Estonian morphology handling
Parallel Execution
Performance:
- Fast path success: 150ms total
- Fast path failure: 400ms (saved 150ms by parallel start)
Deterministic Category Keywords
Bypass LLM for obvious cases:
// Single-word refinements
const CATEGORY_KEYWORDS = {
'raamatuid': { productType: 'Raamat', confidence: 0.98 },
'kingitusi': { productType: 'Kingitused', confidence: 0.98 },
'mänge': { productType: 'Mängud', confidence: 0.98 },
'filme': { productType: 'Film', confidence: 0.98 }
};
// Instant response, no API call
if (CATEGORY_KEYWORDS[message.toLowerCase()]) {
return CATEGORY_KEYWORDS[message];
}
Benefits:
- 100% reliable
- 0ms latency
- Zero cost
Intent Examples
Product Search
"kingitus õpetajale sünnipäevaks"
→ intent: 'product_search'
→ recipient: 'õpetaja'
→ occasion: 'sünnipäev'
Show More
"näita rohkem"
→ intent: 'show_more_products'
→ preserves previous taxonomy
Author Search
"raamatuid Tolkienilt"
→ intent: 'author_search'
→ authorName: 'J.R.R. Tolkien'
→ productType: 'Raamat'
Cheaper Alternatives
"odavamaid"
→ intent: 'cheaper_alternatives'
→ implicit budget calculation
Product Inquiry
"Mis on see esimene toode?"
→ intent: 'product_inquiry'
→ productInquiry: { productId: "...", productName: "..." }
→ Resolved via ordinal detection (first product in shown list)
Deterministic Detection
Product inquiry uses regex-based detection for ordinals/pronouns, not LLM. This ensures 2ms latency instead of 600ms for common Estonian patterns. See Product Inquiry Detection for details.
Related Documentation
- Context Extraction - LLM extraction details
- Construction Overview - Complete pipeline
- GiftContext System - Full system details
- Product Inquiry Detection - Ordinal/pronoun detection for shown products