# State-by-State Automation Status — 52 Jurisdictions (50 States + DC + BC Canada)

**Last updated:** 2026-04-05

This document tracks the implementation status of name search and entity filing
automation for all 52 jurisdictions (50 states + DC + BC Canada).

## Status Legend

| Symbol | Meaning |
|--------|---------|
| WORKING | Tested and functional |
| READY | Selectors verified, needs Playwright testing |
| BLOCKED-CAPTCHA | Portal has CAPTCHA, needs solving service or manual step |
| BLOCKED-LOGIN | Portal requires account/login before search or filing |
| BLOCKED-WAF | Portal has Web Application Firewall blocking automation |
| BLOCKED-PAYMENT | Automation works up to payment step |
| NEEDS-RESEARCH | Portal not yet inspected |
| API | Uses REST API, no browser needed |

---

## Tier 1: API-Based Name Search (No Browser Needed)

| State | Code | Name Search | Filing | Portal | Notes |
|-------|------|-------------|--------|--------|-------|
| **Colorado** | CO | **WORKING (API)** | NEEDS-RESEARCH | data.colorado.gov | Socrata SODA API. Dataset 4ykn-tg5h. Free, no auth. Confirmed working with live test. |

### Other Potential Socrata States (Untested)

These states have open data portals that MAY have business entity datasets:

| State | Code | Socrata Domain | Dataset ID | Status |
|-------|------|---------------|------------|--------|
| Alaska | AK | data.alaska.gov | Unknown | NEEDS-RESEARCH |
| Connecticut | CT | data.ct.gov | Unknown | NEEDS-RESEARCH |
| Illinois | IL | data.illinois.gov | Unknown | NEEDS-RESEARCH |
| Iowa | IA | data.iowa.gov | Unknown | NEEDS-RESEARCH |
| Michigan | MI | data.michigan.gov | Unknown | NEEDS-RESEARCH |
| New York | NY | data.ny.gov | Unknown | NEEDS-RESEARCH |
| Oregon | OR | data.oregon.gov | Unknown | NEEDS-RESEARCH |
| Pennsylvania | PA | data.pa.gov | Unknown | NEEDS-RESEARCH |
| Vermont | VT | data.vermont.gov | Unknown | NEEDS-RESEARCH |
| Washington | WA | data.wa.gov | Unknown | NEEDS-RESEARCH |

**Action needed:** Search each Socrata domain for business entity datasets. If found, these states can use API-based name search like Colorado.

---

## Tier 2: Selectors Verified (Ready for Playwright Testing)

| State | Code | Name Search | Filing | Portal | Key Selectors | Barriers |
|-------|------|-------------|--------|--------|---------------|----------|
| **Wyoming** | WY | **READY** | NEEDS-RESEARCH | wyobiz.wyo.gov | Name: `#MainContent_txtFilingName`, Search: `#MainContent_cmdSearch`, Contains: `#MainContent_chkSearchIncludes` | ASP.NET WebForms postback. No CAPTCHA on name search. |
| **Delaware** | DE | **BLOCKED-CAPTCHA** | BLOCKED-CAPTCHA | icis.corp.delaware.gov | Name: `#ctl00_ContentPlaceHolder1_frmEntityName`, FileNo: `#ctl00_ContentPlaceHolder1_frmFileNumber`, Submit: `#ctl00_ContentPlaceHolder1_btnSubmit`, CAPTCHA panel: `#ctl00_ContentPlaceHolder1_pnlCaptcha` | **CAPTCHA on every search.** Anti-scraping warning: "Use of automated tools may result in suspension." CAPTCHA image at `/Ecorp/CaptchaHandler.ashx`. Solving service (2captcha/anticaptcha) needed. |
| **Utah** | UT | **READY** | BLOCKED-LOGIN | secure.utah.gov | Entity search at `/EntitySearch/OnlineEntitySearch` (no login). Name availability at `/NameAvailabilitySearch` (no login). Filing requires UtahID login (OAuth). | Name search accessible without login. Modern web app (not ASP.NET). Filing requires UtahID OAuth. |

---

## Tier 3: Portal Requires Account/Login

| State | Code | Portal | Login Type | What's Needed |
|-------|------|--------|------------|---------------|
| **Texas** | TX | direct.sos.state.tx.us | SOSDirect account (client_id + password) | Regular subscription for filing. Temporary login available for searches (credit card required). Need to create SOSDirect account. Password expires every 90 days. |
| **Utah** | UT | secure.utah.gov | UtahID (OAuth) | Filing requires creating a UtahID account. Name search works without login. |

---

## Tier 4: Portal Blocks Non-Browser Requests (Need Playwright)

These portals returned 403 or similar when fetched without a real browser.
Playwright with stealth settings should work for these.

| State | Code | Portal URL | HTTP Status | Notes |
|-------|------|-----------|-------------|-------|
| **Florida** | FL | search.sunbiz.org | 403 | Blocks curl/fetch. Playwright should work. |
| **Ohio** | OH | businesssearch.ohiosos.gov | 403 | Same — blocks non-browser requests. |
| **California** | CA | businesssearch.sos.ca.gov | Connection refused | URL may have changed. Try bizfileonline.sos.ca.gov. |

---

## Tier 5: WAF/Anti-Bot Protection

| State | Code | Portal | Protection | What's Needed |
|-------|------|--------|-----------|---------------|
| **Nevada** | NV | esos.nv.gov | Incapsula/Imperva WAF | Returns Incapsula challenge page. Need Playwright with advanced stealth (random delays, mouse movements, browser fingerprint randomization). May need residential proxy. |

---

## Tier 6: Not Yet Researched (37 States)

| State | Code | Known Portal URL | Priority |
|-------|------|-----------------|----------|
| Alabama | AL | sos.alabama.gov | Low |
| Alaska | AK | commerce.alaska.gov | Medium (check Socrata) |
| Arizona | AZ | ecorp.azcc.gov | Medium |
| Arkansas | AR | biz.sos.arkansas.gov | Low |
| Connecticut | CT | service.ct.gov | Medium (check Socrata) |
| Georgia | GA | ecorp.sos.ga.gov | Medium |
| Hawaii | HI | hbe.ehawaii.gov | Low |
| Idaho | ID | sosbiz.idaho.gov | Low |
| Illinois | IL | apps.ilsos.gov | Medium (check Socrata) |
| Indiana | IN | bsd.sos.in.gov | Low |
| Iowa | IA | sos.iowa.gov | Medium (check Socrata) |
| Kansas | KS | kansas.gov/bess | Low |
| Kentucky | KY | app.sos.ky.gov | Low |
| Louisiana | LA | coraweb.sos.la.gov | Low |
| Maine | ME | icrs.informe.org | Low |
| Maryland | MD | egov.maryland.gov | Low |
| Massachusetts | MA | corp.sec.state.ma.us | Low |
| Michigan | MI | cofs.lara.state.mi.us | Medium (check Socrata) |
| Minnesota | MN | mblsportal.sos.state.mn.us | Low |
| Mississippi | MS | corp.sos.ms.gov | Low |
| Missouri | MO | bsd.sos.mo.gov | Low |
| Montana | MT | biz.sosmt.gov | Low |
| Nebraska | NE | sos.nebraska.gov | Low |
| New Hampshire | NH | quickstart.sos.nh.gov | Low |
| New Jersey | NJ | njportal.com/dor | Low |
| New Mexico | NM | portal.sos.state.nm.us | Medium |
| New York | NY | appext20.dos.ny.gov | Medium (check Socrata) |
| North Carolina | NC | sosnc.gov | Low |
| North Dakota | ND | firststop.sos.nd.gov | Low |
| Oklahoma | OK | sos.ok.gov | Low |
| Oregon | OR | egov.sos.state.or.us | Medium (check Socrata) |
| Pennsylvania | PA | file.dos.pa.gov | Medium (check Socrata) |
| Rhode Island | RI | business.sos.ri.gov | Low |
| South Carolina | SC | businessfilings.sc.gov | Low |
| South Dakota | SD | sosenterprise.sd.gov | Low |
| Tennessee | TN | tnbear.tn.gov | Low |
| Vermont | VT | bizfilings.vermont.gov | Medium (check Socrata) |
| Virginia | VA | cis.scc.virginia.gov | Medium |
| Washington | WA | ccfs.sos.wa.gov | Medium (check Socrata) |
| West Virginia | WV | apps.wv.gov | Low |
| Wisconsin | WI | apps.dfi.wi.gov | Low |
| DC | DC | corponline.dcra.dc.gov | Low |

---

## BC (British Columbia, Canada)

| State | Code | Name Search | Filing | Portal | Notes |
|-------|------|-------------|--------|--------|-------|
| **BC** | BC | Stubbed | Stubbed | corporateonline.gov.bc.ca | Part of Canada CRTC Carrier Package ($3,899). BC Registry uses Corporate Online portal (anonymous — no login required). Name reservation via bcregistrynames.gov.bc.ca. COLIN selectors need live session verification (Steps 5-12). |

BC adapter also handles (14-step pipeline in `services/canada_crtc.py`):
- Anytime Mailbox setup (329 Howe St, Vancouver) — implemented (Playwright + IMAP OTP)
- .ca domain provisioning via HestiaCP (cp.carrierone.com) — implemented
- Canadian DID via Flowroute — implemented
- CRTC registration letter — implemented (DOCX → MinIO → DocServer PDF)
- eSign portal — implemented (canvas signature, JWT auth, 72h expiry)
- BITS registration — implemented (Step 11: GCKey provisioning + admin ToDo)
- CCTS membership — implemented (Step 12: admin ToDo + client obligations email)
- Compliance calendar — implemented (Step 13: 17 entries — regulatory + tax + ATS)
- Corporate binder compilation — implemented (pikepdf + reportlab)
- GCKey provisioning — implemented (Playwright 5-step wizard, hCaptcha handling)
- Renewal lifecycle — implemented (renewal_worker.py daily cron)

### GCKey Automation Details

| Step | Status | Notes |
|------|--------|-------|
| Step 1 — Terms | **Verified** | `input[name=_eventId_accept]`, no CAPTCHA |
| Step 2 — Username | **Verified** | `input[name=uid][id=userID]`, hCaptcha invisible (sitekey mapped) |
| Step 3 — Password | Inferred | `input[type=password]` fields, hCaptcha likely |
| Step 4 — Security Q&A | Inferred | `select` dropdowns + text answer fields |
| Step 5 — Email/Confirm | Inferred | email field + submit |

hCaptcha solver integration stubbed — needs 2captcha/CapSolver API key for production.

---

## Filing Barriers (Universal)

These barriers apply to ALL states once name search is working:

1. **Payment processing** — Every state requires payment for filing. Most accept credit card via web form. Automating credit card entry requires PCI considerations. Options:
   - Pre-funded SOSDirect-style accounts (TX, some others)
   - Credit card entry via Playwright (risky, PCI compliance concern)
   - Manual payment step (admin enters card in browser, automation fills rest)

2. **Document upload** — Some states require uploading signed Articles of Organization as PDF. Others have online forms that generate the document.

3. **Registered agent acceptance** — Some states require the RA to accept/confirm before filing completes. NW RA may handle this automatically for their wholesale partners.

4. **Publication requirements** — AZ and NY require newspaper publication after filing. This is a manual/semi-manual step that cannot be fully automated.

---

## Priority Implementation Order

Based on formation volume and customer demand:

1. **Wyoming** (WY) — Selectors verified, highest priority. No CAPTCHA.
2. **Colorado** (CO) — API working for name search. Need filing automation.
3. **Delaware** (DE) — Selectors verified but CAPTCHA blocks automation. Need solving service.
4. **Florida** (FL) — High demand. Needs Playwright (403 from curl). No CAPTCHA expected.
5. **Texas** (TX) — High demand. Need SOSDirect account. Temporary login for searches.
6. **Nevada** (NV) — High demand for privacy. WAF blocks. Need stealth Playwright.
7. **Utah** (UT) — Name search without login. Cheapest state. Filing needs UtahID.
8. **New Mexico** (NM) — Cheap, no annual fees. Untested portal.
9. **Ohio** (OH) — No annual fees. Needs Playwright (403).
10. **Montana** (MT) — Cheapest LLC ($35). Untested portal.

---

## Next Steps

### Immediate (this session)
- [x] Verify Colorado Socrata API (CONFIRMED WORKING)
- [x] Extract Delaware selectors from live HTML
- [x] Extract Texas login requirements
- [x] Document Utah portal structure
- [ ] Test Wyoming name search via Playwright
- [ ] Search Socrata domains for more API-accessible states

### Short-term (next session)
- [ ] Set up 2captcha or anticaptcha integration for Delaware
- [ ] Create SOSDirect account for Texas
- [ ] Create UtahID account for Utah
- [ ] Fetch and extract selectors for FL, NV, CA, OH via Playwright
- [ ] Test name search on WY, UT, FL, OH via Playwright

### Medium-term
- [ ] Implement filing automation for WY (first state to go live)
- [ ] Implement filing automation for CO (second, API head start)
- [ ] Set up CAPTCHA solving for DE
- [ ] Research and extract selectors for remaining 37 states

### Long-term
- [ ] Complete all 52 jurisdiction name search implementations (50 states + DC + BC)
- [ ] Complete all 52 jurisdiction filing implementations
- [ ] Handle payment step for each state
- [ ] Set up monitoring for portal changes (selectors break when states update their sites)
