OTTO NLP Intelligence Engine
A 7-stage on-premises NLP pipeline. 100% benchmark accuracy on 39-query canonical test set. All inference local — no external model API calls.
7-Stage Pipeline
259-term domain vocabulary. Corrects "revennu" → "revenue" before routing. Cutoff 0.85, tokens ≥4 chars only.
11 languages: EN FR DE ES IT ZH PT NL PL AR JA. No external service. Logs language per request.
384-dim dense embeddings. Per-keyword centroids mean-pooled per domain. Cosine similarity against 17 centroids.
Word-boundary regex for short tokens. Priority bonus for 8 high-specificity domains. Tiebreaker via semantic confidence.
report vs simulate with temporal-context veto logic. Separates historical queries from Monte Carlo simulations.
Stage 1: regex for AMOUNT/DATE/EMAIL/ID/PERCENT. Stage 2: transformer NER for MONEY/DATE/ORG/PERSON. Span-deduplicated.
When conf < 0.7: async call to OTTO AI Orchestrator 2.0. Falls back to 0.5 gracefully. Does not block the main pipeline.
Benchmark Results
| Query Category | Count | TF-IDF (Baseline) | SBERT v3.3 | Delta |
|---|---|---|---|---|
| Keyword-direct | 17 | 100% | 100% | +0pp |
| Paraphrases | 14 | 50% | 100% | +50pp |
| Ambiguous / multi-domain | 5 | 80% | 100% | +20pp |
| Typos (difflib) | 3 | 67% | 100% | +33pp |
| Total | 39 | 79.5% | 100.0% | +20.5pp |
Stack Introspection
curl http://localhost:6670/api/otto/nlp-capabilities
{
"version": "3.3.0",
"classifier_backend": "sbert",
"sbert_model": "all-MiniLM-L6-v2",
"ner_model": "en_core_web_trf",
"language_count": 11,
"domain_count": 17,
"benchmark_accuracy": 100.0,
"fuzzy_vocab_size": 259,
"on_premises": true,
"zero_knowledge": true
}