Skip to main content

Find project-related ChatGPT conversations, review them in a desktop app, and move approved chats into a ChatGPT Project.

Project description

Project Chats

Project Chats is a local desktop tool that finds project-related ChatGPT conversations, helps you review them, and moves approved chats into a shared ChatGPT Project. It is designed for one-off ChatGPT Business/Team cleanup work where each user can only access their own chats — each person runs it on their own account, reviews the results, and ships the approved chats into a shared Project.

The GUI is the primary interface. A CLI is available for scripting.

Install

git clone https://github.com/michaeljeisner/project-chats.git
cd project-chats
python3 scripts/install.py

That creates a .venv in the repo, installs everything including Playwright, and writes ./project-chats-gui and ./project-chats launchers at the repo root. On macOS you can also double-click Project Chats.command after the script finishes.

Then launch the GUI:

./project-chats-gui

The GUI will offer to install browser automation (Playwright + Chromium) if it wasn't included, and the first run of Auto-Move will prompt you to sign into ChatGPT in the opened browser window.

PyPI release coming. Once the package is published you'll be able to install with pipx install 'project-chats[browser]' and skip the clone.

What It Does

  • Imports a ChatGPT export (conversations.json), normalized JSON, Markdown, or text files.
  • Scores conversations against a project profile (name + terms).
  • Lets you review high-confidence and possible matches in-app, with snippets.
  • Generates project memory files from approved chats:
    • project_brief.md
    • decisions.md
    • requirements.md
    • open_questions.md
    • source_chats.csv
  • Generates move_queue.html with links and per-chat move instructions.
  • Optionally drives ChatGPT in a browser to move approved chats into the selected Project.
  • Creates a handoff zip for teammates or a project coordinator.

What It Does Not Do

  • Does not scrape workspace-wide chats — only what your account can see.
  • Does not read browser cookies, passwords, or ChatGPT session storage.
  • Does not use undocumented ChatGPT APIs.
  • Does not use a ChatGPT Project API (OpenAI does not expose one). The optional auto-move step drives the visible ChatGPT UI in a browser.

Using the GUI

Launch:

project-chats-gui

The GUI walks you through four steps:

  1. New Project — name it and add terms (project names, aliases, people, repos, clients, domains, or any words that identify relevant chats).
  2. Import Chats — drop a conversations.json, normalized JSON, Markdown, or text. Classification runs automatically.
  3. Review — check the candidates, approve the right ones, hit Save & Continue.
  4. Move — open the move queue HTML for manual moving, or use Auto-Move to drive ChatGPT in a real browser.

The browser used by Auto-Move is a separate Playwright profile, not your everyday Chrome — sign into the ChatGPT account you want to use the first time. You can point at a different profile directory from Settings to use a different account.

Quick Start (CLI)

The CLI mirrors what the GUI does and is useful for scripting or headless runs:

project-chats init --project-name "Project Atlas" \
  --term "Atlas" --term "launch" --term "fidelity"

project-chats ingest ~/Downloads/conversations.json --user-label michael
project-chats classify
project-chats build
project-chats bundle

This writes everything under ./project-chat-run/:

project-chat-run/outputs/review_queue.html
project-chat-run/outputs/move_queue.html

Edit project-chat-run/outputs/review_queue.csv and set approved=true only for chats you want moved, then rerun project-chats build. The GUI does this in-app.

To move approved chats automatically through the ChatGPT UI:

project-chats auto-move

The first run opens a real browser profile at project-chat-run/browser-profile. Sign into ChatGPT there when prompted. The command writes project-chat-run/outputs/move_log.csv.

To use a specific browser profile/account from the CLI:

project-chats auto-move --user-data-dir ./profiles/alice

Multi-User Workflow

  1. Project coordinator creates a profile:

    project-chats init --project-name "Shared Project" --term "client" --term "repo-name"
    
  2. Send project-chat-run/project_profile.json to each participant.

  3. Each participant runs the same workflow on their own account.

  4. Each participant reviews and either uses the move queue HTML manually or runs project-chats auto-move while signed in.

  5. Participants send the generated zip to the coordinator if a consolidated memory pack is needed.

Inputs

ChatGPT Export

Personal ChatGPT exports include conversations.json. ChatGPT Business may not expose the same export flow, so this format is supported when available but not required.

Normalized JSON

[
  {
    "user_label": "alice",
    "conversation_id": "abc123",
    "title": "Migration notes",
    "url": "https://chatgpt.com/c/abc123",
    "messages": [
      {"author": "user", "text": "Project Atlas rollout plan..."},
      {"author": "assistant", "text": "Decision: use staged rollout..."}
    ]
  }
]

Markdown/Text

Markdown and text files are ingested as one chat per file. The file name becomes the chat title.

Safety

Only run this on chats you are authorized to process. Review the generated files before uploading them into a ChatGPT Project or sharing them with teammates.

The auto-move command is best-effort UI automation. ChatGPT can change labels or menus without notice, so run project-chats auto-move --dry-run first, then use --limit 1 for a supervised first move.

Hack on It

The install above already gives you an editable checkout. To run the tests:

python3 -m unittest discover -s tests

If you want to reinstall from scratch (e.g. after pulling changes):

python3 scripts/install.py

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

project_chats-0.2.0.tar.gz (28.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

project_chats-0.2.0-py3-none-any.whl (25.7 kB view details)

Uploaded Python 3

File details

Details for the file project_chats-0.2.0.tar.gz.

File metadata

  • Download URL: project_chats-0.2.0.tar.gz
  • Upload date:
  • Size: 28.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for project_chats-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3cdc992652f0bae9652b47e3c225df79c4bd34c0c8e423dce90773f9fa3451a9
MD5 44d02448d514f874e24bb84a269df66a
BLAKE2b-256 345e701310cde3a11f49a76cfd39c80909b45d970cb39868de8033ef28b58110

See more details on using hashes here.

File details

Details for the file project_chats-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: project_chats-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 25.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for project_chats-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3d968fffbd527c2b441caefd87015050a9d53bb7da7ec0af855749a4131cc918
MD5 5f733457575de4135e574a4484250bfd
BLAKE2b-256 39475edc2d9791959b1077eb1259f53cc580ec1c2442d3310d06b6c711e0f274

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page