<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: xincheng zhang</title>
    <description>The latest articles on DEV Community by xincheng zhang (@xincheng_zhang_c558527e49).</description>
    <link>https://dev.to/xincheng_zhang_c558527e49</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4027895%2Facdca2f1-98b8-4c4a-a230-158dcf31837e.png</url>
      <title>DEV Community: xincheng zhang</title>
      <link>https://dev.to/xincheng_zhang_c558527e49</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/xincheng_zhang_c558527e49"/>
    <language>en</language>
    <item>
      <title>I Was Tired of Refreshing Reddit for My OPT Status, So I Built a Tool That Does It For Me</title>
      <dc:creator>xincheng zhang</dc:creator>
      <pubDate>Mon, 13 Jul 2026 23:43:51 +0000</pubDate>
      <link>https://dev.to/xincheng_zhang_c558527e49/i-was-tired-of-refreshing-reddit-for-my-opt-status-so-i-built-a-tool-that-does-it-for-me-1898</link>
      <guid>https://dev.to/xincheng_zhang_c558527e49/i-was-tired-of-refreshing-reddit-for-my-opt-status-so-i-built-a-tool-that-does-it-for-me-1898</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;&lt;a href="https://www.optpulse.org/" rel="noopener noreferrer"&gt;OPT Pulse&lt;/a&gt;&lt;/strong&gt; to fix that.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz7e747xb86ka644m9ndg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz7e747xb86ka644m9ndg.png" alt="OPT Pulse homepage showing the community-sourced processing tracker" width="800" height="580"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem: official estimates vs. reality
&lt;/h2&gt;

&lt;p&gt;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 &lt;em&gt;this week&lt;/em&gt;. 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.&lt;/p&gt;

&lt;p&gt;OPT Pulse turns that scattered, community-reported data into something you can actually query.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;🔮 Decision date predictor&lt;/strong&gt;&lt;br&gt;
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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsibnw5n22hr0kizzweoz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsibnw5n22hr0kizzweoz.png" alt="Decision date predictor tool with input field and estimated window" width="800" height="581"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffu3gnq8k4cf00xt9swi1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffu3gnq8k4cf00xt9swi1.png" alt="Decision date predictor" width="800" height="545"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔍 Case lookup&lt;/strong&gt;&lt;br&gt;
See exactly how everyone else who applied on your date is doing — approval rate, average processing days, and how your case compares.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Premium processing calculator&lt;/strong&gt;&lt;br&gt;
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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📅 Unemployment day tracker&lt;/strong&gt;&lt;br&gt;
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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fogal5iaojqycacr3vqyu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fogal5iaojqycacr3vqyu.png" alt="Unemployment day tracker with visual timeline" width="800" height="579"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📄 I-983 guide &amp;amp; offer letter generator&lt;/strong&gt;&lt;br&gt;
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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the data is actually trustworthy
&lt;/h2&gt;

&lt;p&gt;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 &lt;strong&gt;separately by service center&lt;/strong&gt; (NBC, TSC, PSC, VSC), because processing pace can vary wildly between them, and lumping them together would just add noise.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack, for the fellow devs
&lt;/h2&gt;

&lt;p&gt;Since this is dev.to, here's the part you probably care about more than immigration paperwork:&lt;/p&gt;

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

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

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

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.optpulse.org/" rel="noopener noreferrer"&gt;optpulse.org&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;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.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>webdev</category>
      <category>nextjs</category>
      <category>career</category>
    </item>
  </channel>
</rss>
