AI · Support

eSafetyFirst resolves 90% of support contacts with an AI agent on Amazon Bedrock

  • 90%support contacts resolved without a human
  • 12,000+conversations handled
  • EN/FRbilingual support

eSafetyFirst is a Canadian workplace-safety training company providing WHMIS and occupational-safety certifications to a bilingual English and French market.

The challenge

eSafetyFirst ran a scripted, rule-based IVR that couldn't hold a real conversation or answer from the company's own material. Routine questions about certifications and courses still landed on the support team, and a bilingual English and French audience meant every answer had to be consistent in two languages.

Left unaddressed, that repetitive load kept a small support team tied up on questions a system could answer, left after-hours customers waiting until the next business day, and risked inconsistent answers across two languages. In a compliance-driven field, a wrong answer about which certification a customer needs is not a small error, and slow or off support directly costs course enrollments.

The goal was an AI support experience that answers from eSafetyFirst's own knowledge base, keeps its answers grounded in official sources rather than improvising, and turns routine support contacts into the right course recommendation, without handing customers to a generic chatbot that guesses.

Our approach

We built the support agent on Amazon Bedrock Agents, with Claude on Amazon Bedrock as the reasoning engine. The agent, its Amazon Bedrock Knowledge Base, and the Aurora PostgreSQL Serverless v2 vector store (pgvector) that holds the embeddings run in AWS's Canada (Central) region. Rather than answer from the model's general knowledge, the agent is required to ground its answers in eSafetyFirst's own content, retrieved through that knowledge base.

Grounding alone isn't enough when a knowledge base mixes authoritative pages with blog posts and old Q&A. So retrieval runs in two passes:

  1. The agent calls action-group Lambda tools that query the knowledge base for candidate passages.
  2. Those candidates are re-ranked with the Amazon Bedrock reranker, then passed through a custom authority-bonus step that pushes official site content above blog and community answers, so the customer gets the canonical answer first.
  3. Amazon Connect powers the web chat channel. When a conversation needs a person, the agent escalates it to the support team with the reason and a summary of the exchange, so the team picks up with full context.
  4. Resolved human escalations become training material: approved support tickets export to Amazon S3 and re-ingest into the knowledge base on a weekly EventBridge schedule, so the agent improves from the answers the team already gave.

The outcome

The agent now resolves 90% of inbound support contacts without a human, answering routine certification and course questions in both English and French around the clock.

Escalations reach the team already summarized and in context, so the contacts that do need a person are handled faster, and after-hours questions no longer wait until morning.

Because resolved escalations feed back into the knowledge base every week, the share of contacts the agent can answer on its own keeps climbing without a separate content project.

Built with

  • Amazon Bedrock Agents
  • Amazon Bedrock Knowledge Bases
  • Amazon Aurora PostgreSQL Serverless v2 (pgvector)
  • Amazon Connect
  • AWS Lambda
  • Amazon EventBridge
  • Amazon S3
  • Amazon ECS
  • Amazon CloudWatch
  • Terraform

Want to see if we'd be the right team for what you're building?

Or take the 90-second AWS assessment if you'd like a read first.