← All work

Professional work · Microsoft

Catch-Up Experiences in Microsoft 365 Copilot: From Feature to Agent

Helping people catch up on the meetings, follow-ups and messages they missed. I worked on grounding and reliability, moved the experience onto an agent architecture, and built the monitoring and tooling that kept it healthy.

Role
Software Engineer II
Period
Late 2023 – 2025
Part of
Microsoft experience overview

Context

Coming back to a pile of meetings, follow-ups and messages is a common problem. From late 2023 to 2025 I worked on catch-up experiences in Microsoft 365 Copilot in three stages: first in Copilot on mobile, then as a catch-up view in the Copilot app, and finally as an agent built on Copilot's AI orchestration service.

Not all of these experiences were released publicly. Product direction and architecture were shared with my team and partner teams.

Problem

  • Is the summary grounded in the right things? A catch-up is only as good as the meetings, threads and time window it draws on.
  • Does it hold up under load? Pulling from many sources at once ran into throttling, timeouts and latency.
  • When it fails, can anyone tell why? Errors from the AI service reached the client as a generic failure, so diagnosing problems meant digging through logs.

My contribution

  • Improved the prompts and the data responses were grounded on, and drove the follow-up view.
  • Co-led the throttling investigation; our recommendations were implemented and improved reliability.
  • Moved the experience onto an agent architecture, and implemented citations in its meetings and follow-ups scenario.
  • Made failures diagnosable: meaningful client errors, the first monitors and troubleshooting guides.
  • On mobile, led the catch-up telemetry investigation and helped move development to React.

Technical approach

Getting the grounding right

For the follow-up view, I compared ways to retrieve email threads, documented the trade-offs and recommended the most efficient. I also started the discussion that settled time windows: each view got its own window rather than one shared standard, to get the best quality from each.

From a feature to an agent

When catch-up moved to an agent architecture, I set up the route through the GraphQL gateway and made the client changes that let it call Copilot's AI orchestration service. In the AI pipeline, I contributed to the meetings and follow-ups scenario and implemented its citations, then shared how they worked with the wider team.

Making it operable

  • Errors: I wrote up how service errors should map to client errors, gathered feedback and implemented it, so failures carried meaningful errors instead of a generic code.
  • Monitoring and guides: I added the first monitors, catalogued known errors with their causes and actions, and wrote troubleshooting guides for the feature team and on-call engineers.
  • Tests: I consolidated prompt snapshot tests so every prompt type was covered automatically.
  • Evaluation: with a colleague, I explored offline evaluation for the agent.

Challenges and trade-offs

  • One window or many? A single time window for every view was simpler, but each view needed its own to get the right content.
  • Everything or within limits? Retrieving from many sources at once improves coverage but runs into throttling, so retrieval had to be efficient, not exhaustive.

Outcome

  • Implemented: the throttling recommendations, which improved reliability.
  • Built: the agent route and client integration, citations in the meetings and follow-ups scenario, and the error mapping, monitors, guides and tests that supported the team and on-call.
  • Released: not all of these experiences were released publicly.
  • Led to: my later work on Researcher evaluation and Copilot Citations.

Reflection

This was where my work moved from product features to AI agents, and where reliability and citations became my focus.