Subvocal

Subvocal

Subvocal

Microsoft Store App

Microsoft Store App

Microsoft Store App

Two iPhones 15s displaying a Web3.0 learning app

Overview

Overview

SubVocal came out of a problem I was experiencing myself. I play a lot of PC games late at night, and my roommates are usually asleep by the time I'm mid-match, so there's no way to call out an enemy or ask a teammate for help without waking someone up. Once I started asking other gamers about it, I found out this wasn't just my apartment's problem, and it made me think about players who can't rely on voice chat at all, whether that's a speech impediment or just preferring not to talk or type mid-game. As a result, I set out to create my own Windows overlay app that uses real face tracking to turn a facial gesture, such as a raised eyebrow or a jaw drop, into an instant preset message on a teammate's screen, with no mic or typing required. It runs alongside any PC game, covers gesture customization with color-coded urgency levels, a friends system so signals only reach people who are connected, and an always-on-top overlay window that stays open until it's closed (now live on the Microsoft Store!)

SubVocal came out of a problem I was experiencing myself. I play a lot of PC games late at night, and my roommates are usually asleep by the time I'm mid-match, so there's no way to call out an enemy or ask a teammate for help without waking someone up. Once I started asking other gamers about it, I found out this wasn't just my apartment's problem, and it made me think about players who can't rely on voice chat at all, whether that's a speech impediment or just preferring not to talk or type mid-game. As a result, I set out to create my own Windows overlay app that uses real face tracking to turn a facial gesture, such as a raised eyebrow or a jaw drop, into an instant preset message on a teammate's screen, with no mic or typing required. It runs alongside any PC game, covers gesture customization with color-coded urgency levels, a friends system so signals only reach people who are connected, and an always-on-top overlay window that stays open until it's closed (now live on the Microsoft Store!)

Tools Used

Figma

Design Tool

Claude

LLM

Tools Used

Figma

Design Tool

Claude

LLM

Tools Used

Figma

Design Tool

Claude

LLM

Created

Created

2026

Process

Process

Desigining from a User Standpoint

I started in Figma, laying out every screen before touching any code: the main hub, the gesture customization cards, the signal color panel, the friends system, and the overlay window itself. Working through it there first let me figure out how the different aspects actually connected, such as how a gesture maps to a message and how that message reaches a connected friend, before I had to worry about any of it actually functioning.

From there I moved into Claude Design to fine-tune the UI and the user flow itself, testing things such as how the confidence sliders should read, how a preset message gets swapped for custom text, and how the overlay should feel separate from the main settings hub. The color palette was inspired by a classic, bold and thick gaming-type font, with the colors being as intentional as possible by adding a color-coded message system (three signal colors: red for urgent, yellow for tactical, and green for support) layered on top so a teammate can read the urgency of a message before reading the words.

Once the UI and flow were locked, I used Claude Code to build it with actual on-device face tracking, a working overlay window that stays open until it's closed, and a backend that lets two different accounts send and receive messages in real time. I spent several days working on fleshing out the actual tunable gestures so users could customize the confidence intervals for each gesture, preventing gestures from misfiring and also ensuring intended gestures actually send.

Colors and fonts for a design system, made by nickelfox.com

Behind the Scenes

I built SubVocal as a real Electron desktop app instead of a browser extension, since the overlay has to stay visible over a fullscreen game, which nothing running in a browser tab can actually do. I also made a point of keeping that overlay from reading game memory or touching your inputs, because that felt like the line between being a silent teammate and being the kind of thing an anti-cheat system flags you for.

I also wanted the backend to know as little about you as possible. It runs on a small Node and SQLite relay hosted on Fly.io, and all the face tracking happens on-device in the browser, so your camera never actually leaves your machine. The server only ever sees the text of a gesture once you've fired it.

The friend system runs on mutual consent instead of a single request. When you add someone, it doesn't connect you to them, it just quietly records that you added them and waits. I kept the rest of the flow simple after that: once you've both added each other, either person can send a Link Connection request, and the other has to accept it before anything actually connects. The one thing I didn't make casual is that first step. If someone adds you and you haven't added them back, you never even see the request, so nobody can start a connection you didn't already choose to open the door to.

Behind the Scenes

I built SubVocal as a real Electron desktop app instead of a browser extension, since the overlay has to stay visible over a fullscreen game, which nothing running in a browser tab can actually do. I also made a point of keeping that overlay from reading game memory or touching your inputs, because that felt like the line between being a silent teammate and being the kind of thing an anti-cheat system flags you for.

I also wanted the backend to know as little about you as possible. It runs on a small Node and SQLite relay hosted on Fly.io, and all the face tracking happens on-device in the browser, so your camera never actually leaves your machine. The server only ever sees the text of a gesture once you've fired it.

The friend system runs on mutual consent instead of a single request. When you add someone, it doesn't connect you to them, it just quietly records that you added them and waits. I kept the rest of the flow simple after that: once you've both added each other, either person can send a Link Connection request, and the other has to accept it before anything actually connects. The one thing I didn't make casual is that first step. If someone adds you and you haven't added them back, you never even see the request, so nobody can start a connection you didn't already choose to open the door to.

Behind the Scenes

I built SubVocal as a real Electron desktop app instead of a browser extension, since the overlay has to stay visible over a fullscreen game, which nothing running in a browser tab can actually do. I also made a point of keeping that overlay from reading game memory or touching your inputs, because that felt like the line between being a silent teammate and being the kind of thing an anti-cheat system flags you for.

I also wanted the backend to know as little about you as possible. It runs on a small Node and SQLite relay hosted on Fly.io, and all the face tracking happens on-device in the browser, so your camera never actually leaves your machine. The server only ever sees the text of a gesture once you've fired it.

The friend system runs on mutual consent instead of a single request. When you add someone, it doesn't connect you to them, it just quietly records that you added them and waits. I kept the rest of the flow simple after that: once you've both added each other, either person can send a Link Connection request, and the other has to accept it before anything actually connects. The one thing I didn't make casual is that first step. If someone adds you and you haven't added them back, you never even see the request, so nobody can start a connection you didn't already choose to open the door to.

Two iPhones displaying a Web3.0 learning app

Ronak Vusirikala © 2026

Ronak Vusirikala © 2026