Source available · BUSL 1.1

Read the prompts that draft your petition.

Every prompt, every tool call, every LaTeX template behind an O-1A, EB-1A, or NIW draft — published under a source-available license you can audit, fork, and self-host. Bring your own Anthropic key. Your case never touches our servers. Don't have an attorney yet? The hosted service can match you with a partner immigration law firm at a discounted review-and-file rate.

One repo · Two licenses · Zero telemetry when self-hosted

Why open source

The prompts are the product. Hiding them was never going to work.

An AI that drafts a legal filing has to earn trust. You can't earn it behind a curtain. So we published the curtain. Read the system prompt. Read the tool schemas. Read the LaTeX skeleton the agent uses to build a petition. Then decide.

BYOK by default

Self-host with your own Anthropic key. Your prompts and case data go directly to Anthropic. We're not in the loop.

Prompts published

agent-turn, agent-tools, petition-templates, exhibit-review, letters — all in the tree. Fork, tune, or audit.

Trust, testable

No black box for the part that matters. If it drafts a bad section, you can see exactly why and fix it.

Open-core, honestly labeled

What's in the repo. What isn't.

Everything that drafts a petition is open. Everything that runs the hosted business — Stripe, referrals, the lawyer network, transactional email — lives in a /ee folder under a proprietary license. Self-hosters get working stubs; the hosted service runs the real thing.

Open · BUSL 1.1

The drafting workspace

  • Agent turn loop + full tool schemas
  • O-1A / EB-1A / NIW petition templates
  • Exhibit ingestion, OCR, review prompts
  • Recommendation-letter drafting
  • LaTeX pipeline (SwiftLaTeX WASM, in-browser)
  • BYOK Anthropic client + AES-GCM key storage
  • Supabase schema for projects, sections, exhibits, chat
Enterprise · proprietary

What pays for the hosted service

  • Managed Anthropic billing (per-case Stripe checkout)
  • Referral engine + credits + payouts
  • Partner law-firm directory + discounted review-and-file intros
  • Lifecycle + transactional email templates
  • Admin console
  • PostHog + Meta Pixel + CAPI wiring

The boundary is enforced by CI: open code can only reach the enterprise surface through a single documented barrel with a no-op stub. Delete /ee and the app still builds, still drafts petitions — it just doesn't send emails or charge cards.

Self-host

Running your own copy takes about ten minutes.

Supabase for storage. Bun for the dev server. Your own Anthropic key. That's the whole stack.

  • Deploy anywhere that runs a Cloudflare Worker or Node process.
  • Two-way sync with GitHub — edit locally, ship from Actions, or the other way around.
  • BUSL 1.1 converts to Apache 2.0 after four years. No lock-in on old code.
Terminal
# clone
git clone https://github.com/Job-Protocol/visaworker.git
cd visaworker

# install
bun install

# wire Supabase (local or hosted)
supabase link --project-ref $YOUR_REF
supabase db push

# drop your Anthropic key in .env
BYOK_ENCRYPTION_KEY=$(openssl rand -hex 32)

# go
bun run dev
Skip the reading

Instruct your coding agent to do it for you.

Paste this into Cursor, Claude Code, Codex, Windsurf, or any shell-capable agent. It installs, wires Supabase, asks for your keys, and boots the dev server.

  • Stops for your API key — nothing is auto-committed.
  • Leaves you with a running dev server, ready to draft.
Agent prompt
Self-host VisaWorker for me. It's a TanStack Start app on Cloudflare Workers, Supabase for data, BYOK Anthropic key.

1. Clone https://github.com/Job-Protocol/visaworker and cd into it.
2. Run `bun install` (or `npm install` if bun is missing).
3. Create .env from .env.example. Ask me for:
   - Supabase URL, publishable key, service-role key, and project ref
   - Anthropic API key
   Then generate BYOK_ENCRYPTION_KEY with `openssl rand -hex 32` and write it to .env.
4. Run `supabase link --project-ref <ref>` and `supabase db push`. Show the migration list first.
5. Run `bun run dev` and report the preview URL.

Rules:
- Never commit secrets. Confirm .env is in .gitignore before any git add.
- /ee is proprietary and stubbed in the open build. `ee_required` errors are expected; note and continue.
- Ask before installing anything outside the lockfile.
Paste into Cursor, Claude Code, Codex, Windsurf, or your terminal-based agent of choice.
Two ways to use it

Run it yourself, or let us.

Self-hosted · free

You run it

$0 + your Anthropic bill

Everything in the open repo. Your infra, your key, your data. Support is community-only.

  • Full drafting workspace
  • Bring your own Anthropic API key
  • All prompts and templates included
  • No telemetry, no lifecycle email
  • Community support via GitHub Issues
Hosted · $249 / case

We run it

Flat, per petition

Managed Anthropic billing, deliverability, human support. The proceeds fund the open codebase.

  • No key, no infra, no setup
  • Human support during your filing
  • Deliverability + tracked case comms
  • Find a partner law firm at a discounted rate
  • Same open codebase underneath
Data & security

Your case belongs to you.

Self-hosted: your prompts hit Anthropic directly with your key. Nothing routes through our servers. Hosted: BYOK keys are encrypted at rest with AES-256-GCM before they touch the database; the encryption key never leaves the server runtime; source is public so you can verify.