Long road building honest emotional intelligence for marketing. Every path led to bullshit. Social listening? Performative. People tweet what they want you to think they're feeling. Intent data? Worse. Anonymous IPs labeled "happy" or "frustrated" based on aggregated dwell time. Astrology for B2B marketers. The solution: Involuntary behavioral data captured before conscious filtering. Mouse telemetry.
The Technical Thesis
Hypothesis: Sub-second mouse behavior (rage clicks, erratic movement, rapid back-button mashing) correlates with emotional states that predict abandonment.
Why it works: Involuntary (faster than conscious thought) First-party (you own the data) Attributable (session → intervention → outcome) Falsifiable (if wrong, conversions don't improve) Application: Real-time behavioral intervention. Detect frustration, intervene before bounce, measure lift.
The Stack
Frontend: sentientiq-unified.js captures mouse physics at 20Hz. Batches 50 events every 500ms, sends to NATS over WebSocket. Messaging: NATS pub/sub (telemetry.raw, intervention.trigger) Processing: Dual-LLM cascade
Haiku 3.5: Fast triage (200 calls/min) Sonnet 4.5: Deep analysis (50 calls/min)
Flow: NATS → Haiku triage → Sonnet deep analysis with ML-learned patterns → Intervene or monitor Key innovation: Dynamic ML knowledge injection. Proven patterns from seer_ml_intelligence table get injected into prompts. Intervention: Seer (Sonnet 4.5 chat) receives emotional context via EITP packets (Emotional Intelligence Transfer Protocol). 7D emotional state vectors: valence, arousal, urgency, confusion, interest, intent_strength, session_phase. Persistence: Supabase (emotional_events, seer_ml_intelligence, interventions) Feedback Loop (The Moat): Thompson Sampling aggregates outcomes by (tenant, vertical, emotion, page_section, intervention). System writes proven patterns back to ML table. Gets smarter autonomously.
Intelligence Layer: contagion-detector.py - Emotional spread across geographies cross-vertical-analyzer.py - Transferable patterns evi-collector.py - Emotional Volatility Index (VIX for digital purchase behavior)
Why EITP? LLMs waste compute on uncertainty. With EITP packets, Sonnet receives: { "emotional_state": {"valence": -0.6, "arousal": 0.8, "confusion": 0.7}, "context": "financing_calculator", "proven_pattern": "automotive_financing_anxiety_intervention_v2" }
Now it doesn't guess. It knows. Aspirational claim: ~80% compute waste reduction.
Current State
Stress-tested to 300 concurrent sessions Scales to ~1500 (AWS ALB + EC2) Session-level rate limiting (100 events/session/hour) 24 microservices via PM2 Pricing: $999/mo or $4,999 lifetime (first 100)
The Wedge: Automotive Retail
Why auto dealers: $30k-60k transactions Massive emotional volatility (sticker shock, financing anxiety) One saved session = months of fees Demo: User browses $45k F-150 → Frustration on financing calculator → Seer intervenes → Lead submitted → Sale saved.
The Protocol Play EITP published as RFC 9999 (https://eitp.io). If standardized:
Any LLM receives emotional context Any app subscribes to volatility feeds Industry compute waste drops
We're calling it Layer 8 of the OSI model (https://osi8.dev) - the missing layer between your app and user emotional state. Yes, Layer 8 is the joke about user error. We're claiming it anyway. Stack: React + Vite + TypeScript | Node.js + NATS + Anthropic | Supabase | AWS | PM2 Live: This week Feel free to roast the architecture. That's why I'm here.