MCP Apps: Give the Model Data, Give the User a UI — Dustin Mihalik, Indeed
Sep 9, 2026 · 15:34
Dustin Mihalik, technical fellow at Indeed, shares lessons from building MCP apps for Claude, ChatGPT, and Indeed's Career Scout job seeker agent, arguing that data must come before UI because a naive widget makes the product worse: a text-based job search prompted the model to run ten or fifteen searches, filter results, and assemble a table, while a rendering widget caused it to call the tool once and stop exploring. He lays out three rules: anything shown to the user must also reach the model as data, or every follow-up question fails; the tool description must state a UI exists, or the model narrates the same results underneath it; and, superseding the others, separate data processing from UI rendering. At Indeed that meant a plain search tool the model calls freely plus a render widget taking a list of IDs, so it can search 100 jobs, filter to five, and show only those, with interactions pushed back through update model context. He closes on small composable tools and letting the render tool carry the model's reasoning about why a result fits.