Ayaan Goswami

Robots, machine learning models, and health apps, built by a high school senior in Houston.

0/7 strawberries found Let's talk

Houston, Texas / Carnegie Vanguard High School / Class of 2027

  • Robotics
  • Games
  • Health
  • Machine learning

Ayaan Goswami

High school senior. Everything in this box is something I work on: robots, games, health tech, and machine learning.

It started with a video game.

Hollow Knight, Team Cherry

I started programming in 7th grade, when I tried to make a video game of my own. After that I wanted to keep building things.

So far that's meant the code for a robot that qualified for Worlds, a paper on shrinking a mental health classifier, a $35 Parkinson's watch, and a few apps that keep health data on your phone. Everything below is one of those, with the parts that didn't work the first time.

Explore the map About me

I

The Map

How it all connects

Hallownest's map, Hollow Knight

Most projects started from an earlier one.

The Parkinson's watch led to a voice biomarker model, which turned into NeuroVoice. Hand-tuning VEX autonomous routines led to the motion chaining math. Hover over a room, or tap it, to see what carried over.

GAMES & LEARNINGROBOTICS & EMBEDDEDMACHINE LEARNINGDIGITAL HEALTH First browser gamesIAGE platformerAP PracticeProject 1600VEX 285CMotion chainingShowdown AIMental health triageParkinson's watchVoice biomarkersNeuroVoiceFree BirdSiteCycle

How to read this Regions are interests, chambers are projects, and the passages are what carried over from one to the next. Hover, focus, or tap a chamber.

Every project, with details

II

The Workshop

Robotics & embedded systems

Crystal Peak, Hollow Knight

VEX 285C • C++ • Kinematics

Teaching a robot not to stop between points.

I'm the lead programmer for 285C, Discobots Chaos. In the 2025-26 Push Back season we qualified for the VEX Robotics World Championship, the first Carnegie Vanguard team to get there in over five years.

LemLib can chain one motion into the next without stopping, but every motion needs two numbers tuned by hand: when to exit early, and what speed to hold on the way out. Change the route and the tuning breaks. So I derived both from the distance of each motion, using the same constant-acceleration equation from physics class.

Fig. II.1 Same path, two ways to drive it

Stop and go0.00 s
Chained0.00 s

This simulation needs JavaScript. The idea: instead of stopping at every waypoint, the robot leaves each motion early at half its peak speed and carries that speed into the next one.

A simplified simulation with made-up but realistic acceleration limits, not telemetry from our robot. Turns are modeled as in-place rotations when stopping and as blended arcs when chaining.
Combined skills at States
1379th overall
Autonomous points at States
80Most at the event
Qualification record
7–26th at States
285C's Push Back robot: a black aluminum frame with red sprockets, a chain-driven conveyor angled up the front, and omni wheels.

The robot

Six-motor drive at 450 RPM, a dual-chain intake, and pneumatics for the scraper and wing.

III

The Laboratory

Machine learning & research. Two studies that didn't go the way I expected.

City of Tears, Hollow Knight

01 NLP • Published • IJSCAR

How small can a model get before it misses the posts that matter?

I built a classifier that sorts social media posts into seven psychological states, for triage at a scale no human team can read. My first design put a Random Forest on top of BERT to make it cheaper. It made it slower, because the encoder was where all the time went.

So I distilled the encoder, quantized it to 8-bit integers, and served it through ONNX Runtime. The deployed model is 4.3x faster and 6.4x smaller than BERT, and keeps 99% of its accuracy and suicidal-class recall. It isn't the best at catching suicidal posts, though: the 8-bit BERT gets 77.9% recall to its 71.0%, at about twice the latency. The paper covers that tradeoff.

Fig. III.1 Speed against what you give up

Each point is one configuration, timed per request. The shaded band is the bar every optimized model had to clear: 99% of the BERT reference. Up and to the left is better. Horizontal axis is log scale.
Show the numbers
ConfigurationAccuracyMacro-F1Suicidal recallms / requestSize (MB)
BoW + logistic regression0.76080.68410.67110.844.2
TF-IDF + logistic regression0.77580.68830.67880.984.6
BERT fp32, PyTorch (reference)0.83120.79640.7132186.4438.7
BERT int8, ONNX Runtime0.80070.74060.778784.4111.4
DistilBERT fp32, PyTorch0.82060.78390.742493.2268.8
DistilBERT int8, ONNX Runtime (deployed)0.82310.78760.710343.868.3

02 AP Research • 90 players

Do games teach better when they explain less?

My younger brother picks up complicated video games quickly and checks out of traditional lessons just as quickly. Game design writing loves implicit tutorials and adaptive difficulty, so I built a 7-level platformer with six versions of its tutorial and randomly assigned 90 students to them.

The explicit version won. Completion fell from 60% to 29% as the tutorial explained less, and adaptive difficulty lowered engagement and clarity ratings without improving a single performance measure.

Fig. III.2 Finished all 7 levels, by how much the tutorial explained

60%
LowWritten instructions, instant feedback · n=25
51%
ModerateGuidance partly built into mechanics · n=37
29%
HighNo explicit instruction · n=28
Implicitness and completion: χ² = 5.80, p = 0.055. Marginal, but the direction held across engagement and clarity ratings too. The worst cell was high implicitness with adaptive difficulty: 2 of 12 players finished.

IV

The Clinic

Digital health

Greenpath, Hollow Knight

Who does this work for?

I got into health tech at Rice's PATHS-UP program. The Parkinson's monitors we compared our watch against cost thousands of dollars, which rules out most of the people who need one.

PATHS-UP, Rice • 2025

A $35 Parkinson's watch.

Matthew Chen and I built it from three TinyCircuits boards: an accelerometer to count tremors and steps and watch for REM sleep disruption, a pulse oximeter, and Bluetooth to alert caregivers. The alternatives on our poster cost thousands.

The hard part was telling a tremor from a step. The harder part was remembering that the person using it might be a stressed caregiver who will never read a manual. Our step counter came within 14 steps of an Apple Watch over 4,600.

Fig. IV.1 The watch, rebuilt from our poster

Tue 6/24∗

TREMORS: 9

STEPS: 42

‹ Back

AccelerometerWalking
Screens recreated from our symposium poster. Drag the watch to turn it. The signal is illustrative, not recorded data: walking shows up as large, slow peaks; a resting tremor is smaller and much faster, around 4 to 6 times a second.

V

The Expedition

For those who come after. The subtitle is borrowed from Clair Obscur: Expedition 33, my second-favorite game.

Clair Obscur: Expedition 33

In order, roughly.

From Minecraft redstone to a published paper.

  1. 01 / 10

    Early on

    Minecraft redstone

    Building working machines out of small parts, before I knew that was what engineering was.

  2. 02 / 10

    7th grade

    Trying to make my own game

    The reason I started programming. A Plants vs. Zombies remake, an asteroid game, and a lot of small browser games followed.

  3. 03 / 10

    2023-24

    Joined VEX Robotics

    First season of competitive robotics, and the first time my code had to move something physical.

  4. 10 / 10

    Now

    Senior year

    Programming for the Override season, and still building things to see how they work.

VII

The Bench

Hobbies, games, and everything else

Sit down for a minute.

I've put about 120 hours into Hollow Knight, which probably explains why this website has a cave and a bench in it. My top three games right now, in order: Hollow Knight (and now Silksong, which I'm counting as the same entry), Clair Obscur: Expedition 33, and Celeste. Speaking of Celeste: there are seven strawberries hidden around this page. Some are tucked inside tabs and figures, and the golden one only shows up if you ring the bell.

I also play a lot of competitive Pokémon on Showdown, mostly Gen 9 OU. Enough that I eventually trained a bot to play the way I do.

Games are why I started coding, and I still think good games teach better than most classrooms, which is a big part of why my AP Research project was about them. When I'm not at a screen, I run; my 5K personal best is 21:40.

The Knight resting on a bench in Dirtmouth, under a lamp post, with other travellers nearby.
Resting at a bench in Dirtmouth. Hollow Knight, Team Cherry.

Top three, in order

  1. Hollow Knight cover art Hollow Knight: Silksong cover art
    IHollow Knight & SilksongHallownest first, then Pharloom
  2. Clair Obscur: Expedition 33 cover artIIClair Obscur: Expedition 33For those who come after
  3. Celeste cover artIIICelesteHence the strawberries

Charms equipped

  • 120 hrsin Hallownest
  • 21:405K personal best
  • 8countries visited
  • 0 / 7strawberries found
  • OUGen 9on Pokémon Showdown

Favorite classes

Statistics, computer science, physics, calculus

What I've used, and where

Python, PyTorch, Hugging Face, ONNX Runtime
Mental health triage, Showdown AI
C++, PROS, LemLib
285C's robot code
Dart, Flutter
NeuroVoice, SiteCycle
JavaScript
Free Bird, the AP Research game, AP Practice
Java, R
Processing and analyzing the AP Research data
Next.js, Supabase
Project 1600

VIII / The Bell

Ring the bell.

I'm happy to talk about research, robotics, health tech, or anything else on this page. Email is the fastest way to reach me.