↓ Skip to main content

show-me-the-money

Mine project conversation history and git logs using a Map-Reduce workflow with parallel Flash/Flash-Lite agy CLI workers to recover unimplemented features. Scans all sessions in the current project by default, running one worker per session in the Map step and resolving the latest snapshot in the Reduce step. Activate when looking for forgotten features, mining past sessions for unfinished work, or asking "what did I forget to build?".

Backlog finder #

Find features from past sessions that never shipped, without burning frontier quota. Scan all sessions in the current project by default using a Map-Reduce flow:

  1. Map: Run one fast agy Flash worker per session. Each worker lists every feature discussed as IMPLEMENTED or NOT IMPLEMENTED.
  2. Reduce: Compare all worker reports by date against git log to find the latest snapshot of open work.

1. Select scope #

Query $HOME/.gemini/antigravity/conversation_summaries.db with sqlite3 to list root sessions where parent_conversation_id = ''. Always skip the active session.

  • Single-project sweep by default: Scan all sessions for the current workspace across all time, ordered from oldest to newest.
bash
WORKSPACE_PATH=$(pwd)
sqlite3 -json "$HOME/.gemini/antigravity/conversation_summaries.db" "
  SELECT
    conversation_id,
    title,
    workspace_uris,
    step_count,
    datetime(last_modified_time) AS last_active
  FROM conversation_summaries
  WHERE parent_conversation_id = ''
    AND killed = 0
    AND step_count > 4
    AND workspace_uris LIKE '%file://${WORKSPACE_PATH}\"%'
  ORDER BY last_modified_time ASC;
"
  • Optional time sweep: Wait for the user to ask for a time window across all projects. Then swap the workspace_uris filter for AND last_modified_time >= datetime('now', '-N days').

2. Map: one agy Flash worker per session #

Check your agent tier in the system prompt. When running on a frontier tier such as Gemini 4 Argon or Pro:

  • Never read raw transcript.jsonl files in the main session.
  • Never call invoke_subagent for transcript mining. Subagents inherit your frontier tier and burn high-cost quota.
  • Always spawn one headless agy CLI worker per session pinned to a fast Flash tier such as flash-lite or flash-low.

Select the fastest Flash tier from agy models:

bash
FLASH_MODEL=$(agy models | awk '/flash-lite|flash.*low/ {print $1; exit}')

Read only the chat turns and git commits. Skip tool logs, ask_question prompts, system notes, and scratch files.

For each session, extract the non-empty USER_INPUT and PLANNER_RESPONSE messages from transcript.jsonl, plus the last 100 commits from git log when the workspace uses git. Pass both inside -p="..." because agy -p ignores stdin in text mode:

bash
FLOW=$(jq -r '
  select((.type == "USER_INPUT" or .type == "PLANNER_RESPONSE") and (.content | length > 0))
  | "[\(.step_index) \(.type)]: \(.content)"
' "$HOME/.gemini/antigravity/brain/${CONV_ID}/.system_generated/logs/transcript.jsonl")

GIT_LOG=$(git -C "$WORKSPACE_PATH" log --oneline -n 100 2>/dev/null)

agy --model "$FLASH_MODEL" --disable-slash-commands -p="Do not call any tools.
Read the conversation and git log below, and output a single message listing all features discussed with a binary status (IMPLEMENTED or NOT IMPLEMENTED).
For each feature, include:
- Status: IMPLEMENTED or NOT IMPLEMENTED
- Feature: short title and description
- Reasoning: why it was discussed
- Last known status: what happened to it in the conversation or git log
- Expected value: High, Medium, or Low (and why)

Session: ${TITLE} (${CONV_ID}) | Last active: ${LAST_ACTIVE}
Git log:
${GIT_LOG}

Conversation:
${FLOW}" > "/tmp/smtm-${CONV_ID}.md"

Run up to six agy workers in parallel background jobs using & and wait.

3. Reduce: compute the latest snapshot #

After all Map workers finish, read /tmp/smtm-*.md by date and check git log to build the latest snapshot:

  1. Drop finished items: If a later session or commit in git log shipped a feature from an older session, drop it.
  2. Drop rejected ideas: If the user rejected an idea or replaced it with a newer design later, drop it.
  3. Merge repeated items: Combine repeated mentions of the same open feature into one row linked to the latest session.

Score each remaining item by user impact, time saved, and system payoff:

  • High: Solves a recurring pain point, fixes a bug, unblocks a core workflow, or delivers high return for low effort.
  • Medium: Adds useful polish, speeds up a manual step, or delivers a solid feature with clear payoff.
  • Low: Covers minor cleanup, cosmetic tweaks, or optional polish.

4. Render the backlog table #

Output one compact Markdown table per project, sorted from High to Low. Keep each cell under 15 words in plain English—no commit hashes, step numbers, or file paths:

markdown
## <Project Name>

| Value | Item | Why | Status | Benefit |
| :--- | :--- | :--- | :--- | :--- |
| **High** | **<Short title>** ([chat](conversation://<id>)) — <1-line summary> | <Why it came up> | <Where it stopped> | <Payoff if built> |