# Contact Triage Loop – Draft-Stage Contact-First Approach (2026-07-09) **Status**: Draft / exploratory. Intended as a lightweight, iterative starting point that can be tested manually in small batches before any automation is written. **Context**: This note captures the refined direction discussed on 2026-07-09 for cleaning the customer-service project (currently >1700 open tickets). The previous keyword-on-subject approach is deprioritized. The stronger signal is **contact-first review** using recent activity history. ## Core Principle (Contact-First) - Group decisions by **contact** (author/email) rather than individual tickets. - For each contact, examine their **most recent 3–5 tickets/messages**. - Decide whether that contact (and most of their open tickets) can be safely closed as spam, stale, promotional, or low-value. - This directly targets the observed pattern that many spam/low-value tickets come from the same small set of repeat contacts. ## Draft Workflow (Repeatable in Small Batches) 1. **Discover candidate contacts** Find authors with multiple open tickets whose most recent activity is old or low-value. Starting signals: - Authors with 5+ open tickets - Authors whose most recent ticket is >60–90 days old - Contacts whose tickets are mostly short/generic with zero follow-up 2. **Per-contact review (the decision step)** For each contact, review their last 3–5 tickets and ask: - Is this contact mainly sending spam, sales pitches, or unrelated noise? - Has there been any meaningful reply or resolution path in the last 60–90 days? - Are the tickets duplicates, test messages, or one-off low-value imports? - Do they match existing `spam` or `promotional` tag patterns? 3. **Close decision rules** Close most or all of a contact’s open tickets if any of the following are true: - Recent pattern is clearly spam/stale/no-value - No meaningful activity or resolution path in 90+ days - Tickets are duplicates or low-value imports **Do not close** if the contact shows any recent legitimate customer issue or money-related matter. 4. **Execution & logging** - Use existing Redmine MCP tools or the semantic search CLI on mcpness for discovery. - Apply `spam`/`promotional` tags where appropriate for future filtering. - Record a short note on the contact or in a running log (which contacts were reviewed and outcome). 5. **Guardrails** - Never close tickets involving money, formal complaints, or recent customer replies. - When in doubt, skip the contact. - After bulk cleanup, maintain a monthly review of “Open tickets from contacts with no activity in 60+ days.” ## Why This Stays Draft-Stage for Now - Allows manual testing on the first 10–20 worst contacts to see what the real data looks like. - Validates the contact-history signal before investing in looping scripts or automation. - Directly supports shrinking the 1700+ open ticket count with low risk. ## Next Natural Steps (for the other thread) - Run the first discovery pass on the worst offending contacts using current tools. - Refine the decision questions or tagging rules based on what the contacts actually show. - Decide whether to move any part of this into a lightweight script once the manual pattern is validated. This note is a clean hand-off for the active thread working on the contact triage loop project.