What is this?
Pullcord is a real-time MARTA bus tracker for Atlanta. It shows you where your bus is, how far away it is, and lets you set a "pull the cord" alert so you don't have to stare at your phone.
It's built for the way people actually ride the bus — pick your stop, see what's coming, get a push notification when it's time to walk out the door.
How it was made
This app was written almost entirely by an AI agent. Not "AI-assisted" — the architecture, data pipeline, UI design, and nearly every line of code was authored by Clatis, an AI running on OpenClaw (Claude under the hood).
The human half is Jake, a web developer in Atlanta who's been maintaining marta.io for over a decade. Jake directed the product — what to build, how it should feel, when something was wrong — and did QA on his phone while riding actual buses. Clatis did the rest.
We're being upfront about this because you deserve to know. If AI-generated software isn't your thing, no hard feelings.
By the numbers
63commits
6klines of code
7dependencies
118bus routes
8,724stops
~2Mstop times
Stack
HonoBunSQLiteLeafletTailwind v4GTFS-RTWeb PushJSX (no React)
No bundler, no framework, no build step beyond Tailwind CSS. The client is vanilla JavaScript. The server renders JSX to HTML strings via Hono.
Privacy
Pullcord doesn't track you.
- Location: Used client-side only to find nearby stops. Never sent to our server, never stored.
- Push subscriptions: Stored in SQLite while your alert is active. Deleted the moment the notification fires.
- Analytics: None. No cookies, no tracking pixels, no third-party scripts.
- Favorites: Stored in your browser's localStorage. Never leaves your device.
Data
Real-time bus positions and predictions come from MARTA's GTFS-RT feeds, updated every ~30 seconds. Stop locations, routes, and schedules come from MARTA's static GTFS data.
ETAs for tracked buses are computed from vehicle GPS positions and scheduled inter-stop times — not MARTA's prediction feed, which has known accuracy issues.
Why "Pullcord"?
On a bus, you pull the cord when your stop is coming up. It's the one moment of agency in the whole ride — you're telling the bus this is where I get off.
The app's "Pull the Cord" feature works the same way. Set an alert, put your phone away, and it'll buzz you when it's time to head to your stop. One tug, then you're free.
Updates
Feb 17
First real-world Pull the Cord test. Set an alert on Route 21 westbound, walked to the stop when the notification hit, waited about a minute, bus showed up. The whole point of this app in one sentence.

Feb 17
ETAs for tracked buses are now computed from the bus's actual GPS position and the scheduled travel time between stops. MARTA's feed has a known issue where predicted times just tick forward with the clock instead of reflecting where the bus actually is. Ours use real position data.
Feb 17
Notifications now wake your phone properly — no more checking the app to find out you missed the alert. Fixed a bug where tapping the notification on Chrome did nothing. Also fixed ghost predictions where MARTA's feed shows a bus arriving twice because it pre-assigns the bus's next trip before it finishes the current one.
Feb 16
Backend cleanup. Consolidated how we look up predictions so single-stop and multi-stop views use the same code path. Paired stops (same location, two IDs for each direction) now resolve correctly everywhere. Fewer bugs, same features.
Feb 15
Search now finds routes by number — type "21" and it shows Route 21 stops. Fixed a bunch of edge cases with stops that serve multiple routes. Stability and accessibility work.
Feb 14
"Pull the Cord" notifications are now reliable. They survive app restarts, fire even with your phone locked, and clean up after themselves. Replaced the janky browser notification API with real Web Push — your phone buzzes like a text message when your bus is close.
Feb 13
Redesigned the tracker from scratch. The big countdown number, the progress strip showing your bus approaching, the direction-aware stop list — all new. Went through four design experiments and picked the best pieces from each. Added favorites so you can save your regular stops.
Feb 12
Pullcord launched. Live bus positions on a map with ETA predictions for all 118 MARTA bus routes, built on GTFS real-time feeds. Find your stop by location or search, see what's coming.