Reaper
Seat-opening alerts for full classes: 1,700+ users and $8K ARR across 2 universities
Project Overview
Reaper texted students the moment a seat opened in a full class. It grew to 1,700+ users across Georgia Tech and the University of Georgia and $8K ARR in its first year, and I licensed its tracking API (under 50ms response time) to 3 other schools.
On December 15, 2025, Georgia Tech blocked Reaper and closed the public endpoints it relied on, so the service was shut down.
From Script to Product
Reaper started in November 2024 as a personal Telegram bot that polled OSCAR (Georgia Tech's registration system) every 30 seconds for the CRNs I wanted.
In spring 2025 I rebuilt it as an event-driven AWS service so it could serve everyone, then added a React PWA with Google sign-in and SMS alerts, plus a Next.js landing site at getreaper.com.
The web app

The deployed PWA (reapergt-app.vercel.app), shown with sample courses because the backend is offline. Left: tracked CRNs with live seat counts. Right: SMS alert settings.
getreaper.com
The landing page today, with the shutdown notice.
Architecture

The June 2025 serverless pipeline (Telegram interface, before the web app).
How It Works
An EventBridge schedule starts each cycle. A dispatcher Lambda reads every tracked CRN from DynamoDB and fans them out onto an SQS scrape queue; scraper Lambdas check seat availability and push open CRNs onto a notify queue; a notifier Lambda looks up subscribers and sends the alert.
Every function is stateless and defined in an AWS SAM template, with secrets in Secrets Manager and no Redis or EC2 to manage. The later scraper checks CRNs concurrently with asyncio and aiohttp, and the web app talks to a Lambda API behind API Gateway.
Web app architecture
Drawn from the SAM template in the reapergt-app repo: the web app version, where the scraper loops on a schedule and invokes the notifier directly.
Skills & Technologies
Project Info
October 2024 - January 2026
Discontinued

