Organized

This commit is contained in:
Jason Thistlethwaite
2026-10-17 20:50:35 -04:00
parent bd26c8894f
commit 9ee9eb3ec6
130 changed files with 24172 additions and 140 deletions
@@ -0,0 +1,57 @@
# 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.