Sin Liang LeeSL Lee

Ming

Voice role-play for training managers, with multi-agent LLM characters.

Role
Backend and multi-agent architecture, about 20% of commits
Team
4 people
Context
HackGT 12 (2025) — MLH Best Use of Gemini API, winner
Stack
TypeScript, Next.js, Mastra, Gemini 2.5 Flash, Cloudflare Workers
Ming’s role-play screen: the employee character, Bart, speaking on video at his desk, and the transcript beside him with the manager’s question about his last four weeks and his reply.
A role-play in progress: the employee character answering on video, his reply in the transcript beside him.

What it is

A new manager practices a difficult conversation, such as a talk about falling performance, by voice with an AI employee. Afterwards Ming scores the conversation and annotates the transcript line by line.

There are three agent roles: the manager (the user), the employee and a coach.

What I built

  • The Mastra backend and the multi-agent architecture (55 of 275 commits).
  • The feedback workflow: analyze the transcript, summarize it, then drill into the details, each step its own agent.
  • The scenario pipeline: create the scenario, then the character prompts, then the reports.
    Ming’s scenario brief. “Your role: Engineering Manager at Ming, overseeing the web platform team building an e-commerce portal for a client. Bart, a mid-level full-stack engineer on Bill’s team, has had a noticeable performance dip over the last 4 weeks. You’ve scheduled a 1:1 to review expectations, share objective evidence, and collaboratively set next-steps and support.”
    Detail The scenario brief.
  • The move to Gemini 2.5 Flash and the Cloudflare deploy.

Technical notes

Next.js and Mastra run as two separate servers, with the Next.js server pointed at Mastra.

Diagram: input layer, conversational agent, then segmenter, analyzer and feedback models, then scenario, prompt and information adapter models, then output.
Fig. 1 The agent architecture.