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

At 10K sessions/month, the LLM-only classifier + agent context path costs roughly 3× more than intentLM across both demo scenarios.

Churn + upgrade combined · classifier + agent context · Claude Sonnet 4.6 pricing

Estimated savings

$94.80/mo

Calculate cost

Model your savings

Behavioral context token costs on every agent call, plus warehouse query fees when your data team runs analytics against stored sessions.

Behavioral context cost

Token cost per agent call

DIY 350 tokens vs intentLM 50 tokens — extra behavioral context added to every agent call

This calculator isolates the behavioral context token cost only — the extra tokens added to every agent call. Base inference cost (your prompt + response) is the same either way and excluded.
Monthly agent sessions100K sessions
LLM model cost per 1M input tokens$3.00

DIY — 5 page visits in prompt

Behavioral context / session350 tokens
Total context tokens / mo35,000,000
Token cost / month$105.00

intentLM Intent Object

Behavioral context / session50 tokens
Total context tokens / mo5,000,000
Token cost / month$15.00

Monthly token cost saved

DIY prompt context minus intentLM Intent Object — LLM input tokens only

$90.00 saved

DIY: 5 page visit tokens ≈ 350 tokens avg (URL slugs + event labels) · intentLM Intent Object: ~50 tokens (structured JSON, pre-computed) · Base inference excluded · Directional estimate only

Warehouse query cost

Bytes scanned per analytical query

Full URL strings vs integer token storage — billed every time your data team queries the corpus

Columnar warehouses (BigQuery, Snowflake) bill on bytes scanned, not rows returned. Query fees recur every time the corpus is scanned — this is the cost that compounds at scale.
Stored corpus
Analytical queries

Full-path storage

$5,750.00

/month · $115.00 per query (5.0 TB scanned)

Token storage

$0.345

/month · $0.0069 per query (300 MB scanned)

Query fees saved

$5,749.66

100% less scanned per query

On-demand bytes scanned at $0.023/GB (BigQuery / Snowflake blended) · Full-path: ~500 KB scanned per stored session · Token: ~30 B per stored session

Worked example: 10M sessions × 50 queries/mo → $5,750.00 full-path vs $0.350 tokens