Skip to content

An HR Onboarding agent, built the Vibe-Coding way

I didn’t open Copilot Studio with a spec. I opened it with a sentence.

“Build me an agent that answers new hire onboarding questions, and knows when to stop guessing and hand off to a human.” That’s it. No flowchart. No topic tree sketched out on a whiteboard first. Just a description of the outcome I wanted, and then a conversation to get there.

That’s vibe coding. You describe the destination, not the route. Then you iterate by talking, not by configuring.

This is a build log, not a tutorial. Which means you’re getting the dead ends too.


What I was building

An FAQ and triage agent for new hires. Nothing exotic. It needed to:

  • Answer the questions every new hire actually asks (benefits, first-day logistics, IT setup)

  • Know what it doesn’t know, and route that to a human instead of improvising

  • Sound like it belongs on an HR team, not like a generic bot bolted onto one



Why this build looks different than it would have a year ago

Copilot Studio changed its default behavior this year. New agents now run on generative orchestration by default, which means the agent decides at runtime which mix of topics, knowledge, and tools to pull from for a given question, instead of a maker mapping every path in advance. Microsoft reports roughly a 20% improvement in evaluation performance for agents on this model compared to the older, rule-based approach.

That’s the whole reason this build log works the way it does. A year ago, an onboarding FAQ agent meant sitting down and drafting a topic tree by hand: every question you could anticipate, every trigger phrase, every branch. Now the starting point is a sentence, and the orchestrator does the routing underneath it. Vibe coding this kind of agent isn’t a shortcut around the “real” way to build it anymore. It’s closer to how the tool is actually designed to be used.


Step 1: describing the outcome, not the config

I typed the description above into Copilot Studio’s agent creation box and let it run. In under a minute I had a name and a full instructions block, none of which I wrote a single line of myself, running on Claude Sonnet 4.6, the model I picked for this agent’s reasoning and responses out of the model options Copilot Studio

now offers.



This is the part that gets lost when people explain Copilot Studio through a features list. You’re not filling in fields one by one. You’re handing it a first draft and then arguing with it.


Step 2: the dead end

What came back wasn’t a topic tree. It was a full instructions block, written for me, laying out the agent’s purpose and how it should behave. Confident, well-structured, reads like someone who knew what they were doing wrote it.




Then I tested it with something slightly off the happy path: “what if my laptop hasn’t arrived yet.” It came back fast, confident, nicely formatted: five numbered steps, a tip, an offer to escalate. The problem was what it was actually saying. It was generic onboarding advice pulled from wherever, dressed up to sound like company policy.



Not broken. Just not trustworthy yet. The instructions read well. They just hadn’t been tested against a real edge case. This is the part of every build that never makes it into a polished demo, and it’s the part worth showing.



Step 3: fixing it in plain language, not logic

I didn’t go digging through trigger phrases or topic conditions. I went back into the instructions and added one line, in plain English, the same way I’d correct a new team member: when you don’t have a specific, sourced answer from our actual company knowledge, don’t give generic advice, say so, and offer to connect them with HR or IT instead of guessing.




That’s the loop. Notice a gap. Write a sentence describing the gap. Let it adjust. Test again. No trigger phrases, no conditions, no logic branches. Just an instruction, typed in the same box the whole agent already lives in.



Step 4: giving it something real to know

Talking it into better behavior only goes so far. This is where generative answers earn their keep: instead of manually building a topic for every possible question, you point the agent at real knowledge sources and let it generate conversational responses grounded in that content, rather than in a pattern it inferred from instructions alone.



Once that was connected, the instructions themselves got tighter. Less generic guidance, more direct reference to the actual knowledge source, instead of an assumption baked into the wording.




Step 5: testing it for real

Same “laptop hasn’t arrived” question that broke it earlier, and a second one from a different angle: “can you tell me about my compensation package.” Both landed correctly. The first answered from the real IT policy instead of generic advice. The second recognized compensation as a topic it shouldn’t touch and routed straight to HR without trying to be helpful about it.



Then I tried to break it a different way, with something outside both documents entirely: “what’s the WiFi password for the office?” No knowledge source covers that. This is usually where an agent either invents something plausible or loops into a useless generic response.

It didn’t. It said plainly it didn’t have that specific information, explained why (IT-managed, outside what it can look up), and routed to IT Support with the right contact details, citing both knowledge sources it did have. That’s the instruction line from step 3 holding up outside the exact scenario I wrote it for.



Step 6: publish

Once the answers held up and the handoff behaved the way it should, publishing was the boring part. Which is exactly what publishing should be.



From typed sentence to a working agent, the whole thing took a couple of hours. Most of that time went into testing and correcting, not into anything that looked like traditional configuration, and honestly you can do it in a shorter time if you are a little less all over the place as I am – ADHD messes things up sometimes.



Where this goes next

Microsoft used Build 2026 to preview a bigger rebuild of Copilot Studio: a new agentic orchestrator, a Memory surface, and Skills defined as markdown instead of buried inside topic logic. It’s still in public preview, so it’s not what I built on here, but it points at where an agent like this one is headed. Less “onboarding FAQ bot that answers one question at a time.” More a persistent assistant that remembers a new hire across their first ninety days.



What I’d tell someone starting this today

Stop waiting until you know Copilot Studio well enough to “do it properly.” There is no properly. There’s describing what you want, watching it get it half right, and telling it what’s still wrong. That’s the whole skill.



Want to go deeper? Here’s where to start:

Ana Inés Urrutia originally posted this article on 22 August 2026 at 10:03 AM.

Leave a Reply