Skip to main content

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.

100%
Benchmark Accuracy
17
Business Domains
11
Languages
< 5ms
Per Query

7-Stage Pipeline

1
Typo Correctiondifflib (stdlib)< 0.1ms

259-term domain vocabulary. Corrects "revennu" → "revenue" before routing. Cutoff 0.85, tokens ≥4 chars only.

2
Language DetectionFunction-word voting< 0.1ms

11 languages: EN FR DE ES IT ZH PT NL PL AR JA. No external service. Logs language per request.

3
Domain ClassificationSBERT all-MiniLM-L6-v2~4ms

384-dim dense embeddings. Per-keyword centroids mean-pooled per domain. Cosine similarity against 17 centroids.

4
Keyword FallbackDeterministic scoring< 0.2ms

Word-boundary regex for short tokens. Priority bonus for 8 high-specificity domains. Tiebreaker via semantic confidence.

5
Intent DetectionKeyword scoring + veto< 0.1ms

report vs simulate with temporal-context veto logic. Separates historical queries from Monte Carlo simulations.

6
Entity ExtractionRegex + spaCy en_core_web_trf~15ms

Stage 1: regex for AMOUNT/DATE/EMAIL/ID/PERCENT. Stage 2: transformer NER for MONEY/DATE/ORG/PERSON. Span-deduplicated.

7
Confidence BoostingOTTONLPEngine._ai_boost()async

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 CategoryCountTF-IDF (Baseline)SBERT v3.3Delta
Keyword-direct17100%100%+0pp
Paraphrases1450%100%+50pp
Ambiguous / multi-domain580%100%+20pp
Typos (difflib)367%100%+33pp
Total3979.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
}