Organized
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user