<?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: xjokerabab</title>
    <description>The latest articles on DEV Community by xjokerabab (@xjokerabab).</description>
    <link>https://dev.to/xjokerabab</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%2F4191931%2F23a4bd09-4dcb-48b6-8084-ff845a608de3.png</url>
      <title>DEV Community: xjokerabab</title>
      <link>https://dev.to/xjokerabab</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/xjokerabab"/>
    <language>en</language>
    <item>
      <title>Tracking the US Visa Bulletin as Open Data (Not Screenshots)</title>
      <dc:creator>xjokerabab</dc:creator>
      <pubDate>Sun, 18 Oct 2026 10:57:38 +0000</pubDate>
      <link>https://dev.to/xjokerabab/tracking-the-us-visa-bulletin-as-open-data-not-screenshots-5eoh</link>
      <guid>https://dev.to/xjokerabab/tracking-the-us-visa-bulletin-as-open-data-not-screenshots-5eoh</guid>
      <description>&lt;p&gt;Every month the US Department of State publishes the &lt;a href="https://travel.state.gov/content/travel/en/legal/visa-law0/visa-bulletin.html" rel="noopener noreferrer"&gt;Visa Bulletin&lt;/a&gt; — the official chart that tells employment- and family-based immigrant applicants whether their priority date is current. For years, the practical workflow for a lot of people (including me) looked like this: open a PDF, squint at a table, paste a number into a spreadsheet, argue with friends about whether “C” means what they think it means.&lt;/p&gt;

&lt;p&gt;I got tired of that. So I built a small data site and an open dataset that re-publishes the bulletin in a form you can actually query.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Site:&lt;/strong&gt; &lt;a href="https://yiminshuju.com" rel="noopener noreferrer"&gt;yiminshuju.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Full bulletin tables:&lt;/strong&gt; &lt;a href="https://yiminshuju.com/paiqi/" rel="noopener noreferrer"&gt;yiminshuju.com/paiqi&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Open data:&lt;/strong&gt; &lt;a href="https://github.com/xjokerabab/visa-bulletin-cn" rel="noopener noreferrer"&gt;github.com/xjokerabab/visa-bulletin-cn&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What the site is (and isn’t)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://yiminshuju.com" rel="noopener noreferrer"&gt;yiminshuju.com&lt;/a&gt; aggregates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;US green card &lt;strong&gt;Visa Bulletin&lt;/strong&gt; dates (employment EB-1–EB-5 and family F1–F4)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USCIS processing times&lt;/strong&gt; by form and service center&lt;/li&gt;
&lt;li&gt;Canada &lt;strong&gt;Express Entry&lt;/strong&gt; draw scores (where published)&lt;/li&gt;
&lt;li&gt;A light multi-country policy index of &lt;em&gt;public&lt;/em&gt; numbers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is &lt;strong&gt;data only&lt;/strong&gt; — not a law firm, not a consultancy, not “we’ll get you a green card.” Every figure is tied back to an official source and stamped with an update date. If the government didn’t publish a field, the cell stays empty. No interpolated “estimates” dressed up as facts.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part that usually confuses people: Table A vs Table B
&lt;/h2&gt;

&lt;p&gt;The bulletin has two charts that look almost identical and mean very different things:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Chart&lt;/th&gt;
&lt;th&gt;Official name&lt;/th&gt;
&lt;th&gt;Practical meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Table A&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Final Action Dates&lt;/td&gt;
&lt;td&gt;When a visa number can actually be &lt;em&gt;used&lt;/em&gt; (final adjudication rhythm)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Table B&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Dates for Filing&lt;/td&gt;
&lt;td&gt;When USCIS &lt;em&gt;may&lt;/em&gt; allow you to file adjustment of status early — &lt;strong&gt;only if&lt;/strong&gt; USCIS says it is using Chart B that month&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A priority date that is “current” on Table B is not the same as being ready for final action on Table A. Mixing them up is one of the most common ways people misread the bulletin. The &lt;a href="https://yiminshuju.com/paiqi/" rel="noopener noreferrer"&gt;paiqi page&lt;/a&gt; keeps A and B side by side for China / Worldwide / India so you can compare without flipping PDFs.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;"C"&lt;/code&gt; generally means &lt;em&gt;Current&lt;/em&gt; (no backlog for that category that month). Treat it as a status code, not a calendar date.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why open data instead of another blog post
&lt;/h2&gt;

&lt;p&gt;Screenshots rot. PDFs get replaced. Chat threads lose the source link.&lt;/p&gt;

&lt;p&gt;The companion repo &lt;a href="https://github.com/xjokerabab/visa-bulletin-cn" rel="noopener noreferrer"&gt;&lt;code&gt;visa-bulletin-cn&lt;/code&gt;&lt;/a&gt; stores structured bulletin snapshots so you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Diff month-over-month movement by category and chargeability&lt;/li&gt;
&lt;li&gt;Build your own alerts (“EB-2 China Table A moved”)&lt;/li&gt;
&lt;li&gt;Cite a stable URL instead of “see the screenshot I sent last Tuesday”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sync happens after each new DOS bulletin drop; the site and the repo are meant to stay in step. Always treat the Department of State / USCIS originals as authoritative if anything disagrees.&lt;/p&gt;

&lt;h2&gt;
  
  
  A 30-second read of your own case
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Confirm category and country of chargeability (e.g. China-mainland birth, EB-2).&lt;/li&gt;
&lt;li&gt;Look at &lt;strong&gt;Table A&lt;/strong&gt; — is your priority date earlier than the final action cutoff?&lt;/li&gt;
&lt;li&gt;Look at &lt;strong&gt;Table B&lt;/strong&gt; — only relevant if USCIS is accepting Chart B filings that month.&lt;/li&gt;
&lt;li&gt;Separately check &lt;a href="https://yiminshuju.com" rel="noopener noreferrer"&gt;USCIS processing times&lt;/a&gt; for the form you actually filed (I-140, I-485, etc.). Processing time ≠ visa availability.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s it. No score, no “approval probability.”&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack notes (for the curious)
&lt;/h2&gt;

&lt;p&gt;Nothing exotic: scrape/parse official bulletin text into structured rows, render on a static-ish front end, keep the historical series in git. The interesting product decision wasn’t the framework — it was &lt;strong&gt;refusing to invent missing numbers&lt;/strong&gt;. Empty beats estimated when you’re dealing with immigration cutoffs.&lt;/p&gt;

&lt;p&gt;If you maintain your own pipeline, the repo is the cleaner input than OCR on a PDF.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Home / overview: &lt;a href="https://yiminshuju.com" rel="noopener noreferrer"&gt;https://yiminshuju.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Full Visa Bulletin tables: &lt;a href="https://yiminshuju.com/paiqi/" rel="noopener noreferrer"&gt;https://yiminshuju.com/paiqi/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Open bulletin data: &lt;a href="https://github.com/xjokerabab/visa-bulletin-cn" rel="noopener noreferrer"&gt;https://github.com/xjokerabab/visa-bulletin-cn&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Caveats
&lt;/h2&gt;

&lt;p&gt;This is a convenience layer over public government data. It is not legal advice, not a prediction of your case, and not a substitute for the official Visa Bulletin or USCIS notices. If you need a strategy call, talk to a licensed attorney — not a chart.&lt;/p&gt;

&lt;p&gt;Questions, corrections, or “this category looks wrong” issues are welcome on the GitHub repo.&lt;/p&gt;

</description>
      <category>immigration</category>
      <category>opensource</category>
      <category>data</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
