Inspiration

Job hunting isn't hard because people can't find jobs — it's hard because applying well, to dozens of listings, is repetitive: read, compare, rewrite, answer the same screening questions, repeat. WebMCP asks what's possible when a site hands an agent real capabilities instead of buttons to click. Job applications felt like the right proving ground — tedious enough to automate, risky enough that no one wants an agent auto-submitting unsupervised. Automate the drafting, never the decision became the whole design.

What it does

Job Application OS is a career workspace where a human and an agent (ChatGPT's browser, or Chrome with WebMCP) apply together through real tools registered via document.modelContext.registerTool(): search, score, rank, tailor a resume, draft screening answers, and — in one call — applyToTopMatch. Every prepared application lands in pending_review. approveApplication/rejectApplication are plain button handlers, never registered as tools — an agent has no path to approve its own work. submitApplication checks status === 'approved' and fails otherwise.

How we built it

Next.js, TypeScript, Tailwind, and Zustand, on Vercel — no external LLM calls, no API key; the reasoning model is whichever agent is browsing the tab. Tool execute handlers call the same store actions the UI's buttons do, so state updates render live, no polling needed.

Challenges

The original pitch assumed a server-side LLM key calling page functions — the spec corrected that before UI work started. A Tailwind v4 cascade-layer bug silently broke every theme color. A Zustand selector allocating new arrays per render caused an SSR hydration race and an infinite loop. The hardest problem was making the approval boundary structural — provable by grepping the tool list, not a comment asking nicely.

What we learned

"Human-in-the-loop" only means something if you can point to the one function an agent cannot call.

🔗 Live app: https://jobwebmcp.vercel.app

💻 Source code: https://github.com/VishnuKugarthi/Job_Os_WebMCP

My blog on WebMCP: https://medium.com/@vishnutejaap/webmcp-letting-ai-agents-actually-use-the-web-70f1f97e3540?sharedUserId=vishnutejaap

Built With

  • agent
  • application
  • chatgpt
  • webmcp
Share this project:

Updates

Submission history