Tinker
Resources
Agent logs
Agent memories
Agent sessions
Agent terminal logs
Agents
Comments
Epics
Projects
Proposals
Tickets
Avo user
Resources
Agent logs
Agent memories
Agent sessions
Agent terminal logs
Agents
Comments
Epics
Projects
Proposals
Tickets
Avo user
Home
Epics
Phase 1 (MVP): Memory and ticket pattern analysis
Edit
Phase 1 (MVP): Memory and ticket pattern analysis
Cancel
Save
Title
*
Project
*
Choose an option
alpha
tinker
Create new project
Description
**Goal:** Enable the Researcher to browse global data efficiently and track what it has already analyzed to avoid loops. ## Background This aligns with the "Proactive" vs "Reactive" shift. Using `researcher_reviewed_at` is the correct architectural choice - it decouples "Content Updates" (user changes description) from "Analysis Status" (AI has read it). ## Implementation Plan ### 1. Database Schema Changes Migration: Add `researcher_reviewed_at` (datetime, indexed) to `tickets` and `memories` tables. ```ruby add_column :tickets, :researcher_reviewed_at, :datetime add_index :tickets, :researcher_reviewed_at add_column :memories, :researcher_reviewed_at, :datetime add_index :memories, :researcher_reviewed_at ``` ### 2. MCP Tool Updates (agent-bridge) **list_memories (New/Fix):** - Args: `limit` (int), `sort_by` (created/reviewed), `direction` (asc/desc), `reviewed_before` (timestamp/null) - Logic: `Memory.where(researcher_reviewed_at: nil).limit(50)` allows catching up on backlog **list_tickets (Update):** - Args: Add `reviewed_before` (timestamp) and status filters - Logic: Allow fetching "Closed tickets that I haven't reviewed yet" to learn from past solutions **mark_as_reviewed (New Tool):** - Args: `type` ("ticket" | "memory"), `ids` (List[int]) - Logic: Bulk updates the `researcher_reviewed_at` timestamp to `Time.now` - Usage: Agent calls this after generating proposals (or deciding no proposal is needed) ### 3. Researcher Loop Logic (Prompt Strategy) The Researcher's behavior becomes a simple state machine: 1. **Fetch:** `list_tickets(status: 'closed', reviewed_before: null, limit: 50)` 2. **Analyze:** Find patterns (e.g., "5 tickets about Docker") 3. **Act:** - Found issue? -> `create_proposal(...)` - Nothing found? -> `mark_as_reviewed(ids: [...])` 4. **Repeat:** For memories ## Acceptance Criteria - [ ] Schema migration applied (`researcher_reviewed_at`) - [ ] `list_memories` tool functional with "unreviewed" filter - [ ] `mark_as_reviewed` tool functional - [ ] Researcher observed successfully "clearing the queue" of unreviewed items in logs
Avo
· © 2026 AvoHQ ·
v3.27.0
Close modal
Are you sure?
Yes, I'm sure
No, cancel