Reaper

Reaper

Seat-opening alerts for full classes: 1,700+ users and $8K ARR across 2 universities

October 2024 - January 2026
Discontinued

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

Reaper PWA on a phone: a list of tracked courses with CRN, section, and seat counts, next to the settings sheet for SMS alerts

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

getreaper.com landing page with the service discontinued banner above the hero
1/2

The landing page today, with the shutdown notice.

Architecture

ReaperGT architecture: EventBridge, scraper Lambda, SQS notify queue, notifier Lambda, Telegram, API Gateway, console Lambda, Secrets Manager, and two DynamoDB tables

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

Reaper web app architecture: React PWA to API Gateway to App Lambda; EventBridge Scheduler to Scraper Lambda polling OSCAR, which invokes a Notifier Lambda that texts through Textbelt; DynamoDB users and CRNs tables and Secrets Manager shared by all functions

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

AWS LambdaSQSEventBridgeDynamoDBAPI GatewayAWS SAMPythonasyncioReactPWANext.js

Project Info

Duration:

October 2024 - January 2026

Status:

Discontinued