Javis OS
Javis OS is an Agentic AI that assists entrepreneurs in business tasks, helping them grow their work.
AI translation
See where DOL's PERM queue stands today and look up any case number free, no account. Deadlines computed for the cases you track.
BusinessTypeScript · PythonGitHub @adamjaliOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Federal labor certification data read straight from DOL, plus PERM case management for immigration attorneys. Case lookup across PERM, prevailing wage and H-1B LCA. Next.js 16, Convex, Turso.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Federal labor-certification data, read from the source, for the people waiting on a case and the attorneys filing them.
Two products sharing one corpus.
The public side answers the question most people arrive with: where is my case, and when is it likely to move? Anyone can look up a case number across all three Department of Labor programs, search by employer, law firm, worksite state or occupation, and read what DOL has published about wages, queue position and decision activity. No account required.Read the full README ↗Federal labor-certification data, read from the source, for the people waiting on a case and the attorneys filing them.
Live: https://permtracker.app
Two products sharing one corpus.
The public side starts from one question: where is my case, and when is it likely to move? Anyone can look up a case number in any Department of Labor foreign-labor program, search by employer, law firm, worksite state or occupation, and read what DOL has published about wages, queue position and decision activity. No account required.
The application is case management for immigration attorneys: deadline calculation under 20 CFR 656.40, cascade logic, recruitment windows, notifications and calendar sync.
The public side isn't marketing for the app. It's the larger half by traffic and by page count, and it's what the data pipeline exists to serve.
Every dataset has a first-party source of record. There are zero live third-party data dependencies.
| Dataset | Source | Cadence |
|---|---|---|
| Per-case status, every program | DOL flag.dol.gov batch API | A full sweep and two pending sweeps a day; watched cases every 5 minutes on weekdays |
| New filings | DOL, found by a serial walk and by visitor lookups | Twice a day; lookups instant |
| Decided cases, wages, worksites | DOL quarterly disclosure files | Quarterly, checked monthly |
| Processing times | DOL FLAG | Hourly on weekdays |
| Visa bulletin, visa issuances | US State Department | Hourly on weekdays / monthly |
| Form medians, I-140 and I-485 counts | USCIS quarterly and monthly files | Quarterly / monthly |
| Layoff (WARN) notices | 47 state labor agencies and DC | Daily |
| Job, wage and place reference data | O*NET, BLS, Census, BEA | Yearly |
DOL runs every foreign-labor program off one case-number counter, and this reads all of them:
| Program | Prefix | What it is |
|---|---|---|
| PERM | G-100- | The permanent labor certification itself |
| Prevailing wage determination | P-100- | ETA-9141, the wage a job must legally pay |
| H-1B labor condition application | I-200-, I-203- | ETA-9035, the wage and worksite commitment |
| H-2A, H-2B and CW-1 | H-300-, H-400-, JO-A-300-, C-500-, P-400- | Seasonal and CW-1 applications, job orders and wage requests |
Each program is published twice and needs both halves. The live endpoint covers pending cases but never returns the wage; the quarterly file carries the wage but only for decided cases. Reading one and not the other is how a page ends up claiming a determination was issued when there isn't one on it.
Figures read on the site on October 26, 2026.
| What | Cases |
|---|---|
| Decided PERM cases in DOL's current files (October 2023 to June 2026) | 373,939 |
| PERM cases DOL's live service holds beyond those files | 161,996 |
| Decided wage requests | 634,638 |
| H-1B LCAs with the wage offered | 3,754,961 |
Older PERM decisions reach back to FY2016. The site publishes 312,683 URLs across 67 sitemaps: content and data pages, and a page for every employer, law firm, occupation, city and industry in the record, down to a single filing.
| Layer | Technology |
|---|---|
| Frontend | Next.js 16.4 (App Router), React 19.3, TypeScript 6 (strict) |
| Application backend | Convex 1.47 |
| Public data | libSQL (self-hosted sqld), two databases |
| Styling | Tailwind CSS 4 + shadcn/ui |
| Auth | Convex Auth + Google OAuth |
| Resend, and Cloudflare Email Workers for inbound mail | |
| AI | AI SDK 7, multi-provider fallback |
| Hosting | An Oracle Cloud server behind Cloudflare (site and public data), Convex Cloud (app backend) |
| Ingest | Python, on GitHub Actions and the server's systemd timers |
Two datastores, on purpose. Convex holds user data and drives the authenticated app in real time. libSQL holds the public federal corpus, which is read-heavy, append-mostly and far too big to sit in a document store; the H-1B LCAs have a database of their own. The site's default database token is read-only; writes ride a separate credential.
Prerequisites: Node.js 24.15+, pnpm, Python 3.12+ for the ingest scripts.
cd v2
pnpm install
npx convex dev # Terminal 1
pnpm dev # Terminal 2
Copy .env.example to .env.local and fill it in. Server-side secrets live in the Convex dashboard, not in the repo.
| Command | What it runs | Time |
|---|---|---|
pnpm test | Watch mode | instant |
pnpm check | The pre-push gate: typecheckers, data script tests, source audits, eslint, and the tests a change affects | ~2 to 6 min |
pnpm test:run | All 5 projects | ~12 min |
pnpm test:e2e | Playwright | ~2 min |
pnpm typecheck | Both typecheckers, app and Convex | ~1 min |
Baseline: 787 files, 10,530 tests. A run that reports meaningfully fewer has broken somewhere and doesn't count as a pass. GitHub runs the whole suite on every push, and nothing deploys until it passes.
v2/
├── convex/ # Application backend
│ └── lib/perm/ # Central PERM business logic (canonical)
├── src/
│ ├── app/ # Routes: (site), (authenticated), api, v1, mcp
│ ├── components/ # React components
│ ├── lib/db/ # Public-data read layer (server-only)
│ └── lib/perm/ # Frontend re-exports of the Convex logic
├── content/ # MDX: blog (27), guides (86), changelog (14)
├── scripts/ # Python ingest and audit scripts
└── test-utils/
All PERM business logic lives in convex/lib/perm/ and nowhere else. Deadline, validation and cascade rules are never reimplemented in a component.
| v2/CLAUDE.md | Primary developer guide. Patterns, gotchas, post-mortems |
| perm_flow.md | The PERM process itself, canonical |
| v2/docs/API.md | Convex API reference |
| v2/TEST_README.md | Test infrastructure |
| .planning/codebase/ | Seven codebase deep-dives |
Some documents under .planning/codebase/ are dated snapshots and their counts have drifted. v2/CLAUDE.md and pnpm test:run are current; treat the rest as orientation.
Pushing to main builds the site on GitHub, and it goes live in the nightly window between 1 and 5 AM Eastern, once the full test suite has passed. Every deploy empties the page cache, so deploys are batched. Convex functions deploy separately with npx convex deploy -y from v2/.
convex/_generated/ is committed, because the build runs from git and would otherwise typecheck against a stale API.
All rights reserved. See LICENSE. The source is published for reference. It isn't open source, and you don't get permission to use, copy, modify or distribute it.
Built with Claude Code · Last updated: October 2026