How one guy and an AI built a drop-watching platform in 9 days.
It started with a Steel Flame drop.
I was bored. Maybe a little sad.
I'd missed building stuff so one night I sat down with Claude and just…
started building.
Five days later I had a system watching 50 websites for knife
and EDC drops, firing alerts the second something hits.
Steel Flame clips. Hinderer specials. CRK collabs.
Gone in minutes — unless you're watching.
I've been wiring things up my whole life —
never knew why I couldn't stop.
Then I stopped fighting.
Came back and sat down with an AI and everything clicked.
IF THAT SOUNDS LIKE YOU — RESTLESS, ALWAYS BUILDING, NEVER SURE WHY — STOP FIGHTING. SURRENDER. THEN START.
The drop was never really the point. Building something I needed was.
Now this happened.
DAY 1
MARCH 6, 2026
The first conversation. I described what I wanted: watch knife dealer websites,
use AI to understand what's on the page, and alert me when something real drops.
By the end of the night we had a working scraper, an AI interpreter powered by
Claude Haiku, a priority rules engine, and a live alerts page. Reddit RSS was
wired in. The thing was alive.
web_watcher.py, ai_interpreter.py, generate_alerts.py, feed_watcher.py, sources.yaml, makers.yaml
DAY 2
MARCH 7, 2026
Bug day. The alerts page had 115 stacked entries for the same drop. Priority rules
were too aggressive — everything was CRITICAL. We squashed four bugs, rewrote
the dedup logic, tightened priority rules so only the real grails trigger CRITICAL,
and got the page down to 25 clean alerts. Created the dev journal. Built the morning
briefer — 7am daily email with overnight activity. Set up automated backups.
Five sessions in one day.
generate_alerts.py rewritten, morning_briefer.py, backup_drop_watcher.sh, JOURNAL.md
DAY 3
MARCH 8, 2026
The platform pivot. What started as a personal tool became something anyone could use.
Built the public signup page, a Flask API for watch registration, per-user keyword
matching, and email alerts. Set up Twilio for SMS. Named the server
ironman. The first user could now enter a URL and keywords and get
emailed when their thing showed up.
watcher_signup.py, per_user_alerter.py, watchlist.html, sms_alerter.py
DAY 4
MARCH 9, 2026
Shut everything down clean before a Montana trip. Commented out every cron job,
stopped both supervisord services, silenced friend alerts. Left a restart checklist
in the journal. Sometimes the best engineering is knowing when to turn it off.
crontab, supervisord
DAYS 5–7
MARCH 10–12 — MONTANA
Off the grid. Ironman slept.
DAY 8
MARCH 13, 2026
Back and running. Completed Twilio A2P 10DLC registration for SMS. Rewrote the
alerter to drop legacy boss/friends BCC and wire in SMS for CRITICAL. Built the
personal dashboard — magic link auth, matched drops view, stop watching.
Fixed keyword matching that was too broad. Rewrote the README to reflect what this
had become: a platform.
alerter.py, my-alerts.html, get-my-link.html, README.md
DAY 9
MARCH 14, 2026
Security and hardening day. Full XSS audit across every Python file and every HTML
page. CORS locked down. Rate limiting on every API route. Input validation, file
locking, SSRF protection. Built a self-healing watchdog that checks services every
2 minutes and auto-restarts them before alerting. Set up DMARC. Redesigned the
landing page. Rewrote all user-facing emails. Then the big one: separated code,
config, data, and logs into proper Linux directories with tight permissions.
Built paths.py — one file that every script imports so
paths are never hardcoded again.
paths.py, watchdog.py, safe_fetch.py, bin/migrate_dirs.sh, index.html
HOW WE WORK
Every session starts the same way. I paste the server state into Claude and say
"continuing Drop Watcher dev." Claude reads the journal, sees what's running, and
picks up exactly where we left off. I describe what I want in plain English. Claude
writes the code. I ship it to ironman with one command. We test. We iterate.
SIMON
its great — lets make some sre stuff to watch ironman and alert when gunnie corn dies
CLAUDE
A self-healing watchdog. Checks gunicorn, web_watcher, apache, disk.
Tries to fix it first. Only emails you if the fix fails.
SIMON
bleh don't want an email — can't it heal itself?
CLAUDE
That's exactly what it does. Check → heal → re-check → only alert if heal fails.