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
Create proposal system: storage, API, and admin interface
Edit
Create proposal system: storage, API, and admin interface
Cancel
Save
Title
*
Project
*
Choose an option
alpha
tinker
Create new project
Description
Create the proposal storage and management system that the Researcher agent will use. This is the foundation for all Researcher functionality. ## Data Model **Proposals table:** ```ruby create_table :proposals do |t| t.string :title t.string :proposal_type # "new_ticket", "memory_cleanup", "refactor", "test_gap", "feature" t.text :reasoning t.string :confidence # "high", "medium", "low" t.string :priority # "high", "medium", "low" t.string :status # "pending", "approved", "rejected", "executed" t.json :metadata # {evidence_links: [], effort_estimate: "2h", value_estimate: "high"} t.integer :ticket_id # optional: links to related ticket t.integer :agent_id # optional: which researcher created it t.timestamps end ``` **Metadata schema:** ```json { "evidence_links": [ {"type": "ticket", "id": 123, "description": "Similar issue"}, {"type": "memory", "id": 456, "description": "Related knowledge"}, {"type": "code_file", "path": "app/services/foo.rb", "description": "File to refactor"} ], "effort_estimate": "2h", "value_estimate": "medium", "duplicate_count": 5, // for refactoring proposals "savings_estimate": "6h/week" // for automation proposals } ``` ## API Endpoints **POST /api/v1/proposals** - Create new proposal - Requires: title, proposal_type, reasoning - Optional: confidence, priority, metadata **GET /api/v1/proposals** - List proposals with filters - Filters: status, proposal_type, priority, agent_id - Pagination: offset/limit - Sort by: created_at, priority, confidence **POST /api/v1/proposals/:id/approve** - Approve proposal and execute - Converts to ticket/action based on type - Stores rejection_feedback if later rejected **POST /api/v1/proposals/:id/reject** - Reject proposal with feedback - Stores: rejection_reason - Researcher learns from this **POST /api/v1/proposals/approve_batch** - Bulk approve multiple proposals - Body: {proposal_ids: [1,2,3]} - Executes all in sequence ## Proposal Types & Execution Logic | Type | On Approve: | |------|-------------| | `new_ticket` | Creates ticket via create_ticket | | `memory_cleanup` | Updates/deletes/merges memories | | `refactor` | Creates refactor ticket with evidence | | `test_gap` | Creates ticket with test specs | | `feature` | Creates feature ticket | | `skill_proposal` | Creates draft skill file | ## Avo Admin - List view with filters (status, type, priority) - Show proposal details with evidence links - Approve/Reject buttons - Batch approve action - Show rejection history for learning ## Acceptance Criteria - [ ] Proposals table exists with all fields - [ ] Metadata stored as JSON with evidence_links - [ ] API endpoints work (create, list, approve, reject, batch) - [ ] Proposals link to tickets, memories, code files - [ ] Avo admin interface for proposal management - [ ] Searchable and filterable
Avo
· © 2026 AvoHQ ·
v3.27.0
Close modal
Are you sure?
Yes, I'm sure
No, cancel