DEV Community

xincheng zhang
xincheng zhang

Posted on

I Was Tired of Refreshing Reddit for My OPT Status, So I Built a Tool That Does It For Me

If you've ever filed an I-765 for OPT or STEM OPT, you know the drill: you submit your application, and then... you wait. USCIS gives you a generic "80 days" estimate that's rarely accurate, so you end up doing what thousands of other F-1 students do — refreshing r/f1visa every night, scrolling through comment threads trying to find someone whose "receipt date" matches yours.

I built OPT Pulse to fix that.

OPT Pulse homepage showing the community-sourced processing tracker

The problem: official estimates vs. reality

USCIS's processing time pages tell you a range, but that range is wide, slow to update, and doesn't reflect what's actually happening at your specific service center this week. Meanwhile, the real signal — thousands of applicants posting "Received EAD today, applied on X" — is scattered across Reddit threads that are impossible to search or aggregate by hand.

OPT Pulse turns that scattered, community-reported data into something you can actually query.

What it does

🔮 Decision date predictor
Enter your application date and get an estimated decision window, built from the most recent non-premium cases that match your timeline — not a static USCIS number.

Decision date predictor tool with input field and estimated window

Decision date predictor

🔍 Case lookup
See exactly how everyone else who applied on your date is doing — approval rate, average processing days, and how your case compares.

⚡ Premium processing calculator
Counts your 30-business-day I-765 premium processing window automatically, skipping weekends and federal holidays, and gives you a refund checklist ready for the day USCIS blows past day 30.

📅 Unemployment day tracker
Log your employment history and get a visual timeline of exactly how many of your 90 (or 150 with STEM) unemployment days you have left. This is the one people forget about until it's almost too late — now you don't have to do the math yourself.

Unemployment day tracker with visual timeline

📄 I-983 guide & offer letter generator
A section-by-section walkthrough of Form I-983 (who fills what, common mistakes), plus a generator that spits out a ready-to-use PDF offer letter for your employer.

Why the data is actually trustworthy

Every single case in OPT Pulse is pulled and verified from real applicant reports on r/f1visa — not modeled, not estimated, not scraped from a stale government dataset. Timelines are also tracked separately by service center (NBC, TSC, PSC, VSC), because processing pace can vary wildly between them, and lumping them together would just add noise.

And no, you don't need to sign up for anything. No account, no SEVIS ID, no name. Just look up your date and go.

The stack, for the fellow devs

Since this is dev.to, here's the part you probably care about more than immigration paperwork:

  • Next.js for the app, with a clean page.tsx (server component, metadata only) + XxxPageClient.tsx (client component, interactivity) split
  • shadcn/ui + Tailwind for the UI
  • next-intl for multilingual support
  • A companion Chrome Extension (Manifest V3) that talks to a /api/predict endpoint, so you can get a prediction without even opening the site

It's the kind of project that started as "I'll just track my own case in a spreadsheet" and turned into a full-blown multilingual web app — a pattern I suspect a lot of indie hackers reading this will recognize.

Try it

If you're currently in OPT/STEM OPT limbo (or know someone who is), give it a shot:

👉 optpulse.org

It's free, it's anonymous, and it might save you a few dozen late-night Reddit scrolling sessions. If you have feedback or feature ideas, there's a "suggest a feature" link right on the site — I'm actively building this based on what real applicants ask for.


Have you dealt with the OPT/STEM OPT waiting game? Curious what other "waiting on the government" problems you've turned into side projects — drop them in the comments.

Top comments (0)