Skip to main content

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

"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
"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.