← Back to work

VMC (Video Meeting Coach)

Analyzes meeting audio and expressions to flag unbalanced speaking time

PersonalFull stack (Next.js, Node.js, FastAPI) + built the deployment infrastructure2024.09 — 2024.11

Next.jsNode.jsFastAPIEC2PM2NginxGitHub Actions

Grand Prize (2024), Hansung University SW-Centered University Festival. (w/ Okestro)

About the project

Meetings are where collaboration and decisions happen, but personality differences skew who actually gets to speak — extroverts tend to dominate, introverts lose their chance to weigh in, and conclusions can end up biased toward whoever talked the most.

VMC analyzes a meeting recording’s audio to score speaking-time balance and engagement, then summarizes the discussion. It uses voice emotion analysis and facial expression analysis to give each participant feedback on how they engaged with the meeting — since the feedback comes from an AI rather than a peer, it’s much easier to accept without triggering interpersonal friction. The goal was a more evenly distributed floor and a more productive, less personality-driven meeting culture.

What I did

Owned the full stack: the Next.js frontend, the Node.js/FastAPI backend, and the deployment infrastructure — EC2, PM2, an Nginx reverse proxy, and GitHub Actions CI/CD.

Technical challenges & what I learned

Building AWS infrastructure from scratch was the biggest challenge:

  • Setting up a Node.js environment on Ubuntu and managing the process with PM2
  • Configuring an Nginx reverse proxy
  • Wiring up GitHub Actions CI/CD end to end — push to deploy, fully automated

It was also the first time I’d run a frontend (Next.js) alongside two separate backends (Node.js and FastAPI) on a single piece of server infrastructure.

Troubleshooting

Installing PM2 via pnpm broke CI with command not found The deploy step in the GitHub Actions workflow ran pm2 restart ... and failed with command not found. The cause: installing PM2 through pnpm doesn’t put it on the default PATH (/usr/bin/pm2). Switching the install to npm resolved the PATH issue.