Labs · Chat archaeology
Five hundred floors deep,
and you never counted any of it.
Drop a tavern chat export and dig: how many days and messages, how much of it happened after midnight, the floor you rerolled seven times, what the whole thing would cost at today's list prices, and where the slop crept in. Ends with a share card that carries numbers only — never your words. Nothing you drop here leaves your browser.
An original demo: June at the all-night diner, ~90 days and 300+ messages. Characters and plot are ours; the data shape is deliberate — a silence gap, a late-night drift, slop creeping in.
Files like these are private, so to be precise: this page has no upload endpoint. Parsing, stats and rendering all happen in your browser; refresh and it's gone. Not one byte reaches us.
Where this tool comes from
Four engines from our tool matrix, stacked into one report. The .jsonl reading follows the tavern export shape (metadata line 0, is_system rows counted but excluded, mes carrying the selected swipe) and additionally keeps what the others throw away: every swipe candidate, generation timestamps, and the per-message model name newer exports record. The AI-flavor curve runs the same v10.7 ruleset as our flavor checkup, scored per floor instead of per passage. Costs replay against a 2026-07-24 list-price snapshot across seven common tiers, with the context-refill arithmetic the window lens uses. All of it verified by 101 Node assertions, including a 12MB / 30,000-line synthetic export that parses in about half a second.
The counting conventions, spelled out: “words” counts CJK per character and Latin runs per word; “late night” is 23:00–05:59 local; tokens are estimated at 1.6 chars/token for CJK and 4 otherwise; a reroll is a swipe candidate beyond the first. Timestamps accept ISO strings, epoch numbers and the tavern's humanized format — anything unparseable is left out rather than invented, and if fewer than half the messages carry dates the clock section says so and steps aside.
What it can't do
Edit history can't be dug up — tavern exports don't record what a message said before you edited it, so the report doesn't pretend to know.
The cost section is a replay estimate, not an invoice: card, system prompt and lorebook are excluded (real usage is higher), cache discounts are ignored (real spend can be much lower — DeepSeek cache hits run ~1/50th of list), and the tokenizer is approximate. Both directions of error are printed next to the number.
The flavor ruleset is calibrated on Chinese prose only. Mostly-English logs get an honest disclaimer instead of a score, because we haven't done the English calibration work yet.
Group-chat exports parse, but the report reads everything that isn't you as one “them” — per-member breakdown isn't built.
FAQ
Is my chat log uploaded anywhere?
No. This page has no upload endpoint — parsing, statistics and the share-card rendering all run in your browser, and refreshing clears everything. Chat exports are among the most private files an RP player owns, which is exactly why the tool was built local-only. The share card is also structurally incapable of carrying chat text: its data type only has number and label fields.
Is the cost figure what I actually spent?
No, and the page says so next to the number. It's a replay estimate: every AI reply (including every swipe you rerolled) is priced as one request at the 2026-07-24 list-price snapshot, with the full history refilled each turn up to the context window you pick. It excludes your character card, system prompt and lorebook (so real usage is higher), ignores cache discounts (DeepSeek cache hits cost ~1/50th of list, so real spend can be far lower), and rough-counts tokens instead of using each provider's tokenizer. If your export records a model name per message — newer SillyTavern builds do — the report prices by that tier; otherwise you get a floor-to-ceiling range.
What files does it accept?
SillyTavern chat exports: .jsonl files with one JSON object per line and an optional metadata line at the top. Foreverse exports the same shape. Missing fields degrade gracefully — no timestamps means the clock section steps aside, corrupted lines are skipped and counted. You can drop up to 8 files at once and the report adds a cross-character comparison table. Files up to 48MB parse in chunks so the page stays responsive.
How is the AI-flavor curve computed?
Each AI reply is scored 0–5 by the same rule engine as our AI-flavor checkup (v10.7 lightweight port): a stock-phrase blacklist at low weight and sentence-pattern molds at high weight, calibrated on Chinese roleplay prose for zero false kills on human-written hit cards. The curve shows the score per floor and marks where a sustained drop begins — the “it gets robotic after floor N” feeling, measured. It's a lint pass, not a detector, and it's honest about only supporting Chinese: mostly non-Chinese logs get a disclaimer instead of a forced verdict.