Usage
Bootstrap
# Copy the example config (config.toml is gitignored — local secrets/paths live there)
Copy-Item config.example.toml config.toml
# Credentials are environment-only, never read from config.toml
$env:OPENAI_API_KEY = [Environment]::GetEnvironmentVariable("OPENAI_API_KEY", "Machine")
The analyzer fails before scanning if the key is unavailable. If a credential was ever stored directly in config.toml, rotate it through the OpenAI dashboard.
Run a full evaluation
# From D:\CTS\AnalyzeProjects
python Summarizer.py
Output lands under the location configured in config.toml (Dashboard/Project-Summaries/ by default): per-project raw JSON, a compiled index.json, and a compiled summary.md. When skip_already_processed is enabled, recent result files are reused rather than re-run — useful for resuming a partial evaluation without re-spending model calls.
Inspect the index without spending a model call
python -c "import Summarizer; c=Summarizer.load_config('config.toml'); print([(t.project_group, t.project_name) for t in Summarizer.discover_projects(c)])"
Useful for validating ProjectIndex.md changes before committing to a full (paid) run.
Run the test suite
python -m unittest discover -s tests -v
Tests use temporary directories and mocked HTTP requests — no paid API calls are made during verification.
Key config.toml fields
[project]
index_path = "D:/CTS/AnalyzeProjects/ProjectIndex.md"
out_dir = "D:/CTS/AnalyzeProjects/Dashboard/Project-Summaries/raw"
summary_path = "D:/CTS/AnalyzeProjects/Dashboard/Project-Summaries/summary.md"
[model]
name = "gpt-5-mini-2025-08-07"
api_host = "https://api.openai.com"
prefer = "openai"
[processing]
max_chars_per_file = 2500
max_total_chars = 90000
max_files_per_project = 60
max_retries = 3
skip_already_processed = true
max_workers = 3
[filtering] controls which file extensions are sampled and which directories are excluded (.git, node_modules, __pycache__, build outputs, etc.) — tuning this changes what evidence the model sees per project.
Getting the output into this docs site
The index.json and summary.md this tool compiles under Dashboard/Project-Summaries/ are copied into D:\.library\docusaurus\aptlantis.dev.drive\docs\ as index.json and processed-summary.md — that copy step is currently manual, not automated.