The Investigator Transformation

Last month, Canvas Chief Engineering Officer Beau Gunderson released an internal AI agent called “Investigator” that redefined the way we work at Canvas. Powered by Claude Code and embedded in our Slack channels, it uses MCPs and APIs to pull context from Pylon, Jira, Sentry, Elastic, Notion, and our codebase to help us investigate everything from customer education to code archaeology.

The concept for Investigator was originally designed in partnership with Canvas Director of GTM Jess Herbert, also the founding member of the company’s support team, as a CLI tool to expedite multi-source manual research associated with support tickets.

Investigator has helped our team research the answers to questions like:

  • How can we optimize the customer-authored code for their custom plugin?
  • What was the reasoning that a Canvas agent used to provide this answer?
  • What next steps are needed to complete the configuration for this integration?
  • What caused the errors associated with this prescription, lab or imaging order?

After Investigator was introduced in Slack, it quickly became one of the most-used tools in the company. While the most frequently asked questions are still focused on supporting customers, the team’s engagement with this agent has continued to evolve. Investigator now helps with creating documentation, providing company updates, building reporting infrastructure, and even self-improving pull requests. Public conversations with Investigator have sparked important conversations in Slack, both with other agents and human team members.

Introducing Navigator

As we observed the transformation our own team experienced when communicating with Investigator, the next step became clear: what if we built something like this for our customers? At BUILD, we announced Navigator, an AI agent that lives in customer Slack channels to help users navigate the Canvas experience. It's currently in beta, with general availability later this summer.

On paper, a customer-facing support agent sounds straightforward. But as Beau and I started scoping Navigator, we began evaluating the balance between consistency and customization.

This meant we had to decide:

  • What guardrails were needed to provide a consistent experience?
  • What context was required to provide highly relevant and personalized answers?

Fundamentally, this meant giving Navigator the foundational content and instructions associated with the universal Canvas experience. This includes access to our Help Center, SDK Documentation, API Documentation, Guides, release notes and open source repos.

However, this information alone wouldn’t provide complete guidance for our customers. This is because Canvas customers can build a completely unique experience by deploying custom plugins using the Canvas SDK. If 100 Canvas end users associated with different customers asked the same question, Navigator would need to provide 100 different answers. To build an agent that could actually support our customers, we had to make sure it had the specific context it needed to construct the right answer.

Navigating the Canvas Experience

Navigator understands the unique experience designed by each Canvas customer. It does this by accessing the code of deployed plugins - what's running, what version, what each one does - to help customers understand or modify them using Canvas SDK patterns. It has full access to the Canvas SDK and FHIR API documentation, customer instance logs, our public help center, and release notes. It provides answers about the current setup of a customer, not what someone remembers configuring six months ago. This agent serves as a personalized guide for customers throughout their Canvas journey, which is why Alyssa Yandura, our Operations Manager, named it “Navigator.”

Navigator can answer customer-specific questions like:

  • What was included in the latest Canvas release?
  • Which FHIR resource should I use to complete eligibility checks?
  • Can I write a plugin that pulls vitals from an external device?
  • What’s the difference between a protocol and a plugin?

What’s Next?

If you're already in a Canvas Slack channel, you'll see it show up. Ask it to introduce itself and explain how it can help. If you have other requests, tell it that too - that's how it will continue to get better.

Happy navigating!