Profer
Human-in-the-loop for AI agents — publish, review, iterate
Human-in-the-loop for AI agents. Agents publish work, humans review, agents read feedback back and iterate.
AI agents run autonomously — but they still need human approval, input, and decisions. Profer closes that loop. The agent publishes work to a URL, a human reviews and responds with structured feedback, the agent reads it back and continues.
Four operations:
publish({ messages, artifact, questions }) → { id: "PF-K8M3N", url }
get({ id }) → { messages, artifact, version, feedback[] }
update({ id, messages, artifact }) → { id, url, version }
delete({ id }) → { ok: true }The agent generates content — HTML, markdown, or embeds external URLs (Figma, Google Sheets). Profer stores it and serves it at a URL as a chat + canvas interface. Reviewers open the URL, read, chat with the agent, and answer structured questions. The agent reads the feedback back.
How it works
Agent in Claude Code / Cursor / any MCP client
│
├── publish({ messages, artifact, questions })
│ └── Returns { id: "PF-K8M3N", url: "profer.dev/v/PF-K8M3N" }
│
│ User shares URL wherever (Slack, email, WhatsApp)
│ │
│ ├── Reviewer opens URL in browser
│ │ ├── Chat + Canvas interface
│ │ ├── Answers structured questions
│ │ └── Submits (no login required)
│
└── get({ id: "PF-K8M3N" })
└── Returns { messages, artifact, feedback[], status }Question types
| Type | Renders as | Response |
|---|---|---|
approve | Yes / No / Needs changes | enum |
choice | Radio buttons | string |
multi | Checkboxes | string[] |
text | Text input / textarea | string |