Local-first AI usage analytics for your own exported conversations.
PromptLens turns personal AI conversation exports into readable, local reports: topic clusters, prompt patterns, unresolved loops, and workflow signals.
python -m promptlens analyze conversations.jsonPromptLens is a work in progress. For the broader product thesis, example prompts, and why this category matters, see Ryan's Google Cloud NEXT writing-challenge article:
Google Just Unlocked Something Huge With Gemini Memory Import, Here’s How to Actually Profit From It
That piece explains the larger workflow: once a user can import or export AI history, the next step is turning that archive into practical intelligence, voice profiles, unfinished-idea mining, pattern recognition, personal SOPs, and decision archaeology. PromptLens is the local/open-source prototype layer for that same direction.
AI platforms already understand broad usage patterns: what people ask for, where conversations loop, which workflows keep recurring, and how prompt structure changes outcomes.
Individual users usually do not get that visibility into their own exports.
PromptLens is a small, readable prototype for personal AI-usage analytics. It processes exports locally and produces artifacts that help a user answer questions like:
- What do I keep asking AI systems to help with?
- Where do conversations loop without resolving?
- Which prompt structures do I use most?
- What workflows are becoming repeated operating patterns?
This repo sits in the same product direction as the AI-usage analytics and personal-workflow insight tools recently highlighted around Google Next / hackathon-style demos: users and teams want visibility into how they actually use AI, not just access to another chat box.
PromptLens is independent, unaffiliated, and deliberately local-first: no cloud account, no telemetry, no API calls, and no vendor lock-in.
| Module | What It Does |
|---|---|
| Topic Clustering | Groups conversations into discovered topics using TF-IDF |
| Intent Classification | Labels prompts: question, instruction, brainstorm, debug, creative, meta |
| Loop Detection | Finds conversations where similar requests recur without clear resolution |
| Prompt Shapes | Categorizes prompt structure: short command, medium instruction, essay, code paste, etc. |
| Workflow Signals | Summarizes vocabulary, prompt length distribution, activity patterns, and repeated workflows |
pip install -r requirements.txtRequires Python 3.10+, scikit-learn, and numpy. No GPU, API key, or network access required.
For ChatGPT: Settings → Data Controls → Export Data → download conversations.json.
python -m promptlens analyze conversations.jsonOptions:
--output-dir DIR Output directory (default: ./promptlens-output)
--topics N Number of topics to discover (default: 20)
--similarity-threshold F Loop detection threshold (default: 0.4)
promptlens-output/
├── report.md ← human-readable summary
├── topics.json ← topic clusters with keywords and conversation IDs
├── intents.json ← intent distribution across prompts
├── loops.json ← detected recurring conversation loops
└── shapes.json ← prompt-shape and workflow-signal summary
PromptLens v0.1.0
Input: conversations.json
Output: ./promptlens-output/
[1/5] Parsing conversations...
→ conversations.json: 215 conversations (chatgpt)
→ Total: 215 conversations, 695 user messages
[2/5] Extracting topics...
✓ topics.json
[3/5] Classifying intents...
✓ intents.json
[4/5] Detecting loops...
✓ loops.json
[5/5] Analyzing prompt shapes...
✓ shapes.json
Generating report...
✓ report.md
- No hosted model required. Topic clustering uses TF-IDF + k-means from scikit-learn.
- Rule-based classification. Intent and prompt-shape labels are simple, inspectable heuristics.
- Deterministic. Same input, same output.
- Readable code. The prototype is intentionally small enough to audit quickly.
Currently accepts:
- Official OpenAI export,
conversations.jsonfrom Settings → Data Controls → Export. - Any export with the same conversation
mappingstructure.
See schema.json for the input schema.
- Zero network calls. The pipeline does not contact external services.
- Read-only input. Source exports are never modified.
- No telemetry. No analytics, tracking, or usage collection.
- Local output. Reports stay in the directory you choose.
Do not commit real conversation exports or generated private reports to a public repository.
- HTML dashboard prototype
- Comparison mode across exports/time periods
- Prompt quality heuristics: specificity, context density, constraint clarity
- Time-series analysis: how prompting changes over time
- Claude / Gemini / Grok export adapters
- Plugin system for custom analyzers
MIT
Built by Ryan Vonbrubeck.