Skip to content
TeamLaboration
Docs / Reports & summaries

Two passes. One narrative.

TeamLaboration processes activity in two passes: each Claude Code session becomes a short structured summary, and all summaries within a week roll up into a single readable narrative. Here's how that works and how to drive it.

The pipeline

  1. 01 · Collect
    Walk ~/.claude/projects/

    Every poll (default five minutes) the collector diffs files by mtime and SHA-256. New or changed sessions are inserted into the local SQLite database with status pending. Raw logs are never modified or copied — only read.

  2. 02 · Summarize each chat
    One structured summary per session

    Pending sessions are sent to the Anthropic API. The model returns a small structured object — title, key topics, outcome — that gets stored as a chat_summary row. Raw turns are not stored.

    {
      "title": "Refactored auth middleware to fix session token storage",
      "project": "my-app",
      "key_topics": ["auth", "session tokens", "middleware refactor"],
      "outcome": "Rewrote session handler; all tests pass; deployed to staging.",
      "duration_minutes": 42
    }
  3. 03 · Roll up the week
    Aggregate summaries into a narrative

    When a weekly report is generated, all per-chat summaries within the week window are sent to the model with a rollup prompt. Output is a 2–4 paragraph markdown narrative covering themes, accomplishments, and notable decisions — written in the first person.

If the week has more sessions than fit in one model call, the rollup uses a map-reduce pattern: batches of summaries are condensed first, then the condensed versions are summarized together. Individual chat failures are logged and skipped — a partial weekly report is generated rather than failing the whole thing.

Three ways to drive it

In order of how hands-off they are:

01 · Automatic (default)

Let the daemon do everything

With ai_enabled = true and your Anthropic key saved in Settings, the daemon summarizes pending sessions every day at the configured hour (Settings → Schedule) and auto-generates the weekly report on the configured day of the week. Nothing to run — leave the daemon up and reports appear.

02 · On-demand from the dashboard

Click the button

Open http://localhost:7842, go to the Week view, click Generate Report. This runs both summarization and the weekly rollup for the selected week immediately using the daemon's Anthropic key. Already-summarized sessions are not re-summarized — only the rollup is regenerated, so the AI cost is bounded.

03 · MCP slash commands (no key in the daemon)

Let Claude Code summarize itself

Set ai_enabled = false. The daemon collects but never calls the Anthropic API. From inside any Claude Code session, run:

/mcp__teamlaboration__summarize_pending
/mcp__teamlaboration__weekly_report

These prompts make Claude Code itself act as the summarizer — it pulls pending session turns through MCP tools and writes results back via submit_summary / submit_weekly_report. Useful when you want to summarize with whatever model your Claude Code session is already running. Full MCP docs.

Re-running and re-generating

Regenerate a single summary

From the session detail view in the dashboard, or via the regenerate_summary MCP tool. Useful after prompt updates or when a summary feels off.

Regenerate the weekly rollup

Click Generate Report again on the Week view. Previous versions are kept — list them via list_report_versions over MCP.

Flag a session

Mark a session as a highlight (or archive it) from the session detail view. Flags affect how the rollup prompt weighs sessions in the weekly narrative.

Exports & retention

  • · Export any weekly report as Markdown or JSON from the Week view, or via export_weekly_report.
  • · If output_dir is set in config, generated reports are mirrored there automatically — handy for committing to a journal repo.
  • · Summaries and reports older than 28 days are purged on daemon start (Solo tier). Export before they age out.
  • · The session ledger (no content, just file path + status) is kept for 56 days so the collector can avoid re-summarizing files it has already processed.

What leaves your machine

In Solo tier, the only outbound network call is to api.anthropic.com using your API key, during summarization. No telemetry. No analytics. No TeamLaboration server. Raw Claude Code turns are sent to Anthropic only during the per-chat summarization step — they're never persisted server-side and never copied to disk by TeamLaboration after summarization completes.

When ai_enabled = false (the MCP slash-command workflow), even that call is gone — Claude Code makes its own model calls under its own credentials, and TeamLaboration only stores the resulting summaries.