Chandler · usage
← Back to sessions ← Back to this session

Prompt

What is our average customer LTV (total MRR over customer lifetime to date)?

Outcome
success
Cost
$34.4365
excludes embeddings
Latency
141.5 s
Query attempts
1
Rows returned
1
Tokens
1,950,944 / 7,664
in / out

Request

request_id
a2688a34-c061-4628-b083-d4b38df372c7
When
2026-09-17 14:59
Tool
ask
User
yordan@dext.com · Yordan Todorov Ivanov
Identity
google
Session
357881ba-78f7-42c4-96dd-e592dfbfbd5a
Model
gpt-6-astra

Route taken

Topic
Bookings
Omni model
e407bba6-4fae-4079-ac4e-cd6cf8fdf6f8
Match method
agent loop
Nudge shown
—
Question shape
lookup
Caveat raised
—
Sharper question offered
—
Shown to user
Basis: Coverage check for customer lifetime MRR: count Direct customers whose first paid subscription preda, All available month-end history through 17 September 2026. Governed filters applied.

Per-step detail — each LLM call, each Omni request, each rejected draft — is traced to stdout only and is not stored, so it cannot be shown here. Query attempts counts run_query executions, not model turns.

SQL that ran

WITH booking_month_grain AS (
  SELECT DISTINCT
    omni_dbt__eds_calendar_day."DATE_DAY" AS "Snapshot Date",
    omni_dbt__eds_bookings."PRIMARY_KEY" AS "Booking Primary Key",
    omni_dbt__eds_all_accounts."DERIVED_ACCOUNT_ID" AS "Account ID",
    omni_dbt__eds_bookings."FIRST_EVER_PAID_SUBSCRIPTION_STARTED_AT" AS "First Paid Subscription Date"
  FROM PROD."EDS_ALL_ACCOUNTS" AS omni_dbt__eds_all_accounts
INNER JOIN PROD."EDS_CALENDAR_DAY" AS omni_dbt__eds_calendar_day
  ON omni_dbt__eds_calendar_day."DATE_DAY" >= omni_dbt__eds_all_accounts."VALID_FROM" AND omni_dbt__eds_calendar_day."DATE_DAY" <= omni_dbt__eds_all_accounts."VALID_TO"
LEFT JOIN PROD."EDS_BOOKINGS" AS omni_dbt__eds_bookings
  ON omni_dbt__eds_all_accounts."DERIVED_ACCOUNT_ID" = omni_dbt__eds_bookings."DERIVED_ACCOUNT_ID" AND omni_dbt__eds_calendar_day."DATE_DAY" >= omni_dbt__eds_bookings."VALID_FROM" AND omni_dbt__eds_calendar_day."DATE_DAY" <= omni_dbt__eds_bookings."VALID_TO"
  WHERE omni_dbt__eds_calendar_day."DATE_DAY" <= '2026-09-17'
    AND (omni_dbt__eds_calendar_day."DATE_DAY" = date_trunc('month', omni_dbt__eds_calendar_day."DATE_DAY" + interval '1 month') - interval '1 day') = TRUE
    AND omni_dbt__eds_all_accounts."FINANCE_ACCOUNT_TYPE" = 'Corporate'
    AND omni_dbt__eds_bookings."HAS_PAID_SUBSCRIPTION" = TRUE
    AND COALESCE(omni_dbt__eds_all_accounts."IS_DEXT_DEMO", FALSE) = FALSE
    AND omni_dbt__eds_all_accounts."FRANCHISE_NAME" IS NULL
    AND (omni_dbt__eds_all_accounts."SALESFORCE_ACCOUNT_TYPE" != 'Reseller' OR omni_dbt__eds_all_accounts."SALESFORCE_ACCOUNT_TYPE" IS NULL)
), coverage AS (
  SELECT
    "Snapshot Date" AS "Snapshot Date",
    "Account ID" AS "Account ID",
    "First Paid Subscription Date" AS "First Paid Subscription Date",
    MIN("Snapshot Date") OVER () AS "Earliest Available Snapshot"
  FROM booking_month_grain
)
SELECT
  MIN("Snapshot Date") AS "Earliest Available Month-End",
  MAX("Snapshot Date") AS "Latest Available Month-End",
  MIN("First Paid Subscription Date") AS "Earliest First Paid Subscription Date",
  COUNT(DISTINCT "Account ID") AS "Number of Distinct Accounts",
  COUNT(DISTINCT CASE WHEN "First Paid Subscription Date" < "Earliest Available Snapshot" THEN "Account ID" END) AS "Customers Starting Before Available History"
FROM coverage
LIMIT 1

Feedback

No feedback linked to this request.

Cost is the LLM completion spend LiteLLM priced for each call, summed per request. Chandler is running on the Codex CLI, which draws ChatGPT plan quota rather than per-token API billing, so this figure is not money paid — it is what the same traffic would have cost on the API, priced from the token counts Codex reports. Read it as the size of the bill avoided. Two known limits: embedding spend is not recorded, so retrieval and matching cost is missing, and because the figure is one sum per request it cannot be split by model within a request — a request's classifier and agent calls can use different models while llm_model holds only one name. Only authenticated calls are logged, USAGE_LOG_ENABLED can switch logging off, and log writes are fail-soft — this is not a complete record of traffic. Questions are grouped into sessions: a session is exact when the caller echoed its id back to us and otherwise inferred from a 30-minute gap in that user’s activity, so a grouping is only as good as the source shown on the session itself. A call with no attributable user gets no session at all; those questions are listed separately rather than dropped.