Inspiration

AI gives creative teams more options than ever, but the reasoning behind a final choice often disappears in chat, spreadsheets, or handoff notes. The next teammate or model sees the result without knowing the brief, rejected alternatives, or why the decision made sense at that moment. We built FinalPick around a question raised by agentic browsing: how can an agent reduce review work without quietly taking over human judgment?

What it does

FinalPick is a browser-based decision workspace for reviewing actual text and image candidates. Each round contains one medium, a brief, constraints, and evidence, so options are compared on equal terms. A person selects a candidate, records reasons and an optional note, and saves that context as decision memory. In later rounds, FinalPick requires a current assessment before revealing compatible past decisions as useful, non-binding precedent. Six WebMCP tools let an agent inspect the review and candidates, retrieve precedent, and stage a comparison or follow-up question in the same visible interface. The agent can commit only after a person creates a short-lived, one-time approval in the page.

How we built it

We built FinalPick as a static top-level web app using HTML, CSS, and JavaScript ES modules, with localStorage for versioned rounds, staged work, and decisions. When a browser exposes document.modelContext.registerTool, the page registers six narrow WebMCP tools; without it, the complete human workflow still works. Tool schemas reject extra fields, read tools are annotated as read-only, and UI actions and tool handlers share the same validated state layer. We used Codex in a recursive improvement loop: define a small slice, implement it, run unit and Playwright browser checks, inspect responsive captures and UX feedback, then use those findings to shape the next slice. This loop expanded the prototype from built-in image examples to user-created text and HTTPS-image rounds while preserving the authority boundary.

Challenges we ran into

The hardest challenge was making WebMCP essential rather than decorative. A chat recommendation alone would not improve the product, so agent work had to appear visibly in the review and reduce copying between systems. We also had to make chained tool calls reliable by returning the candidate, analysis, decision, and approval identifiers needed by later calls. Human approval introduced edge cases around changed selections, expiration, cancellation, and token reuse. Finally, early screens felt like dense metadata dashboards, so we progressively disclosed evidence, agent staging, and history while keeping the creative artifact and decision controls prominent.

Accomplishments that we're proud of

The prototype supports complete create, select, save, and reload flows for real text and image candidates. It registers exactly six WebMCP tools in the local integration harness, keeps staged agent work visibly separate from committed decisions, and rejects missing, revoked, expired, or reused approvals. Decision memory preserves the brief, chosen artifact, reasons, note, and later superseded revisions. The current verification suite reports 27 passing unit tests, a successful static build, six registered tools in the browser roundtrip, responsive desktop and mobile captures, and no browser console errors.

What we learned

Structured tools are most useful when they act on the same state people can see, not when they create a second agent-only workflow. Human control is stronger when enforced by application state—here, an approval that no WebMCP tool can create—rather than by prompt wording. We also learned that memory should provide context, not automatic preference: showing what changed between then and now makes precedent useful without turning it into a hidden scoring model.

What's next for FinalPick

Next, we want to harden hosted-browser interoperability across supported ChatGPT configurations and test the workflow with more first-time users. Beyond the prototype, we would add collaborative persistence, accounts, richer asset versioning and uploads, and explicit review or dispute states only after designing the necessary permission, privacy, retention, and conflict-resolution rules.

Built With

Share this project:

Updates

Submission history