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 4: 24/7 operation, daily digest, and batch approval
Edit
Phase 4: 24/7 operation, daily digest, and batch approval
Cancel
Save
Title
*
Project
*
Choose an option
alpha
tinker
Create new project
Description
**Goal:** Build a dedicated, custom UI for humans to efficiently review, approve, and reject Researcher proposals. ## Background The Researcher agent generates proposals asynchronously. We need a "Control Center" where developers can review these items efficiently. The UI must support high-volume triage (batch actions) and provide feedback loops (rejection reasons). ## Implementation Plan ### 1. UI Layout & Navigation - **Route:** `/researcher/proposals` (or similar) - **Controller:** `ProposalsController` **Dashboard Sections:** 1. **Metrics Header:** - Pending Count - Approval Rate (Last 7 Days) - Total Actions Today 2. **Filter Bar:** - **Status:** Pending (Default), Approved, Rejected - **Confidence:** High, Medium, Low - **Type:** Refactor, Feature, Cleanup, Test Gap 3. **Main List (Cards):** - Sorted by `Priority` (High to Low) then `Confidence` ### 2. Proposal Card Design Each proposal rendered as a card containing: - **Header:** Title + Type Badge + Confidence Badge - **Body:** `reasoning` text - **Evidence Section:** Render `metadata['evidence_links']` as clickable links: - `type: ticket` → Link to `/tickets/:id` - `type: memory` → Link to memory view - `type: code_file` → Link to GitHub/Repo view or file viewer - **Metadata:** Estimated Effort / Value - **Actions:** Approve / Reject buttons ### 3. Batch Operations For high-volume triage: - **Selection:** Checkboxes on each card - **Floating Action Bar:** Appears when items are selected - `[Approve Selected]` - `[Reject Selected]` → Prompts for shared rejection reason ### 4. Rejection Feedback Flow Critical for Agent learning: - When "Reject" clicked, show text input/modal: *"Why is this being rejected?"* - **Quick Reasons:** (Optional chips) "Hallucination", "Duplicate", "Too Risky", "Trivial" - **Save:** Update `status: rejected` and `rejection_reason: ...` ### 5. Technical Implementation - **View Layer:** Rails Views with Hotwire/Turbo for async updates - **Helper:** `ProposalHelper` to parse and render JSON `evidence_links` safely - **Controller Actions:** - `index`: Lists with filters - `approve`: Executes proposal logic (converts to ticket/action) - `reject`: Updates status + reason - `batch_action`: Handles bulk ID updates ## Acceptance Criteria - [ ] `/proposals` page exists and lists pending proposals - [ ] Users can filter by Confidence and Type - [ ] Proposal Cards correctly render JSON evidence links (not raw JSON) - [ ] "Approve" button works and updates UI via Turbo/Ajax - [ ] "Reject" button forces user to provide a reason (text) - [ ] Batch Select → Batch Reject works - [ ] "Approved" proposals are visually distinct or moved to history tab
Avo
· © 2026 AvoHQ ·
v3.27.0
Close modal
Are you sure?
Yes, I'm sure
No, cancel