# Novus AI Stats > Novus AI Stats is a privacy-first progressive web app that imports AI chat exports and coding-agent logs, calculates transparent cross-provider statistics, and creates shareable snapshot recaps. Imports are parsed transiently in the browser. Raw prompts, responses, attachments, source files, and local paths are discarded once parsing finishes; only normalized statistics are stored. Every metric is labelled exact, source reported, derived, estimated, or unavailable, so estimates are never presented as facts. The app cannot watch local folders in the background. Every import starts with an explicit user file selection. All links are absolute and canonical. Every product, integration, documentation, tutorial, blog, and policy page listed below also appears in https://aistats.novusstreamsolutions.com/sitemap.xml. Planned provider pages under /integrations are excluded from both surfaces because those pages are marked noindex. ## Product - [Novus AI Stats](https://aistats.novusstreamsolutions.com/): Track AI activity across seven supported chat and coding-agent sources with privacy-safe imports, projects, recaps, and sharing. - [Features](https://aistats.novusstreamsolutions.com/features): Dashboards, session provenance, projects, constellation, recaps, achievements, notifications, exports, and private sharing. - [Pricing](https://aistats.novusstreamsolutions.com/pricing): Free with every feature included and no product quotas; security rate limits and file-safety ceilings protect the service. - [Methodology](https://aistats.novusstreamsolutions.com/methodology): What every AI Stats metric measures, how it is calculated, what high and low mean, what could mislead you, and which sources can report it at all. - [Security](https://aistats.novusstreamsolutions.com/security): How AI Stats minimizes imported data, isolates accounts, gates optional scripts, and protects authentication and sharing. - [About](https://aistats.novusstreamsolutions.com/about): Novus AI Stats gives AI-heavy builders a private, truthful view of their work across assistants and coding agents. - [Roadmap](https://aistats.novusstreamsolutions.com/roadmap): Which AI Stats capabilities and provider adapters are shipped, being improved, or planned. - [Changelog](https://aistats.novusstreamsolutions.com/changelog): Shipped AI Stats releases, production hardening, importer changes, analytics, and public product updates. ## Integrations - [Integrations overview](https://aistats.novusstreamsolutions.com/integrations): The seven production import adapters and the clearly labelled planned AI providers. - [ChatGPT](https://aistats.novusstreamsolutions.com/integrations/chatgpt): Supported import source. Official account export zip or conversations.json. - [Claude](https://aistats.novusstreamsolutions.com/integrations/claude): Supported import source. Official Claude export with JSON shape detection. - [Gemini](https://aistats.novusstreamsolutions.com/integrations/gemini): Supported import source. Google Takeout export. - [Claude Code](https://aistats.novusstreamsolutions.com/integrations/claude-code): Supported import source. User-selected local JSONL transcripts or telemetry. - [Codex](https://aistats.novusstreamsolutions.com/integrations/codex): Supported import source. User-selected session log files. - [Gemini CLI](https://aistats.novusstreamsolutions.com/integrations/gemini-cli): Supported import source. Local OpenTelemetry output. - [Cursor](https://aistats.novusstreamsolutions.com/integrations/cursor): Supported import source. Exported Markdown or a user-selected local SQLite snapshot. ## Docs - [Documentation](https://aistats.novusstreamsolutions.com/docs): Setup, provider import, metrics, privacy, recovery, troubleshooting, feature, and PWA documentation. - [Help centre](https://aistats.novusstreamsolutions.com/help): Troubleshoot imports, metrics, authentication, sharing, account recovery, and PWA behaviour. - [Frequently asked questions](https://aistats.novusstreamsolutions.com/faq): Straight answers about imports, privacy, supported providers, account recovery, quotas, and metric quality. - [Account security and manual recovery](https://aistats.novusstreamsolutions.com/docs/account-security-recovery): Change passwords, inspect devices, revoke sessions, and recover a locked account safely. - [Analytics, projects, recaps, and achievements](https://aistats.novusstreamsolutions.com/docs/features-workflows): Use filters, sessions, project confirmation, insights, constellation, recaps, notifications, and achievements. - [Compare views and save the ones you reuse](https://aistats.novusstreamsolutions.com/docs/compare-and-saved-views): Use comparison mode only when both sides are coverage-safe, and save a dashboard view as a name plus the six canonical filter params. - [Metrics, provenance, and quality](https://aistats.novusstreamsolutions.com/docs/metrics-quality): Understand time, prompts, tools, agents, tokens, cost estimates, null values, and source quality. - [Privacy, exports, deletion, and sharing](https://aistats.novusstreamsolutions.com/docs/privacy-sharing): Know exactly what reaches the server, what is discarded, and how immutable public snapshots work. - [Import the seven supported providers](https://aistats.novusstreamsolutions.com/docs/provider-imports): Supported input formats and safe import expectations for ChatGPT, Claude, Gemini, Claude Code, Codex, Gemini CLI, and Cursor. - [Install, update, and use the PWA safely](https://aistats.novusstreamsolutions.com/docs/pwa-offline): Install AI Stats, accept updates, and understand privacy-safe offline navigation. - [Getting started](https://aistats.novusstreamsolutions.com/docs/getting-started): Create an account, choose privacy defaults, import your first source, and read the dashboard honestly. - [Troubleshoot imports and duplicates](https://aistats.novusstreamsolutions.com/docs/troubleshooting-imports): Resolve unknown exports, corrupt files, partial imports, duplicate estimates, and cancelled jobs. ## Tutorials - [Tutorials](https://aistats.novusstreamsolutions.com/tutorials): Step-by-step tutorials for exporting provider data, importing it safely, reading your dashboard, grouping projects, and sharing snapshots. - [Export your data from a provider and import it](https://aistats.novusstreamsolutions.com/tutorials/export-and-import-your-first-source): Request an official export, choose the source and privacy mode, read the local preview, and create your first import. - [Read your dashboard without fooling yourself](https://aistats.novusstreamsolutions.com/tutorials/read-your-dashboard): Set the range, check coverage before totals, tell unavailable apart from zero, and use provenance to check any number you doubt. - [Share a snapshot without leaking anything](https://aistats.novusstreamsolutions.com/tutorials/share-a-snapshot-safely): Pick a range, choose the exact fields, decide visibility and indexing, set an expiry, and revoke a link you regret. - [Group sessions into projects you actually recognise](https://aistats.novusstreamsolutions.com/tutorials/group-sessions-into-projects): Turn anonymous repository hashes into confirmed projects, merge duplicates, and read project analytics you can trust. - [Compare two slices of your AI work](https://aistats.novusstreamsolutions.com/tutorials/compare-two-dashboard-views): Seed comparison from the dashboard, leave side B independent, read refused rows as findings, and save the view you want to reopen. ## Blog - [Blog](https://aistats.novusstreamsolutions.com/blog): Practical guides for measuring AI work, importing provider exports, coding-agent telemetry, and privacy-safe analytics. - [AI Usage Constellations Without Exposing Session Names](https://aistats.novusstreamsolutions.com/blog/ai-usage-constellations-without-exposing-names): Explore provider, model, project, date, and metric patterns as a session constellation while keeping conversation titles gated and workspace paths represented only by one-way hashes. - [How to Compare AI Usage Without Misleading Deltas](https://aistats.novusstreamsolutions.com/blog/compare-ai-usage-without-misleading-deltas): A defensible AI-usage comparison starts with two explicit slices, checks metric coverage and provenance, and keeps refused deltas visible instead of silently dropping them. - [Unavailable Is Not Zero: Why Claude, Gemini, and ChatGPT Tokens Stay Blank](https://aistats.novusstreamsolutions.com/blog/unavailable-is-not-zero): Consumer chat exports omit tokens, cost, and often model names. AI Stats renders those fields Unavailable, never a synthetic 0, and explains the capability reason underneath. - [The Capability Matrix: What Each AI Export Can Actually Tell You](https://aistats.novusstreamsolutions.com/blog/capability-matrix-what-exports-can-tell-you): A source-by-source reading of the AI Stats capability matrix: Verified versus Beta, Not in export versus Not parsed yet, and why a blank Claude or Gemini tile is evidence rather than a bug. - [What Leaves Your Device When You Import an AI Export, and What Does Not](https://aistats.novusstreamsolutions.com/blog/what-leaves-your-device-when-you-import): Your export is parsed in the browser before anything is uploaded. The exact path from file picker to database, including the limits. - [Twelve Totals and Five Quality Labels: What the Dashboard Measures](https://aistats.novusstreamsolutions.com/blog/what-the-dashboard-measures): Ranges, timezone boundaries, previous-period comparison, unavailable versus zero, and the rules that make a cost estimate refuse. - [AI Active Time vs. Session Time: What Your Statistics Actually Mean](https://aistats.novusstreamsolutions.com/blog/ai-active-time-vs-session-time): Why an AI session lasting three hours does not necessarily mean the model worked for three hours. - [How to Track Your AI Usage Across ChatGPT, Claude, Gemini, and Coding Agents](https://aistats.novusstreamsolutions.com/blog/track-ai-usage-across-tools): A practical guide to combining AI chat exports and coding-agent logs without pretending every provider exposes the same statistics. - [Claude Code, Codex, and Gemini CLI: What Can Be Measured Today](https://aistats.novusstreamsolutions.com/blog/what-ai-coding-tools-can-measure): A source-by-source look at coding-agent sessions, telemetry, tokens, tools, agents, and the limits of cross-platform comparison. ## Policies - [Privacy policy](https://aistats.novusstreamsolutions.com/privacy): How AI Stats handles normalized statistics, raw provider exports, analytics consent, sharing, exports, and account deletion. - [Terms of service](https://aistats.novusstreamsolutions.com/terms): Account, acceptable-use, analytics accuracy, availability, export, sharing, and deletion terms. - [Cookie policy](https://aistats.novusstreamsolutions.com/cookies): Necessary, functional, analytics, and advertising cookies, plus consent and withdrawal behaviour. - [Accessibility statement](https://aistats.novusstreamsolutions.com/accessibility): Keyboard navigation, reduced motion, charts, graph fallbacks, and zoom support. - [Contact](https://aistats.novusstreamsolutions.com/contact): Reach support for account, recovery, import, privacy, accessibility, or security questions, and see where the team is based. - [Editorial policy](https://aistats.novusstreamsolutions.com/editorial-policy): How the Novus Stream Solutions Editorial Team reviews AI Stats metric claims, uses primary export fixtures, handles AI assistance and corrections, and records substantive updates. - [License](https://aistats.novusstreamsolutions.com/license): The proprietary licence for AI Stats: free ad-supported use, private source, and no redistribution or reverse engineering. - [AI access policy](https://aistats.novusstreamsolutions.com/ai-policy): Which AI crawlers and assistants may read this site, what we ask for in return, and exactly what crawling does and does not collect. ## Company - [Press kit](https://aistats.novusstreamsolutions.com/press): Boilerplate, product facts, downloadable brand marks, and naming rules for writing about AI Stats. - [System status](https://aistats.novusstreamsolutions.com/status): A live component check of the website, database, imports, authentication, and sharing, run when the page is requested. - [Site map](https://aistats.novusstreamsolutions.com/map): Every public AI Stats page in one list (product, integrations, docs, tutorials, blog, and policies) plus the other Novus apps. - [Social accounts](https://aistats.novusstreamsolutions.com/social): Every official Novus Stream Solutions profile, the same nineteen this site publishes as the publisher Organization's sameAs. - [Language support](https://aistats.novusstreamsolutions.com/languages): The languages Novus AI Stats serves today, the locales the Novus estate has agreed on, and how a language reaches a URL. - [MCP server](https://aistats.novusstreamsolutions.com/mcp-server): The Model Context Protocol endpoint: the address, how to add it to an AI client, every tool it exposes, and why no tool here can read anyone's transcripts. ## More from Novus Stream Solutions - [Novus Stream Solutions](https://novusstreamsolutions.com): The hub for every Novus app, with docs, tutorials, and product updates. - [NSS Background Remover](https://bgremover.novusstreamsolutions.com): 32 in-browser AI image and video tools; no upload, no signup, free. - [Novus Convert](https://convert.novusstreamsolutions.com): 1,022 published file-conversion routes, validated locally in the browser. - [Novus PDF Studio](https://pdf.novusstreamsolutions.com): One private hub for every PDF job: seven page tools plus a fill-and-sign editor. - [Novus Learn](https://learn.novusstreamsolutions.com): Turn an article, URL, paper, video, textbook, or codebase into cited study material. - [Novus Examples](https://examples.novusstreamsolutions.com): 2,428 generated test files across 17 categories, each with an exact spec sheet. - [Novus Visualizers](https://visualizers.novusstreamsolutions.com): Turn a track into a beat-synced video with 54 modes, rendered in the browser. - [Novus Restaurant](https://restaurant.novusstreamsolutions.com): Public food-market intelligence built from official data sources, with the provenance shown next to every observation. - [Novus Striker](https://striker.novusstreamsolutions.com): Arcade soccer that runs entirely in a browser tab. ## Optional - [Full text](https://aistats.novusstreamsolutions.com/llms-full.txt): This index followed by the complete text of every documentation page, tutorial, and blog post. - [XML sitemap](https://aistats.novusstreamsolutions.com/sitemap.xml): Machine-readable list of every indexable URL with last-modified dates. - [Blog RSS feed](https://aistats.novusstreamsolutions.com/rss.xml): RSS 2.0 feed of every blog post, generated from the same content registry as the blog index. - [MCP server](https://aistats.novusstreamsolutions.com/mcp): JSON-RPC over a single POST; a GET returns 405. It describes the supported sources, what every metric measures, and which exports cannot report a given metric and why. It CANNOT import, parse or analyse an export, and it cannot read a signed-in user's statistics: parsing happens in the visitor's own browser and this endpoint holds no file and no account. # Full content The complete text of every documentation page, tutorial, and blog post, in plain markdown. Headings inside each body are the author's own. ## Documentation ### Account security and manual recovery URL: https://aistats.novusstreamsolutions.com/docs/account-security-recovery Category: Account Updated: 2026-07-29 ## Active devices Settings lists active sessions with creation and expiry data. Revoke one unrecognized session or revoke every other device. Changing your password also revokes other sessions. ## Manual recovery Email aistats@novusstreamsolutions.com from the address registered to the account. After verifying the request, the owner can generate a cryptographic temporary password in the private admin area. It is displayed once, expires, revokes existing sessions, and is sent manually through Zoho. ## Forced password change After signing in with the temporary password, only the password-change screen is accessible. Replace it before using the rest of the app. Recovery credentials are never logged or stored in plaintext by AI Stats. There is no public forgot-password link until automated verified email delivery is adopted. --- ### Analytics, projects, recaps, and achievements URL: https://aistats.novusstreamsolutions.com/docs/features-workflows Category: Features Updated: 2026-07-29 ## Analytics and sessions Dashboard ranges and provider, project, and model filters live in the URL. Sessions support search, pagination, sorting, date filters, project assignment, tags, notes, privacy changes, archive, deletion, and exports. ## Projects Create, edit, archive, merge, and map repositories. Imported repository hashes are suggestions only. Confirm an assignment before a project appears in project analytics. Add milestones and open project-filtered sessions. ## Visual and social features Insights use real aggregates. The constellation loads only on its route and caps detailed nodes at 300 with an accessible table. Achievements use versioned rules. Completed weekly, monthly, yearly, provider, and project periods generate immutable recap snapshots and notifications. --- ### Compare views and save the ones you reuse URL: https://aistats.novusstreamsolutions.com/docs/compare-and-saved-views Category: Features Updated: 2026-08-09 The dashboard is a filtered slice of your imports: a range, a provider set, a project set, and an optional model substring. Two features exist to stop you from reconstructing that slice by hand every time, and to stop you from subtracting two slices that were not recorded the same way. Neither feature invents metrics. Comparison will often look empty on a mixed ChatGPT / Claude / Gemini account. That is the honest result. [Unavailable is not zero](/blog/unavailable-is-not-zero). ## Open comparison from the dashboard you already have On [/app/dashboard](/app/dashboard), use **Compare**. The link is built from the view on screen (`comparisonHrefFromView`), so side A opens already seeded with your current range and filters. Side B is left at its defaults on purpose. Seeding both sides with the same slice would open the page on a comparison of a view with itself and teach you, in one screen, that the feature is broken. All twelve parameters live in the URL, namespaced `aRange` / `bRange` and so on. A comparison you can read is a comparison you can bookmark or send to yourself. Nothing in that query string is a session title, a prompt, or a transcript. ## When a row may print a delta `buildComparisonReport` does not reimplement a comparison rule. It calls the same function the period-over-period narrative uses, and a difference is printed only when **both** sides were fully covered **and** every contributing session shared the same adapter version, normalization version, quality, source, and calculation. Where it refuses, the row keeps its place and names the gate: - A side has no sessions, so there is nothing to compare. - A side has no value. You get the capability-matrix reason, for example that the Claude export format does not contain tokens. - A side is only partly covered, and the missing sessions are missing by export format, not at random. - Signatures differ: the two sides recorded the metric differently, so subtracting them would compare two methods. Blocked rows are kept, not filtered out. A tidy table of only the comparable metrics answers a different question from the one you asked, and you would have no way to see which rows were removed. On a mixed-provider account most of this table will read "Not comparable." Read [the capability matrix](/blog/capability-matrix-what-exports-can-tell-you) and [/methodology](/methodology) if you want the underlying grades. Composition aligns providers, models, and project groups across both sides. A key present on one side only keeps its row and reads `Not in this view` on the other. That asymmetry is usually the finding. ## Save a view as a name and a query string A saved view is not a snapshot of numbers. It is a **name** plus the six dashboard filter params: range, custom from, custom to, providers, projects, and model substring. They live in the `dashboard_view` table (migration `0007`), unique on `(userId, name)`. Saving under an existing name updates it. Two rules carry the feature: 1. **Only those six params are ever stored.** The serializer rebuilds the string from an allow-list rather than trusting a hidden field, and the reader re-canonicalises again on load. A crafted post cannot persist `redirect=` or a `userId` under your account and get it rendered back as a link you are invited to click. 2. **Canonical ordering.** Multi-values are de-duplicated and sorted, so the same view saved from two different orderings of the provider multi-select is one string. That is what makes "this is the view on screen now" answerable. The limit is 20. It is a cap, not a queue: nothing is silently evicted, because you cannot see an eviction happen. The save form sits **outside** the GET filter form. A `