A custom Copilot agent that does the categorizing, so people don't have to
Designing and deploying a Microsoft Copilot agent to help a Marketing and Communications (M&C) team meet a new weekly time-reporting requirement accurately, with less effort.
- The problem
- A new mandate asked the team to log weekly hours against 10 activity categories, with no mapping and no tooling.
- What I did
- I adapted a colleague's agent into a scan-first Copilot agent with a multi-layer user profile, plus six deliverables for the team.
- The result
- The agent is deployed to the team, with a calendar automation so the weekly run doesn't depend on memory.
A new reporting mandate, and no way to meet it easily
The organization introduced a requirement for the M&C team to log weekly hours against 10 official activity categories in a project tracking platform. There was no standard mapping between people's actual work and those categories, and no tooling to help.
- No clear mapping between daily work and the 10 activity categories
- Weekly reporting depended on manual recall, which invites inaccuracy and inconsistency
- Work varied widely across individuals, functions, and ownership levels, so one-size-fits-all would fail
- A colleague's existing agent, built for a CRM context, was a useful baseline but couldn't be applied as-is
Adapt what works, build what's missing
I started from a colleague's existing agent: its system prompt structure, categorization logic, and setup method. I mapped what could be adapted versus what had to be designed new, and documented that line throughout the build. The agent was designed, built, and packaged for the team within a single extended working session.
The agent runs on a six-step weekly cadence:
- 01
Profile check
Confirm the user profile is current before starting.
- 02
Scan
Review the past week's signals using batched windowing and deduplication.
- 03
Draft
Produce a categorized time report in a structured format.
- 04
Interpret and validate
Surface interpretation calls and flag uncertainty before review.
- 05
Review
Present the draft with a confidence column; the user confirms or corrects.
- 06
Finalize
Produce submission-ready output.
The agent is only as good as what it knows about you
I designed a multi-layer user profile so the agent can categorize work the way the person actually experiences it.
- Work hierarchy
- Role, portfolio, programs, projects, and recurring activities
- Ownership level
- Own, Lead, Contribute, Advise, or Monitor, set per program and project
- Stakeholder tiers
- Core, Strategic, and Emerging contacts
- Invisible work
- Effort that never shows up on a calendar
- Known distinctions and exclusions
- Negative knowledge: what something is not, so the agent stops miscategorizing look-alikes
- Profile change log
- A dated record of what changed and why
The product calls behind the agent
- 01
Scan first, not interview first
I rejected a five-question onboarding interview. The agent scans available signals, drafts a profile, and the user corrects it. People should do less work up front, not more. That's the difference between a tool people try once and one they keep using.
- 02
Negative knowledge as a first-class field
Miscategorization usually comes from things that look like one category but belong to another. A dedicated "known distinctions and exclusions" field fixes that once, instead of making users re-explain it every week.
- 03
Specific update suggestions, not generic prompts
After each weekly draft, the agent proposes concrete profile updates based on what it observed. "Anything to update?" gets a shrug. "You spent 6 hours on X, which isn't in your profile. Add it?" gets an answer.
- 04
Ownership hierarchy over flat lists
Owning a program and advising on it are different kinds of hours. A flat list of programs loses that signal; an ownership level tells the agent how to weight the work.
Built for distribution, not just for me
| Deliverable | Format | Purpose |
|---|---|---|
| Team guide and system prompt | .docx, v1.1 | Everything a teammate needs to set up and run the agent |
| Categorization guide | .docx, v1.0 | Two-axis mapping of function buckets to activity categories |
| Setup scan method | .pdf, v1.0 | Batched windowing logic, deduplication rules, and a cap tripwire |
| Recurring Friday reminder | .ics, v1.1 | Calendar automation that prompts the weekly run |
| Reminder setup guide | .docx, v1.1 | Plain-language install steps |
| New features summary | .docx, v1.0 | For the original agent's author: what's genuinely new versus adapted |
What shipped
- Agent deployed and available to the team, built and packaged in a single extended session
- Six versioned deliverables, each written for a specific audience
- Calendar automation plus setup guide, so adoption doesn't depend on remembering
- Collaborator feedback gathered and follow-on improvements scoped; design decisions documented for handoff
Quality control was part of the build, not an afterthought: I caught and corrected inaccurate time-increment language across every deliverable before release, and rebuilt one structurally flawed document rather than patching it.
What this project required
Core
AI agent design · Product thinking · Prompt engineering · Adoption design
Supporting
Technical writing · Stakeholder communication · Building on a colleague's work · Quality control