Client Feedback Processor
Transform client feedback emails into tracked, investigated, and resolved GitHub issues with professional response emails.
This workflow uses a Script-First approach: a deterministic Python script handles the "labor" of fetching and parsing emails, leaving the agent to handle the "judgment" of triaging and fixing issues.
Usage
When the user asks to "process feedback", "check emails from [domain]", or "turn feedback into issues":
-
Run the processor script:
bash
python3 ~/.agents/skills/client-feedback/scripts/process_feedback.py \
--domain "<client-domain>" \
--days 7 \
--out "./feedback-batch-$(date +%F)"
-
Read the report:
Load the generated
and the full body text files to understand the feedback.
-
Triage to GitHub:
For each distinct piece of feedback in the report, create a GitHub issue or update an existing one.
Phase 1: Intake (Script-Driven)
The
script performs these tasks in seconds:
- Searches Gmail for emails from the specified domain/sender.
- Fetches full message payloads.
- Downloads attachments automatically to a local directory.
- Extracts plain-text bodies to individual files for easy reading.
- Generates a summarizing threads, participants, and snippets.
Phase 2: Triage — GitHub issues
GitHub issues are the primary work board. One issue per item, not one per email.
Issue body template
markdown
## Reported by
[Person name] — [date] "[email subject]" (thread [threadId])
## Issue
[Verbatim quote if short, paraphrase if long]
## Status
[Open / awaiting client / in progress]
Apply labels based on category:
(always),
,
,
,
,
.
Phase 3: Investigate & Fix
Verify the feedback against the actual codebase. Grep globally for subjects of claims to ensure full removal or update.
Phase 4: Respond
Draft professional responses organized by email thread.
Key Rule: ALWAYS show the draft body text in chat before sending.
Signature policy
Keep signatures simple and professional. Avoid disclosing AI co-authorship unless the client relationship explicitly welcomes it.
Reference: Gmail multipart upload
If you need to draft a reply with inline images (e.g. before/after proofs), use the
multipart upload flow documented in the script comments or
logic.