One control room for the whole AI-engineering portfolio. It does four things:
- Holds every project's todo list as plain markdown in
todos/. - Tracks progress visually, every day - a scheduled job counts checked boxes, records a snapshot, and rebuilds a dashboard published to GitHub Pages.
- Runs a Claude code-quality review on every pull request across all project repos, from one centrally-managed workflow.
- Drives planning, tracking, and reviewing via LLM agents - a LangGraph supervisor
that routes natural-language requests to Planner / Tracker / Reviewer / Historian workers,
with durable, queryable conversation memory (see
agents/andAGENTS.md).
Once Pages is enabled: https://robertjam954.github.io/project_planning_tracking_code_review/
The board shows an overall completion ring, per-project progress bars, and a 30-day trend sparkline for each project (and for the portfolio as a whole).
Each project has one file in todos/, e.g. todos/genie-tcga-brainmet.md:
# GENIE TCGA BrainMet
> research pipeline · [repo](https://github.com/Robertjam954/genie_tcga_impact_brainmet)
- [ ] Run the ETL: harmonize scripts never executed
- [x] Add requirements.txt with pinned versionsTo update progress, check a box ([ ] -> [x]) and push. The daily job
(or any push touching todos/) recounts and refreshes the dashboard.
projects.json is the registry that maps each todo file to its
repo, colour, and live URL.
Every project repo carries its own STATUS.md (same checkbox format). The daily
job runs scripts/sync_status.py first, which pulls each repo's STATUS.md into
todos/<slug>.md - so a project's live status rolls up to this board
automatically. Public repos sync with the default token; private repos need a
PAT with repo scope in a PORTFOLIO_TOKEN secret. Repos without a STATUS.md
keep their local todos/<slug>.md as the source.
Every agentic AI app is planned against one fixed component matrix so nothing gets silently dropped — infra/DB, agents, tools, memory, prompts, frontend, and tracing are each either built, reused, or explicitly marked N/A with a reason.
-
Prep workflow:
docs/agentic-app-prep-workflow.md— the three phases (curate context → plan → implement) and what each component category means, mapped to both the FastAPI+Anthropic template and multi-agent frameworks (LangGraph / MS Agent Framework). -
Plan template:
templates/agentic-app-plan-template.md— includes a mandatory component-coverage matrix. -
Status ledger:
templates/agentic-app-STATUS.md— one checkbox section per category; rolls up to the dashboard. -
Generate a starter ledger for a new project:
python scripts/new_agentic_project.py "My Agent App" --framework LangGraph -o STATUS.mdOr use the agent:
python -m agents "plan a new invoice parser agent"
The reference implementation
(agentic-ai-app-template)
has a part for every category.
The control room itself is now agentic. See AGENTS.md for setup and usage.
# Install agent dependencies
pip install -r agents-requirements.txt
cp .env.example .env # add ANTHROPIC_API_KEY + optional PORTFOLIO_TOKEN
# Plan a new app
python -m agents "plan a new chatbot for my product docs"
# Track progress
python -m agents "which projects are stalled"
# Code quality summary
python -m agents "show me common quality issues"
# Recall past sessions
python -m agents --list-sessions
python -m agents --history <session_id>See docs/agents-plan.md and docs/adr/ for architecture.
scripts/build_demo_dashboard.py regenerates a public, fake-data copy of the
board (same renderer, invented projects) for portfolio screenshots — published at
portfolio-dashboard-demo. It never touches real data.
.github/workflows/daily-dashboard.yml runs at 07:00 UTC (and on every push
to todos/). It runs scripts/build_dashboard.py, which:
- counts
- [ ]/- [x]lines per project, - appends today's counts to
data/history.json(one row per day, idempotent), - renders
docs/index.html, - commits the refreshed board + history and deploys it to Pages.
templates/claude-review.yml is the review workflow (based on
anthropics/claude-code-action@v1 with track_progress: true). It reviews each
PR for quality, bugs, security, and performance, posting inline comments.
Deploy it to every project repo in one shot:
# sets the workflow file AND the ANTHROPIC_API_KEY secret on each repo
ANTHROPIC_API_KEY=sk-ant-... ./scripts/deploy_review_workflows.sh
# or just push the workflow files and set secrets yourself later
./scripts/deploy_review_workflows.sh --no-secretRepos covered are read from projects.json. Each repo needs an
ANTHROPIC_API_KEY secret for the review to run.
The initial lists were generated from the Portfolio Ops todo app export:
python scripts/seed_todos_from_app.py path/to/todos.jsonAfter the first seed the markdown files are the source of truth - edit them directly.
todos/ one markdown todo list per project
projects.json registry: track -> repo, colour, live URL
data/history.json daily progress snapshots (trend data)
docs/index.html generated dashboard (GitHub Pages)
scripts/
build_dashboard.py count todos, snapshot, render dashboard
seed_todos_from_app.py one-time seed from the todo app export
deploy_review_workflows.sh push the review workflow to every repo
templates/claude-review.yml the per-repo PR review workflow
.github/workflows/daily-dashboard.yml daily build + Pages deploy