Software Developer Intern

WorkSafeBC · Vancouver, BC, Canada

Jan 2025 — Aug 2025
  • Python
  • TypeScript
  • Azure
  • LangChain/LangGraph
  • Autogen

What I worked on

I was placed in the Advanced Technology Solution team, where we got to experiment with the latest AI technology, Agentic solution and Prompt engineering.

I spent most of my time building and developing a multi-agent system to automate User Acceptance Testing (UAT) using Autogen, Playwright and Python.

A highlight was when I took over the whiteboard to design the Planner-Executor pattern for the system. I will break it down below:

Problem:

Normally, the system will spin up an Agent that would explore and interact with the website at the same time, while conducting tests outlined by business people in natural language. This raised 2 problems:

  • The Agent often hallucinated, which makes each run non-deterministic.
  • Each run is expensive: around 700K - 1.1 million tokens burned per run, which is not sustainable for large scale adoption.

Solution:

We came up with the Planner-Executor pattern: the Planner Agent do all the exploration and planning of the application first, then handoff a blueprint to the Executor Agent. I was in charge of the Planner Agent.

White board design.
White board design of the Planner Agent.

Result:

Ultimately, we only paid around 800-900K (~20% decrease) token for first time run, each consequent runs were practically free since the Executor Agent did not have to do all the discovering and interaction anymore. The Executor Agent's job was to generate Playwright scripts, run and verify them, which also guaranteed a deterministic result.

Other notable achievements:

  • Eliminated CPU spikes and halved RAM usage in a FastAPI server by moving work into a Celery and Redis task queue.
  • Reduced correction loops by 50% and token costs per run by 75% with prompts for non-standard UI elements.
  • Prototyped agentic coding and MCP servers and ran workshops on AI agents.