Compare cost

Same sessions, different payloads

Both sessions have six signals, but the token sequences differ — churn routes through downgrade, upgrade routes through scroll depth. The LLM path ships full URLs and labels; intentLM ships integers and returns a compact classification.

CHURN_SIGNAL_DETECTED92%

High-confidence churn — downgrade after plan comparison

CORE_FEATURE_USEDPRICING_VIEWTRIAL_UPGRADE_PROMPT_VIEWEDTRIAL_UPGRADE_PROMPT_VIEWEDPLAN_COMPARISON_VIEWDOWNGRADE_VIEW

sess_mq4

$0.0050 LLM → $0.0002 intentLM

96% token cost saved

LLM path — verbose events + classifier

Classifier request

Full URLs, DOM labels, timestamps per event

2.8 KB
{
  "model": "claude-sonnet-4.6",
  "messages": [
    {
      "role": "system",
      "content": "Classify B2B SaaS session intent from the event stream. Return JSON: { intent, confidence }."
    },
    {
      "role": "user",
      "content": "Session sess_mq4 events:\n[\n  {\n    \"event\": \"page_interaction\",\n    \"properties\": {\n      \"token_label\": \"CORE_FEATURE_USED\",\n      \"token_id\": 801,\n      \"$current_url\": \"https://app.acme-saas.io/app/dashboard\",\n      \"$pathname\": \"/app/dashboard\",\n      \"$host\": \"app.acme-saas.io\",\n      \"$el_text\": \"Create project\",\n      \"$session_id\": \"sess_mq4\",\n      \"$timestamp\": 1748832900000,\n      \"$note\": \"core_action\"\n    }\n  },\n  {\n    \"event\": \"page_interaction\",\n    \"properties\": {\n      \"token_label\": \"PRICING_VIEW\",\n      \"token_id\": 102,\n      \"$current_url\": \"https://app.acme-saas.io/pricing\",\n      \"$pathname\": \"/pricing\",\n      \"$host\": \"app.acme-saas.io\",\n      \"$el_text\": \"Pricing nav\",\n      \"$session_id\": \"sess_mq4\",\n      \"$timestamp\": 1748832904200\n    }\n  },\n  {\n    \"event\": \"page_interaction\",\n    \"properties\": {\n      \"token_label\": \"TRIAL_UPGRADE_PROMPT_VIEWED\",\n      \"token_id\": 209,\n      \"$current_url\": \"https://app.acme-saas.io/pricing\",\n      \"$pathname\": \"/pricing\",\n      \"$host\": \"app.acme-saas.io\",\n      \"$el_text\": \"Trial upgrade banner\",\n      \"$session_id\": \"sess_mq4\",\n      \"$timestamp\": 1748832906000,\n      \"$note\": \"in_app_prompt\"\n    }\n  },\n  {\n    \"event\": \"page_interaction\",\n    \"properties\": {\n      \"token_label\": \"TRIAL_UPGRADE_PROMPT_VIEWED\",\n      \"token_id\": 209,\n      \"$current_url\": \"https://app.acme-saas.io/pricing\",\n      \"$pathname\": \"/pricing\",\n      \"$host\": \"app.acme-saas.io\",\n      \"$el_text\": \"Trial upgrade banner\",\n      \"$session_id\": \"sess_mq4\",\n      \"$timestamp\": 1748832906900,\n      \"$note\": \"in_app_prompt\"\n    }\n  },\n  {\n    \"event\": \"page_interaction\",\n    \"properties\": {\n      \"token_label\": \"PLAN_COMPARISON_VIEW\",\n      \"token_id\": 201,\n      \"$current_url\": \"https://app.acme-saas.io/pricing/compare\",\n      \"$pathname\": \"/pricing/compare\",\n      \"$host\": \"app.acme-saas.io\",\n      \"$el_text\": \"Compare plans table\",\n      \"$session_id\": \"sess_mq4\",\n      \"$timestamp\": 1748832910000\n    }\n  },\n  {\n    \"event\": \"page_interaction\",\n    \"properties\": {\n      \"token_label\": \"DOWNGRADE_VIEW\",\n      \"token_id\": 403,\n      \"$current_url\": \"https://app.acme-saas.io/settings/billing/downgrade\",\n      \"$pathname\": \"/settings/billing/downgrade\",\n      \"$host\": \"app.acme-saas.io\",\n      \"$el_text\": \"Downgrade to Starter\",\n      \"$session_id\": \"sess_mq4\",\n      \"$timestamp\": 1748832912400\n    }\n  }\n]"
    }
  ],
  "response_format": {
    "type": "json_object"
  }
}

Agent context

Narrative injected into system prompt

805 B
{
  "injected_into": "agent_system_prompt",
  "session_summary": [
    {
      "url": "https://app.acme-saas.io/app/dashboard",
      "action": "Create project",
      "signal": "CORE_FEATURE_USED"
    },
    {
      "url": "https://app.acme-saas.io/pricing",
      "action": "Pricing nav",
      "signal": "PRICING_VIEW"
    },
    {
      "url": "https://app.acme-saas.io/pricing",
      "action": "Trial upgrade banner",
      "signal": "TRIAL_UPGRADE_PROMPT_VIEWED"
    },
    {
      "url": "https://app.acme-saas.io/pricing",
      "action": "Trial upgrade banner",
      "signal": "TRIAL_UPGRADE_PROMPT_VIEWED"
    },
    {
      "url": "https://app.acme-saas.io/pricing/compare",
      "action": "Compare plans table",
      "signal": "PLAN_COMPARISON_VIEW"
    },
    {
      "url": "https://app.acme-saas.io/settings/billing/downgrade",
      "action": "Downgrade to Starter",
      "signal": "DOWNGRADE_VIEW"
    }
  ],
  "instruction": "User opened chat. Infer intent from navigation history before responding."
}

~1,476 LLM tokens/session (3.6 KB JSON)

intentLM path — integers only

POST /v1/analyze

No URLs or PII — token IDs + timing

105 B
{
  "session_id": "sess_mq4",
  "tokens": [
    801,
    102,
    209,
    209,
    201,
    403
  ],
  "time_deltas_ms": [
    0,
    4200,
    1800,
    900,
    3100,
    2400
  ]
}

Analyze response

Markov inference (<500 ms avg), zero LLM tokens

137 B
{
  "intent": "CHURN_SIGNAL_DETECTED",
  "confidence": 0.92,
  "model_tier": "markov",
  "trigger_nudge": true,
  "session_id": "sess_mq4",
  "latency_ms": 14.2
}

Agent context

Pre-classified intent block for your agent

284 B
{
  "intent": "CHURN_SIGNAL_DETECTED",
  "confidence": 0.92,
  "session_id": "sess_mq4",
  "tokens": [
    801,
    102,
    209,
    209,
    201,
    403
  ],
  "token_labels": [
    "CORE_FEATURE_USED",
    "PRICING_VIEW",
    "TRIAL_UPGRADE_PROMPT_VIEWED",
    "TRIAL_UPGRADE_PROMPT_VIEWED",
    "PLAN_COMPARISON_VIEW",
    "DOWNGRADE_VIEW"
  ],
  "trigger_nudge": true
}

~71 LLM tokens to agent (526 B wire) · 86% smaller payload

UPGRADE_SEEKING30%

Early upgrade signal — pricing after deep scroll engagement

CORE_FEATURE_USEDSCROLL_DEPTH_25SCROLL_DEPTH_75CORE_FEATURE_USEDPRICING_VIEWTRIAL_UPGRADE_PROMPT_VIEWED

sess_mq4

$0.0049 LLM → $0.0002 intentLM

96% token cost saved

LLM path — verbose events + classifier

Classifier request

Full URLs, DOM labels, timestamps per event

2.8 KB
{
  "model": "claude-sonnet-4.6",
  "messages": [
    {
      "role": "system",
      "content": "Classify B2B SaaS session intent from the event stream. Return JSON: { intent, confidence }."
    },
    {
      "role": "user",
      "content": "Session sess_mq4 events:\n[\n  {\n    \"event\": \"page_interaction\",\n    \"properties\": {\n      \"token_label\": \"CORE_FEATURE_USED\",\n      \"token_id\": 801,\n      \"$current_url\": \"https://app.acme-saas.io/app/dashboard\",\n      \"$pathname\": \"/app/dashboard\",\n      \"$host\": \"app.acme-saas.io\",\n      \"$el_text\": \"Create project\",\n      \"$session_id\": \"sess_mq4\",\n      \"$timestamp\": 1748832900000,\n      \"$note\": \"core_action\"\n    }\n  },\n  {\n    \"event\": \"page_interaction\",\n    \"properties\": {\n      \"token_label\": \"SCROLL_DEPTH_25\",\n      \"token_id\": 905,\n      \"$current_url\": \"https://app.acme-saas.io/app/features\",\n      \"$pathname\": \"/app/features\",\n      \"$host\": \"app.acme-saas.io\",\n      \"$el_text\": \"scroll\",\n      \"$session_id\": \"sess_mq4\",\n      \"$timestamp\": 1748832902200,\n      \"$note\": \"depth_25pct\"\n    }\n  },\n  {\n    \"event\": \"page_interaction\",\n    \"properties\": {\n      \"token_label\": \"SCROLL_DEPTH_75\",\n      \"token_id\": 906,\n      \"$current_url\": \"https://app.acme-saas.io/app/features\",\n      \"$pathname\": \"/app/features\",\n      \"$host\": \"app.acme-saas.io\",\n      \"$el_text\": \"scroll\",\n      \"$session_id\": \"sess_mq4\",\n      \"$timestamp\": 1748832907000,\n      \"$note\": \"depth_75pct\"\n    }\n  },\n  {\n    \"event\": \"page_interaction\",\n    \"properties\": {\n      \"token_label\": \"CORE_FEATURE_USED\",\n      \"token_id\": 801,\n      \"$current_url\": \"https://app.acme-saas.io/app/dashboard\",\n      \"$pathname\": \"/app/dashboard\",\n      \"$host\": \"app.acme-saas.io\",\n      \"$el_text\": \"Create project\",\n      \"$session_id\": \"sess_mq4\",\n      \"$timestamp\": 1748832908200,\n      \"$note\": \"core_action\"\n    }\n  },\n  {\n    \"event\": \"page_interaction\",\n    \"properties\": {\n      \"token_label\": \"PRICING_VIEW\",\n      \"token_id\": 102,\n      \"$current_url\": \"https://app.acme-saas.io/pricing\",\n      \"$pathname\": \"/pricing\",\n      \"$host\": \"app.acme-saas.io\",\n      \"$el_text\": \"Pricing nav\",\n      \"$session_id\": \"sess_mq4\",\n      \"$timestamp\": 1748832913800\n    }\n  },\n  {\n    \"event\": \"page_interaction\",\n    \"properties\": {\n      \"token_label\": \"TRIAL_UPGRADE_PROMPT_VIEWED\",\n      \"token_id\": 209,\n      \"$current_url\": \"https://app.acme-saas.io/pricing\",\n      \"$pathname\": \"/pricing\",\n      \"$host\": \"app.acme-saas.io\",\n      \"$el_text\": \"Trial upgrade banner\",\n      \"$session_id\": \"sess_mq4\",\n      \"$timestamp\": 1748832915200,\n      \"$note\": \"in_app_prompt\"\n    }\n  }\n]"
    }
  ],
  "response_format": {
    "type": "json_object"
  }
}

Agent context

Narrative injected into system prompt

747 B
{
  "injected_into": "agent_system_prompt",
  "session_summary": [
    {
      "url": "https://app.acme-saas.io/app/dashboard",
      "action": "Create project",
      "signal": "CORE_FEATURE_USED"
    },
    {
      "url": "https://app.acme-saas.io/app/features",
      "action": "scroll",
      "signal": "SCROLL_DEPTH_25"
    },
    {
      "url": "https://app.acme-saas.io/app/features",
      "action": "scroll",
      "signal": "SCROLL_DEPTH_75"
    },
    {
      "url": "https://app.acme-saas.io/app/dashboard",
      "action": "Create project",
      "signal": "CORE_FEATURE_USED"
    },
    {
      "url": "https://app.acme-saas.io/pricing",
      "action": "Pricing nav",
      "signal": "PRICING_VIEW"
    },
    {
      "url": "https://app.acme-saas.io/pricing",
      "action": "Trial upgrade banner",
      "signal": "TRIAL_UPGRADE_PROMPT_VIEWED"
    }
  ],
  "instruction": "User opened chat. Infer intent from navigation history before responding."
}

~1,461 LLM tokens/session (3.6 KB JSON)

intentLM path — integers only

POST /v1/analyze

No URLs or PII — token IDs + timing

106 B
{
  "session_id": "sess_mq4",
  "tokens": [
    801,
    905,
    906,
    801,
    102,
    209
  ],
  "time_deltas_ms": [
    0,
    2200,
    4800,
    1200,
    5600,
    1400
  ]
}

Analyze response

Markov inference (<500 ms avg), zero LLM tokens

131 B
{
  "intent": "UPGRADE_SEEKING",
  "confidence": 0.3,
  "model_tier": "markov",
  "trigger_nudge": false,
  "session_id": "sess_mq4",
  "latency_ms": 11.8
}

Agent context

Pre-classified intent block for your agent

264 B
{
  "intent": "UPGRADE_SEEKING",
  "confidence": 0.3,
  "session_id": "sess_mq4",
  "tokens": [
    801,
    905,
    906,
    801,
    102,
    209
  ],
  "token_labels": [
    "CORE_FEATURE_USED",
    "SCROLL_DEPTH_25",
    "SCROLL_DEPTH_75",
    "CORE_FEATURE_USED",
    "PRICING_VIEW",
    "TRIAL_UPGRADE_PROMPT_VIEWED"
  ],
  "trigger_nudge": false
}

~66 LLM tokens to agent (501 B wire) · 86% smaller payload

Combined monthly estimate

Both scenarios × selected volume

LLM-only @ volume

$98.91

/month (both sessions)

With intentLM

$4.11

agent context only

Estimated savings

$94.80

96% vs LLM path

Assumptions

  • LLM-only classifier: Claude Sonnet 4.6 — $3/M input, $15/M output. One call per session with the full verbose event JSON (~2.8 KB churn, ~2.8 KB upgrade).
  • Agent context: Claude Sonnet 4.6 — $3/M input only. One invocation per session when the user opens chat; LLM path injects URLs and labels, intentLM injects compact intent + token IDs.
  • intentLM inference: intentLM Markov / SASRec (no LLM) via /v1/analyze— no LLM tokens. Monthly “With intentLM” cost is agent context only.
  • Token sizing: ~4 characters per token from JSON payload size.
  • Volume: selected preset applies to each demo scenario (churn + upgrade), so combined monthly totals assume 2× that many sessions.