Ship 26 NYC - Automating 90% of support tickets: How we built Vercel's support agent

VVercel
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00It's 2:00 a.m. Your phone starts buzzing. A production bug has completely blocked one of
00:00:15your paying customers. You drag yourself out of bed, make some coffee, and open the support queue.
00:00:22First, you need context. Who is this customer? What plan are they on? What changed? You open tabs jumping
00:00:32between your CRM, your internal dashboard, deployment logs, billing, documentation, and recent
00:00:39incidents, trying to piece together enough context to actually understand what's going on,
00:00:45opening more and more tabs. Now you're 11 tabs deep, and the tab titles have nearly disappeared.
00:00:54You're basically navigating internal systems by favicon alone. Your coffee's gone cold, and the
00:01:00customer's been waiting for 40 minutes. You type out a response and hit send. You look back at the
00:01:08support queue, and there are 14 more. An off-the-shelf chatbot isn't going to solve this. It can't read
00:01:15your logs, it can't access your database, and it doesn't understand your business. This used to be us,
00:01:24so we decided to build our own agent using our in-house Vercel products. The best agents aren't bought,
00:01:33they're built. Hi, I'm Katherine, engineering manager on the Avercell agent experiences team,
00:01:41and I'd like to show you how we completely transformed our support operation
00:01:45to resolve now 91% of tickets, completely autonomously, and how we shipped to production
00:01:52in just three weeks. And that was seven months ago. And since then, it's been running in production,
00:01:59acting as the first line of defense for incoming support tickets. Just last week, it resolved over
00:02:06seven thousand tickets. And in total, it handled over 130,000 cases fully autonomously. This has saved our
00:02:16support engineers over 5,000 hours every month. And to put that into perspective, that's equivalent of
00:02:23adding 31 additional support engineers to our team. As for our 91 ticket resolution rate. To put into
00:02:33perspective, customers whose entire business is building support agents, and that's all they do,
00:02:39typically do resolution rates of 60 to 75%. And we've far surpassed that. With just a sliver of their team,
00:02:48and just two engineers on the project. So I'm going to show you how you can do this too. And deliver this
00:02:55level of impact to your business by building your own agents using features available to every Vercel
00:03:00customer today. We didn't just build this agent to demo on stage, we built it because we had to. Back in
00:03:08October, our off-the-shelf agent provider informed us they were changing their product direction. And we had
00:03:1430 days to be off-boarded. For some, this would have been devastating news. But honestly, we were already
00:03:22hitting a wall with them. We were stuck moving at the pace of their roadmap. Every time a new model dropped,
00:03:29we needed new features for our agent. We had to wait for it to be slotted into their roadmap.
00:03:35We had to maintain complex auth infrastructure to provide external service with access to internal
00:03:41APIs. And we had constant difficulties keeping their agents' knowledge base up to date with our steady
00:03:48stream of docs changes, blog posts, and changelogs. So we spent three weeks building an in-house agent to
00:03:56replace the one we were about to lose. But we didn't want to just build a direct replacement.
00:04:02We wanted to build the ideal support experience. What if we built an agent that reads every page of your
00:04:11documentation, reviewed your user's entire history with your product, understood their specific billing
00:04:18plan plan, knew about last Tuesday's incident, and responded in under 30 seconds, at 2am, in any language.
00:04:28That's what we set out to build. The first version we shipped matched the resolution rate of the
00:04:34provider we were replacing, which low 60s. And then we started integrating it deeper into our systems,
00:04:42giving our agent more and more capabilities that our customer support team used when resolving cases.
00:04:48And the resolution rate just started climbing all the way to where we are now, over 90%.
00:04:54So let me show you exactly how our agent was built and how we were able to get our resolution rate to
00:05:00climb so high. Let's walk first through the moment a ticket arrives in our inbox to the moment it's resolved.
00:05:09So first, a ticket is submitted on our support page for cell.com/help. And here we gather all the
00:05:15contexts that might be relevant to our agent to enrich the ticket: the user's team, plan, recent support
00:05:22tickets, and any ongoing recent production incidents. Anything that will influence how our agent investigates.
00:05:30This is the enrichment step in our support flow. Then the agent kicks off its research loop.
00:05:37First, it determines if it has enough information to correctly and confidently answer the user's
00:05:42query. If not, it begins the research phase. And it performs this research loop until it's confident
00:05:50enough to respond. And finally, it either sends a response, escalates to a human, or takes action on its
00:05:59own using its included tool calls. So each of these steps run on a piece of the Vercel platform. Let me
00:06:06walk you through the ones that we used to build our own support agent. First, the agent needs a model loop
00:06:15to reason and respond, plus an interface that we can quickly test and iterate. Building this from scratch
00:06:22means wiring up model calls, tool execution, conversation state, streamings, and retries. All that time spent,
00:06:31and we haven't even started writing our business logic. Following the same principle we do in front-end
00:06:37development, instead of writing up the DOM manipulation by hand, we like to reach for React.
00:06:44AI SDK does that for agents. It gives us a set of primitives for text generations, tool calls,
00:06:51and human-in-the-loop approval. So we're writing our agent's logic instead of everything else around it.
00:06:58We built the first version of this core agent loop in hours, not days. And if we had Eve back then,
00:07:06which is our new framework that just launched for building agents, it would be minutes instead of hours.
00:07:13So here's our core agent loop. Just a few lines of code. Once we had our core loop written, capability
00:07:20growth was incremental. Define a new tool, add it to the toolset, and the agent starts using it when appropriate.
00:07:30No retraining, no fine-tuning, just a simple JavaScript function.
00:07:37We were able to quickly get off the ground running with a working agent, but then we need to build an
00:07:42interface to observe and debug the agent. Beyond the agent orchestration, AI SDK also provides UI
00:07:50hooks to manage chat streams and text completions on the front end, making it quick to wire up a working UI.
00:07:58Once we've wired up the front end, we were seeing an agent reply in a matter of moments with real-time
00:08:03streaming chat, interactive tool calls, and error states. This here is all you need for a working chat
00:08:12with streaming responses, managed message state, and a single hook connecting the front end to the agent.
00:08:19So now that we've got a working chat streaming, we need our agent's response to be generated by a model
00:08:25to kick off our agentic research loop. Customers reach out when they're already stressed. So answers
00:08:33need to come back, even during model provider outages. One model provider can pile up a backlog of stalled,
00:08:41dropped, dropped, or incomplete replies, and trigger urgent escalations. So if your business has SLA
00:08:48obligations, this is a non-negotiable. So we treat model routing traffic - so we treat model routing
00:08:55like traffic routing. Always send traffic requests to a healthy path, and that's what AI Gateway gives us.
00:09:03One API with automatic failover, low latency routing, and effortless model switching. If a provider degrades,
00:09:13rerouting is automatic and invisible to customers. With how effortless model switching is, with a simple
00:09:21one-line change we switched from Opus 4.6 to Gemini 3.5 Flash. And case resolution increased 5% overnight,
00:09:32with faster answers and fewer escalations.
00:09:37So now when a new model drops, we test it on day one and measure the impact on case resolution and
00:09:44customer satisfaction. And that's the entire migration. The agent can reason now, but an agent without
00:09:52access to your systems is just a chat bot. It can't look up customers' failed deployment logs, nor can it
00:10:00pull up their records or recent activities. The best it can do is guess and suggest how the user
00:10:07can troubleshoot the issue. Like how an API lets your frontend communicate with your backend, MCP's or
00:10:14model context protocol is standard for letting AI models connect to your systems. An API for agents.
00:10:23We connected our agent to Vercel MCP, which enables agents to interact with Vercel's platform features.
00:10:30This gives our agent the exact same tools our support engineers use when resolving tickets.
00:10:36Here's where our agent really begins to excel. By connecting our agent to our MCP, our support agent
00:10:43was able to resolve 15% more cases without any changes to its prompt. So quickly taking a look at our
00:10:53previous agent loop. Here's all it took to wire up the Vercel MCP, giving our agent access to the full Vercel
00:11:02tool set. Customers asking, why did my build fail? And why was I charged more this month? Now get answers
00:11:09grounded in real data from their account. As far as how you can build an MCP for your own internal
00:11:16services, we simply wired up a Next.js app with the MCP handler library. So here's a quick look of what our
00:11:24MCP definitions look like. They simply live in a Next.js route handler file. So inside create MCP handler, we
00:11:33simply provide a couple of tool calls and definitions for agents to discover. Whenever a tool definition is
00:11:40updated on the server, our agent automatically starts using them. By owning both the agent and the MCP layer, we
00:11:48own the full security flow. So no need for complex token exchange systems that you need if you are relying
00:11:54on external systems. That's the kind of simplicity and peace of mind you only get when you build it
00:12:01yourself. Your agent now reasons and can access internal systems. But there's one more thing we need
00:12:10for your agent to answer correctly and confidently. Access to your knowledge base. Your docs, change logs,
00:12:18blog posts, FAQs, everything a subject matter expert for your product would reference. Before the agent
00:12:26can answer a billing question, it needs to check the latest docs to understand your billing policy.
00:12:32When a new feature shifts, the docs update and the agent needs to be able to answer questions
00:12:38right away about what's new. So how do you keep an agent's knowledge current without building complex
00:12:45search infrastructure? This is your run-of-the-mill agent search service, a major distraction from
00:12:51building your business's agent. You know how you can add a database to a project from the Vercel
00:12:57marketplace with just a few clicks? So the same idea applies to search. We use Upsass Search, a turnkey
00:13:05vector search service through Vercel marketplace to turn our search infrastructure from this into this.
00:13:14Zero maintenance burden. And in less than 10 seconds, we have a production-ready search service.
00:13:24And just like that. We simply ingest docs, change logs, and blog posts, and the agent can search through
00:13:32all of them for up-to-date context. Fast to set up, no embedding pipeline to manage, and no infrastructure
00:13:39to maintain. This is all it takes for the agent to be able to fetch its need, what it needs to answer
00:13:46questions about Vercel features within moments of a release. So in the docs update, we just upsert the changes,
00:13:55and the agent can start using that context immediately. So we're using AISDK for our agent loop and UI,
00:14:04AI Gateway for model calls and failover handling, Vercel MCP powered by Next.js and MCP handler to connect our agent to our systems,
00:14:14and Vercel marketplace to set up our search index with just a few clicks. And we use chat SDK to bring our
00:14:22Vercel support agent easily to Slack. And because this all runs on Vercel, when the agent is just waiting
00:14:30for the model to think, the meter stops, thanks to fluid compute. And for an AI agent that spends most of
00:14:37its time waiting for model responses, function costs are barely there. So now that you've seen under the
00:14:45hood, let's see what this looks like from a user's perspective. So here, a customer is asking why they're
00:14:52recently charged a different amount than usual. Maybe they changed their plan or bought an add-on.
00:14:58So we're using the MCP to pull the team's plans details, billing and usage activity.
00:15:05From the knowledge base, we're pulling billing policy and add-on pricing.
00:15:11Next, the customer asks for a downloadable invoice.
00:15:15Here, we use a purpose-built tool to pull it from Stripe, since this is a common ask.
00:15:21Finally, the customer asks for an invoice to be modified, since they changed their address.
00:15:27Since we saw this was a common ask, we custom-built an approval UI, trivial to do since we own the full
00:15:34agent stack. And here, we show a nice confirmation state. This level of UX and polish simply can't be
00:15:43done with just a drop-in chat widget. So when you're back at your desk tomorrow morning, go take a look at
00:15:51your ticket queue. Find the categories of work where 80% of the resolution rate is the same pattern.
00:16:00Pull context from various systems, apply a known playbook, refine until it meets the minimum bar,
00:16:08and then send an answer or take action. That's your first agent. For us, it was technical support.
00:16:16But for you, it might be onboarding, account management, or internal IT. We built the support agent in three
00:16:25weeks with a team of two, using features to every Vercel customer today. If you can write a Next.js app,
00:16:35you can start. Being off-boarded by our provider made us realize just how big of a price we were paying
00:16:44by staying. Our support agent costs us less to run than one additional support engineer, but saves the
00:16:51capacity of 31 full-time engineers. It outperforms the industry by 20 points. And because we built it
00:17:00ourselves, it's deeply integrated into our product than any external vendor could ever be. Because it
00:17:08deeply understands our products and answers questions about our customers' actual projects.
00:17:14So you'll need to do the work to teach it your domains, connect it to your tools and scope permissions,
00:17:19and to refine it based on how it performs. Our first version resolved 62% of tickets.
00:17:27It took iteration to get above 90%.
00:17:31With Vercel, the tools are out there to build agents easily. You don't have to worry about infrastructure.
00:17:38You can just focus about refining your agents and understanding your business.
00:17:44Remember that 2am ticket? 11 tabs, cold coffee, 40 minutes to send to one response, and 14 more open tickets?
00:17:54That doesn't have to be that way anymore. Stop repeating the same tedious work every day and just start
00:18:02building agents. The best agents aren't bought. They're built. Thank you.
00:18:09Thank you.

Key Takeaway

Building an in-house support agent using Vercel tools achieves a 91% autonomous resolution rate and saves 5,000 hours monthly with a team of two engineers.

Highlights

  • An in-house support agent built with Vercel products resolves 91% of incoming support tickets completely autonomously.

  • The automated support agent handles over 130,000 cases and saves support engineers 5,000 hours every month, equivalent to adding 31 support engineers.

  • A team of two engineers built the support agent replacement in just three weeks after their off-the-shelf provider gave 30 days notice.

  • Integrating the Model Context Protocol allows the agent to interact with Vercel platform features and resolve 15% more cases without prompt changes.

  • Switching models from Opus 4.6 to Gemini 3.5 Flash using AI Gateway increases case resolution by 5% overnight.

Timeline

Limitations of off-the-shelf support solutions

  • Traditional support workflows require jumping across multiple internal tools, dashboards, and logs, causing lengthy response delays.
  • Off-the-shelf chatbots fail to access logs, databases, or business logic, restricting their utility for complex engineering queries.
  • A 30-day off-boarding notice from an external agent provider prompts the decision to build an in-house support agent.
  • Initial version ships with a resolution rate in the low 60s, which climbs past 90% as deeper system capabilities are integrated.

Manual support troubleshooting involves opening up to 11 tabs across CRMs, dashboards, and deployment logs, leaving customers waiting for extended periods. When an external provider changes product direction with a 30-day notice, the team decides to build a custom solution. Instead of waiting on external roadmaps for model updates or struggling with auth infrastructure, the team creates an agent that reads documentation, reviews user history, understands billing plans, and responds in under 30 seconds.

Core agent loop and UI development with AI SDK

  • The support flow consists of ticket submission, enrichment with user data, a research loop, and a final automated response or escalation.
  • AI SDK provides primitives for text generation, tool calls, and human-in-the-loop approval to accelerate agent development.
  • Writing the core agent loop takes hours rather than days using standard JavaScript functions.
  • AI SDK UI hooks manage chat streams and completions on the front end to establish a real-time chat interface.

Tickets submitted on the help page undergo an enrichment step gathering team plans, recent tickets, and incidents before entering the research loop. Building model calls and state management from scratch wastes time, so the AI SDK supplies necessary primitives. Defining new tools requires a simple JavaScript function with no retraining or fine-tuning required. UI hooks connect the front end to the agent to display real-time streaming chat, interactive tool calls, and error states immediately.

Model routing, failover, and Model Context Protocol integration

  • AI Gateway provides automatic failover, low latency routing, and effortless model switching across model providers.
  • Switching from Opus 4.6 to Gemini 3.5 Flash via a one-line change increases case resolution by 5% overnight.
  • Model Context Protocol connects AI models to internal systems, functioning as an API for agents.
  • Connecting the agent to Vercel MCP increases case resolution by 15% without any changes to the prompt.

Model provider outages can stall replies and trigger urgent escalations, making traffic routing for models a non-negotiable requirement. AI Gateway directs traffic to healthy paths automatically and invisibly during degradation. To prevent the agent from merely guessing solutions, the Model Context Protocol connects it directly to platform features and support tools. This grants the agent access to failed deployment logs and user records, grounding its answers in real account data.

Knowledge base search and production impact

  • Upsert Search through the Vercel marketplace provides a turnkey vector search service with zero maintenance burden.
  • Ingesting documentation, changelogs, and blog posts into the search service allows the agent to fetch up-to-date context instantly.
  • Fluid compute on Vercel stops the billing meter while the agent waits for model responses, minimizing function costs.
  • The custom-built support agent runs for seven months, handling over 130,000 cases and saving 5,000 hours monthly.

Keeping an agent's knowledge base current requires instant access to docs and changelogs without complex search infrastructure. Upsert Search deploys a production-ready search service in under 10 seconds without managing embedding pipelines. Owning the agent stack enables custom approval user interfaces for complex tasks like modifying invoices. Ultimately, a two-engineer team builds the agent in three weeks, achieving a 91% resolution rate that outperforms dedicated support agent companies.

Community Posts

View all posts