business-obligations 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/COVERAGE.md +16 -74
  3. package/README.md +4 -4
  4. package/data/cities/AK.json +0 -1
  5. package/data/cities/AL.json +2 -18
  6. package/data/cities/AR.json +0 -1
  7. package/data/cities/AZ.json +1 -16
  8. package/data/cities/CA.json +16 -164
  9. package/data/cities/CO.json +0 -12
  10. package/data/cities/CT.json +0 -5
  11. package/data/cities/DC.json +0 -1
  12. package/data/cities/FL.json +19 -146
  13. package/data/cities/GA.json +3 -27
  14. package/data/cities/HI.json +0 -1
  15. package/data/cities/IA.json +0 -3
  16. package/data/cities/ID.json +0 -3
  17. package/data/cities/IL.json +0 -7
  18. package/data/cities/IN.json +0 -4
  19. package/data/cities/KS.json +0 -5
  20. package/data/cities/KY.json +2 -9
  21. package/data/cities/LA.json +2 -11
  22. package/data/cities/MA.json +0 -6
  23. package/data/cities/MD.json +1 -8
  24. package/data/cities/MI.json +6 -24
  25. package/data/cities/MN.json +13 -7
  26. package/data/cities/MO.json +5 -27
  27. package/data/cities/MS.json +0 -1
  28. package/data/cities/MT.json +0 -1
  29. package/data/cities/NC.json +9 -18
  30. package/data/cities/ND.json +0 -1
  31. package/data/cities/NE.json +0 -2
  32. package/data/cities/NH.json +1 -8
  33. package/data/cities/NJ.json +1 -28
  34. package/data/cities/NM.json +0 -3
  35. package/data/cities/NV.json +0 -5
  36. package/data/cities/NY.json +4 -20
  37. package/data/cities/OH.json +6 -27
  38. package/data/cities/OK.json +0 -2
  39. package/data/cities/OR.json +0 -6
  40. package/data/cities/PA.json +2 -10
  41. package/data/cities/RI.json +0 -1
  42. package/data/cities/SC.json +3 -16
  43. package/data/cities/SD.json +0 -1
  44. package/data/cities/TN.json +3 -8
  45. package/data/cities/TX.json +36 -76
  46. package/data/cities/UT.json +0 -4
  47. package/data/cities/VA.json +7 -57
  48. package/data/cities/WA.json +5 -62
  49. package/data/cities/WI.json +0 -4
  50. package/data/cities/WV.json +0 -2
  51. package/data/counties/AK.json +1 -2
  52. package/data/counties/AL.json +6 -48
  53. package/data/counties/AR.json +3 -24
  54. package/data/counties/AZ.json +4 -32
  55. package/data/counties/CA.json +47 -183
  56. package/data/counties/CO.json +9 -48
  57. package/data/counties/CT.json +3 -6
  58. package/data/counties/DC.json +1 -8
  59. package/data/counties/DE.json +2 -4
  60. package/data/counties/FL.json +24 -192
  61. package/data/counties/GA.json +9 -30
  62. package/data/counties/HI.json +1 -2
  63. package/data/counties/IA.json +2 -4
  64. package/data/counties/ID.json +2 -16
  65. package/data/counties/IL.json +9 -18
  66. package/data/counties/IN.json +5 -40
  67. package/data/counties/KS.json +2 -16
  68. package/data/counties/KY.json +2 -16
  69. package/data/counties/LA.json +6 -48
  70. package/data/counties/MA.json +9 -18
  71. package/data/counties/MD.json +8 -16
  72. package/data/counties/ME.json +1 -2
  73. package/data/counties/MI.json +9 -18
  74. package/data/counties/MN.json +5 -10
  75. package/data/counties/MO.json +7 -26
  76. package/data/counties/MS.json +1 -2
  77. package/data/counties/NC.json +11 -34
  78. package/data/counties/NE.json +2 -16
  79. package/data/counties/NH.json +2 -4
  80. package/data/counties/NJ.json +15 -30
  81. package/data/counties/NM.json +0 -1
  82. package/data/counties/NV.json +2 -16
  83. package/data/counties/NY.json +17 -34
  84. package/data/counties/OH.json +12 -24
  85. package/data/counties/OK.json +3 -12
  86. package/data/counties/OR.json +5 -22
  87. package/data/counties/PA.json +16 -34
  88. package/data/counties/RI.json +1 -2
  89. package/data/counties/SC.json +8 -64
  90. package/data/counties/TN.json +6 -48
  91. package/data/counties/TX.json +24 -192
  92. package/data/counties/UT.json +4 -14
  93. package/data/counties/VA.json +9 -19
  94. package/data/counties/WA.json +9 -72
  95. package/data/counties/WI.json +4 -8
  96. package/data/counties/WV.json +0 -1
  97. package/data/states/AK.json +30 -49
  98. package/data/states/AL.json +25 -31
  99. package/data/states/AR.json +44 -78
  100. package/data/states/AZ.json +33 -47
  101. package/data/states/CA.json +34 -42
  102. package/data/states/CO.json +27 -35
  103. package/data/states/CT.json +32 -51
  104. package/data/states/DC.json +37 -58
  105. package/data/states/DE.json +57 -85
  106. package/data/states/FL.json +56 -74
  107. package/data/states/GA.json +37 -49
  108. package/data/states/HI.json +25 -33
  109. package/data/states/IA.json +41 -67
  110. package/data/states/ID.json +26 -44
  111. package/data/states/IL.json +59 -83
  112. package/data/states/IN.json +43 -73
  113. package/data/states/KS.json +48 -81
  114. package/data/states/KY.json +27 -47
  115. package/data/states/LA.json +37 -56
  116. package/data/states/MA.json +48 -78
  117. package/data/states/MD.json +28 -48
  118. package/data/states/ME.json +29 -49
  119. package/data/states/MI.json +40 -64
  120. package/data/states/MN.json +45 -79
  121. package/data/states/MO.json +39 -56
  122. package/data/states/MS.json +30 -48
  123. package/data/states/MT.json +51 -73
  124. package/data/states/NC.json +42 -67
  125. package/data/states/ND.json +41 -75
  126. package/data/states/NE.json +38 -65
  127. package/data/states/NH.json +29 -49
  128. package/data/states/NJ.json +29 -47
  129. package/data/states/NM.json +38 -53
  130. package/data/states/NV.json +44 -63
  131. package/data/states/NY.json +40 -61
  132. package/data/states/OH.json +43 -56
  133. package/data/states/OK.json +34 -45
  134. package/data/states/OR.json +38 -56
  135. package/data/states/PA.json +48 -81
  136. package/data/states/RI.json +32 -44
  137. package/data/states/SC.json +39 -49
  138. package/data/states/SD.json +28 -45
  139. package/data/states/TN.json +48 -74
  140. package/data/states/TX.json +39 -58
  141. package/data/states/UT.json +26 -44
  142. package/data/states/VA.json +52 -83
  143. package/data/states/VT.json +37 -48
  144. package/data/states/WA.json +41 -60
  145. package/data/states/WI.json +27 -34
  146. package/data/states/WV.json +44 -70
  147. package/data/states/WY.json +29 -46
  148. package/dist/cli.js +2989 -5621
  149. package/dist/index.cjs +3024 -5599
  150. package/dist/index.d.cts +33 -3
  151. package/dist/index.d.ts +33 -3
  152. package/dist/index.js +3010 -5599
  153. package/dist/{types-dcI6srbz.d.cts → types-BXB-_R0-.d.cts} +90 -53
  154. package/dist/{types-dcI6srbz.d.ts → types-BXB-_R0-.d.ts} +90 -53
  155. package/package.json +2 -2
  156. package/schema/business-profile.schema.json +5 -10
  157. package/schema/changes.schema.json +42 -11
  158. package/schema/cities.schema.json +113 -0
  159. package/schema/common.schema.json +135 -0
  160. package/schema/compliance-result.schema.json +25 -95
  161. package/schema/counties.schema.json +104 -0
  162. package/schema/local-item.schema.json +212 -0
  163. package/schema/professions.schema.json +61 -0
  164. package/schema/state.schema.json +398 -221
package/CHANGELOG.md CHANGED
@@ -5,6 +5,29 @@ project follows [Semantic Versioning](https://semver.org/) with the data-aware p
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.4.0] - 2026-10-16
9
+
10
+ ### Breaking changes
11
+
12
+ - **data:** one fee source (feeDetail, text generated); required fields where data always has them
13
+ - **data:** store fees, state codes, withholding and enum values once
14
+
15
+ ### Added
16
+
17
+ - **data:** sourceUrl may be a list of official pages
18
+ - **data:** stricter, documented state schema in a logical key order; fewer stored duplicates
19
+ - **data:** iCalendar rrule as the single source for schedules; schemas for city, county and profession data
20
+
21
+ ### Fixed
22
+
23
+ - **data:** write each deadline date once, in the rrule
24
+
25
+ ## [0.3.1] - 2026-10-16
26
+
27
+ ### Fixed
28
+
29
+ - **data:** Minneapolis sick and safe time, Nashville license fee, Austin sourcing
30
+
8
31
  ## [0.3.0] - 2026-10-16
9
32
 
10
33
  ### Fixed
package/COVERAGE.md CHANGED
@@ -1,79 +1,21 @@
1
1
  # Coverage
2
2
 
3
- <!-- Generated by scripts/coverage.mjs from data/; do not edit by hand. -->
3
+ What the bundled data covers and how well each part was checked is recorded in the data itself. This page explains
4
+ where to look; it holds no figures of its own, so it cannot go out of date.
4
5
 
5
- What the bundled data covers and how well each part was checked. "Checked" means confirmed against an official
6
- page on the date shown; everything not listed as checked is compiled from public knowledge. See
7
- [CONTRIBUTING.md](CONTRIBUTING.md) to improve a row.
6
+ | Question | Look at |
7
+ | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
8
+ | When was a state last checked, and what could not be confirmed? | [`data/states/<XX>.json`](data/states), `verification.checkedOn` and `verification.unconfirmed` |
9
+ | Which entity reports does a state have? | The `llcReport`, `corpReport`, `lpReport` and `llpReport` keys of the same file |
10
+ | Which cities are seeded, and with what? | [`data/cities/<XX>.json`](data/cities): `items` (rules), `status` (`none` or `unverified` when empty), `checkedOn` |
11
+ | Which counties? | [`data/counties/<XX>.json`](data/counties), same shape |
12
+ | Which large cities and counties are still missing? | Compare [`data/top-cities.json`](data/top-cities.json) and [`data/top-counties.json`](data/top-counties.json) with the folders above |
13
+ | How is each answer sourced? | `provenance` on every returned item (`checked`, `compiled` or `unconfirmed`, with sources and dates) |
8
14
 
9
- - **Jurisdictions:** 51 (50 states and DC)
10
- - **States with unconfirmed fields:** 1
11
- - **Seeded cities:** 307: 164 with city-specific rules, 25 checked with no general city license or tax, 118 researched but unconfirmed (all other cities get the state's local licensing regime named for the city and county)
12
- - **Seeded counties:** 312: 145 with county-specific filings (mainly business personal property returns), the rest researched but unconfirmed or with nothing county-level
13
- - **300 largest counties** (approximate): 297 of 300 covered
14
- - **300 largest cities** (2020 census; ranks beyond 100 are approximate): 300 of 300 covered
15
+ "Checked" means confirmed against an official page on the date shown. Everything not marked checked is compiled from
16
+ public knowledge. An entry with `status: "unverified"` was researched but no official page confirmed either way; one
17
+ with `status: "none"` has an official page saying there is nothing.
15
18
 
16
- | State | Checked on | Entity reports | DBA level | Gross-receipts / margin tax | UI data year | Seeded cities | Unconfirmed fields |
17
- | ----- | ---------- | ------------------ | --------- | --------------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
18
- | AK | 2026-10-13 | LLC, CORP | checked | text | 2026 | Anchorage | — |
19
- | AL | 2026-10-13 | none | checked | text | 2026 | Birmingham, Huntsville, Mobile, Montgomery | — |
20
- | AR | 2026-10-13 | LLC, CORP, LP, LLP | checked | text | 2026 | Little Rock | — |
21
- | AZ | 2026-10-13 | CORP, LLP | checked | text | 2026 | Chandler, Gilbert, Glendale, Mesa, Peoria, Phoenix, Scottsdale, Surprise, Tempe, Tucson | — |
22
- | CA | 2026-10-13 | LLC, CORP | checked | text | 2026 | Anaheim, Antioch, Bakersfield, Berkeley, Burbank, Carlsbad, Chico, Chula Vista, Clovis, Concord, Corona, Costa Mesa, Daly City, Downey, El Monte, Elk Grove, Escondido, Fairfield, Fremont, Fresno, Fullerton, Garden Grove, Glendale, Hayward, Huntington Beach, Inglewood, Irvine, Jurupa Valley, Lancaster, Long Beach, Los Angeles, Menifee, Murrieta, Norwalk, Oakland, Oceanside, Ontario, Orange, Oxnard, Palmdale, Pomona, Rancho Cucamonga, Richmond, Riverside, Roseville, Sacramento, Salinas, San Diego, San Francisco, San Jose, San Mateo, Santa Ana, Santa Clara, Santa Clarita, Santa Maria, Santa Rosa, Simi Valley, Stockton, Sunnyvale, Temecula, Thousand Oaks, Torrance, Vacaville, Vallejo, Ventura, Victorville, Visalia | — |
23
- | CO | 2026-10-13 | LLC, CORP | checked | text | 2026 | Arvada, Aurora, Boulder, Centennial, Colorado Springs, Denver, Fort Collins, Greeley, Lakewood, Pueblo, Thornton, Westminster | — |
24
- | CT | 2026-10-13 | LLC, CORP | checked | text | 2026 | Bridgeport, Hartford, New Haven, Stamford, Waterbury | — |
25
- | DC | 2026-10-13 | LLC, CORP | checked | text | 2026 | Washington | — |
26
- | DE | 2026-10-13 | LLC, CORP, LLP | checked | text | 2026 | — | — |
27
- | FL | 2026-10-13 | LLC, CORP, LP, LLP | checked | text | 2026 | Cape Coral, Clearwater, Coral Springs, Davie, Fort Lauderdale, Gainesville, Hialeah, Hollywood, Jacksonville, Lakeland, Miami, Miramar, Orlando, Palm Bay, Pembroke Pines, Pompano Beach, St. Petersburg, Tallahassee, Tampa, West Palm Beach | — |
28
- | GA | 2026-10-13 | LLC, CORP | checked | text | 2026 | Athens, Atlanta, Augusta, Columbus, Sandy Springs, Savannah | — |
29
- | HI | 2026-10-13 | LLC, CORP | checked | text | 2026 | Honolulu | — |
30
- | IA | 2026-10-13 | LLC, CORP, LP | checked | text | 2026 | Cedar Rapids, Davenport, Des Moines | — |
31
- | ID | 2026-10-13 | LLC, CORP | checked | text | 2026 | Boise, Meridian, Nampa | — |
32
- | IL | 2026-10-13 | LLC, CORP, LP, LLP | checked | text | 2026 | Aurora, Chicago, Joliet, Naperville, Peoria, Rockford, Springfield | — |
33
- | IN | 2026-10-13 | LLC, CORP, LP, LLP | checked | text | 2026 | Evansville, Fort Wayne, Indianapolis, South Bend | — |
34
- | KS | 2026-10-13 | LLC, CORP, LP, LLP | checked | text | 2026 | Kansas City, Olathe, Overland Park, Topeka, Wichita | — |
35
- | KY | 2026-10-13 | LLC, CORP | checked | text | 2026 | Lexington, Louisville | — |
36
- | LA | 2026-10-13 | LLC, CORP, LLP | checked | text | 2026 | Baton Rouge, Lafayette, New Orleans, Shreveport | — |
37
- | MA | 2026-10-13 | LLC, CORP, LP, LLP | checked | text | 2026 | Boston, Cambridge, Lowell, Quincy, Springfield, Worcester | — |
38
- | MD | 2026-10-13 | LLC, CORP | checked | text | 2026 | Baltimore | — |
39
- | ME | 2026-10-13 | LLC, CORP | checked | text | 2026 | — | — |
40
- | MI | 2026-10-13 | LLC, CORP, LLP | checked | text | 2026 | Ann Arbor, Detroit, Flint, Grand Rapids, Lansing, Sterling Heights, Warren | — |
41
- | MN | 2026-10-13 | LLC, CORP, LP, LLP | checked | text | 2026 | Minneapolis, Rochester, Saint Paul | — |
42
- | MO | 2026-10-13 | CORP, LLP | checked | text | 2026 | Columbia, Independence, Kansas City, Lee's Summit, Springfield, St. Louis | — |
43
- | MS | 2026-10-13 | LLC, CORP | checked | text | 2026 | Jackson | — |
44
- | MT | 2026-10-13 | LLC, CORP, LP, LLP | checked | text | 2026 | Billings | — |
45
- | NC | 2026-10-13 | LLC, CORP, LLP | checked | text | 2026 | Cary, Charlotte, Concord, Durham, Fayetteville, Greensboro, Raleigh, Wilmington, Winston-Salem | — |
46
- | ND | 2026-10-13 | LLC, CORP, LP, LLP | checked | text | 2026 | Fargo | — |
47
- | NE | 2026-10-13 | LLC, CORP, LLP | checked | text | 2026 | Lincoln, Omaha | — |
48
- | NH | 2026-10-13 | LLC, CORP | checked | text | 2026 | Manchester | — |
49
- | NJ | 2026-10-13 | LLC, CORP | checked | text | 2026 | Edison, Elizabeth, Jersey City, Newark, Paterson | — |
50
- | NM | 2026-10-13 | CORP, LLP | checked | text | 2026 | Albuquerque, Las Cruces, Rio Rancho | — |
51
- | NV | 2026-10-13 | LLC, CORP | checked | structured | 2026 | Henderson, Las Vegas, North Las Vegas, Reno, Sparks | — |
52
- | NY | 2026-10-13 | LLC, CORP, LLP | checked | text | 2026 | Albany, Buffalo, New York, Rochester, Syracuse, Yonkers | — |
53
- | OH | 2026-10-13 | LLP | checked | structured | 2026 | Akron, Cincinnati, Cleveland, Columbus, Dayton, Toledo | — |
54
- | OK | 2026-10-13 | LP | checked | text | 2026 | Oklahoma City, Tulsa | — |
55
- | OR | 2026-10-13 | LLC, CORP | checked | structured | 2026 | Bend, Eugene, Gresham, Hillsboro, Portland, Salem | — |
56
- | PA | 2026-10-13 | LLC, CORP, LP, LLP | checked | text | 2026 | Allentown, Philadelphia, Pittsburgh | — |
57
- | RI | 2026-10-13 | LLC, CORP | checked | text | 2026 | Providence | — |
58
- | SC | 2026-10-13 | CORP, LLP | checked | text | 2026 | Charleston, Columbia | — |
59
- | SD | 2026-10-13 | LLC, CORP | checked | text | 2026 | Sioux Falls | — |
60
- | TN | 2026-10-13 | LLC, CORP, LP, LLP | checked | text | 2026 | Chattanooga, Clarksville, Knoxville, Memphis, Murfreesboro, Nashville | lpReport.fee |
61
- | TX | 2026-10-13 | LLC, CORP | checked | structured | 2026 | Abilene, Allen, Arlington, Austin, Beaumont, Brownsville, Carrollton, College Station, Corpus Christi, Dallas, Denton, Edinburg, El Paso, Fort Worth, Frisco, Garland, Grand Prairie, Houston, Irving, Killeen, Laredo, Lewisville, Lubbock, McAllen, McKinney, Mesquite, Midland, Mission, Odessa, Pasadena, Pearland, Plano, Richardson, Round Rock, San Angelo, San Antonio, Sugar Land, Tyler, Waco, Wichita Falls | — |
62
- | UT | 2026-10-13 | LLC, CORP | checked | text | 2026 | Provo, Salt Lake City, West Jordan, West Valley City | — |
63
- | VA | 2026-10-13 | LLC, CORP, LP, LLP | checked | text | 2026 | Alexandria, Chesapeake, Hampton, Newport News, Norfolk, Richmond, Roanoke, Virginia Beach | — |
64
- | VT | 2026-10-13 | LLC, CORP, LLP | checked | text | 2026 | — | — |
65
- | WA | 2026-10-13 | LLC, CORP | checked | text | 2026 | Bellevue, Bellingham, Everett, Pasco, Renton, Seattle, Spokane, Tacoma, Vancouver | — |
66
- | WI | 2026-10-13 | LLC, CORP | checked | text | 2026 | Green Bay, Kenosha, Madison, Milwaukee | — |
67
- | WV | 2026-10-13 | LLC, CORP, LLP | checked | text | 2026 | Charleston, Huntington | — |
68
- | WY | 2026-10-13 | LLC, CORP | checked | text | 2026 | — | — |
69
-
70
- ## Columns
71
-
72
- - **Entity reports:** report types with a state-specific rule (LLC, corporation, LP, LLP). Entities without one fall
73
- back to the corporation report.
74
- - **DBA level:** whether the trade-name filing level and office were checked.
75
- - **Gross-receipts / margin tax:** `structured` states expose a threshold and rate and compare it with
76
- `annualRevenue`; others are described in text only.
77
- - **UI data year:** year of the unemployment-insurance wage base and rates (U.S. DOL, Significant Provisions of
78
- State Unemployment Insurance Laws).
79
- - **Unconfirmed fields:** fields the last review could not confirm; the best estimate is used.
19
+ To get counts and a per-state table straight from the JSON, run `npm run coverage` (or `npm run coverage -- --json`
20
+ for machine-readable output). Nothing is generated or committed. To improve an entry, see
21
+ [CONTRIBUTING.md](../../CONTRIBUTING.md).
package/README.md CHANGED
@@ -87,7 +87,7 @@ Every item says **why** it applies (`reason`), **who** to deal with (`authority`
87
87
  ## Why trust it (and when not to)
88
88
 
89
89
  - **Honest about its confidence.** Each state records what was checked against official pages and on what date; what
90
- could not be confirmed is listed, not hidden. See [COVERAGE.md](https://github.com/Alisa007/business-obligations/blob/main/packages/core/COVERAGE.md), generated from the data.
90
+ could not be confirmed is listed, not hidden. See [COVERAGE.md](https://github.com/Alisa007/business-obligations/blob/main/packages/core/COVERAGE.md) for where that is recorded in the JSON.
91
91
  - **Specific, not generic.** All 50 states and DC have their own filing agency, report fees and deadlines, unemployment
92
92
  insurance parameters, workers' compensation triggers and licensing authorities. Twenty-six cities are seeded
93
93
  with local requirements; the rest get the state's local licensing regime.
@@ -111,7 +111,7 @@ them. Start with [CONTRIBUTING.md](https://github.com/Alisa007/business-obligati
111
111
  npm install business-obligations
112
112
  ```
113
113
 
114
- ESM and CommonJS are both supported. Node 20+. About 57 KB gzipped, no runtime dependencies.
114
+ ESM and CommonJS are both supported. Node 20+. About 115 KB gzipped, no runtime dependencies.
115
115
 
116
116
  ## Using it from plain JavaScript
117
117
 
@@ -234,7 +234,7 @@ Machine-readable: [`schema/business-profile.schema.json`](https://github.com/Ali
234
234
  - **City (seeded):** the 300 largest US cities (2020 census, ranks beyond 100 approximate) are all covered, in `data/cities/<STATE>.json`: some
235
235
  with city-specific taxes and licenses, some checked and found to have no general city license or tax
236
236
  (`status: "none"`), and some researched but not confirmed from an official page (`status: "unverified"`).
237
- [`COVERAGE.md`](https://github.com/Alisa007/business-obligations/blob/main/packages/core/COVERAGE.md) lists them. Every other city returns the state's typical local licensing regime,
237
+ The JSON in [`data/cities`](https://github.com/Alisa007/business-obligations/tree/main/packages/core/data/cities) lists them (see [`COVERAGE.md`](https://github.com/Alisa007/business-obligations/blob/main/packages/core/COVERAGE.md)). Every other city returns the state's typical local licensing regime,
238
238
  named for the city and county you pass in. City data is one file per state and looked up by an index, so adding
239
239
  thousands more is a data change; to keep the bundle small you can also load city data yourself and add it with
240
240
  `seededCityRule(indexCities(seeds))`.
@@ -413,7 +413,7 @@ It sets no cookies, records no sessions and respects Do Not Track. It is off unl
413
413
 
414
414
  ## Size
415
415
 
416
- The core bundle is about 57 KB gzipped with all 51 jurisdictions' data. ZIP lookup (about 305 KB gzipped) lives in the
416
+ The core bundle is about 115 KB gzipped with all 51 jurisdictions' data. ZIP lookup (about 305 KB gzipped) lives in the
417
417
  separate `business-obligations/zip` entry and is only loaded when you import it. `npm run size` enforces the budgets.
418
418
 
419
419
  ## Extending
@@ -1,6 +1,5 @@
1
1
  [
2
2
  {
3
- "state": "AK",
4
3
  "city": "Anchorage",
5
4
  "status": "unverified",
6
5
  "note": "Whether the Municipality requires a general business license was not confirmed; the state business license applies.",
@@ -1,6 +1,5 @@
1
1
  [
2
2
  {
3
- "state": "AL",
4
3
  "city": "Birmingham",
5
4
  "counties": ["Jefferson", "Shelby"],
6
5
  "items": [
@@ -18,7 +17,6 @@
18
17
  ]
19
18
  },
20
19
  {
21
- "state": "AL",
22
20
  "city": "Huntsville",
23
21
  "counties": ["Madison", "Limestone"],
24
22
  "items": [
@@ -28,13 +26,7 @@
28
26
  "category": "license",
29
27
  "authority": "City of Huntsville Finance Department",
30
28
  "description": "Licenses expire December 31; renewal is due January 31, a 15% penalty applies from February 1 and 30% from March 1 (insurance licenses are due the last day of February).",
31
- "frequency": "annual",
32
- "deadline": "January 31",
33
- "due": {
34
- "type": "fixed",
35
- "month": 1,
36
- "day": 31
37
- },
29
+ "rrule": "FREQ=YEARLY;BYMONTH=1;BYMONTHDAY=31",
38
30
  "url": "https://www.huntsvilleal.gov/?p=121",
39
31
  "appliesTo": ["all"]
40
32
  }
@@ -42,7 +34,6 @@
42
34
  "checkedOn": "2026-10-13"
43
35
  },
44
36
  {
45
- "state": "AL",
46
37
  "city": "Mobile",
47
38
  "counties": ["Mobile"],
48
39
  "items": [
@@ -52,13 +43,7 @@
52
43
  "category": "license",
53
44
  "authority": "City of Mobile Revenue Department",
54
45
  "description": "Licenses expire December 31, are due January 1 and become delinquent after January 31; a 15% penalty applies in February and 30% from March 1.",
55
- "frequency": "annual",
56
- "deadline": "January 1 (delinquent after January 31)",
57
- "due": {
58
- "type": "fixed",
59
- "month": 1,
60
- "day": 31
61
- },
46
+ "rrule": "FREQ=YEARLY;BYMONTH=1;BYMONTHDAY=31",
62
47
  "url": "https://www.cityofmobile.gov/business-license-overview/",
63
48
  "appliesTo": ["all"]
64
49
  }
@@ -66,7 +51,6 @@
66
51
  "checkedOn": "2026-10-13"
67
52
  },
68
53
  {
69
- "state": "AL",
70
54
  "city": "Montgomery",
71
55
  "counties": ["Montgomery"],
72
56
  "items": [
@@ -1,6 +1,5 @@
1
1
  [
2
2
  {
3
- "state": "AR",
4
3
  "city": "Little Rock",
5
4
  "status": "unverified",
6
5
  "note": "The Treasury page still shows an old renewal date (January 1, 2024); the current date was not confirmed.",
@@ -1,6 +1,5 @@
1
1
  [
2
2
  {
3
- "state": "AZ",
4
3
  "city": "Chandler",
5
4
  "counties": ["Maricopa"],
6
5
  "items": [
@@ -18,7 +17,6 @@
18
17
  "checkedOn": "2026-10-13"
19
18
  },
20
19
  {
21
- "state": "AZ",
22
20
  "city": "Gilbert",
23
21
  "counties": ["Maricopa"],
24
22
  "items": [
@@ -36,7 +34,6 @@
36
34
  "checkedOn": "2026-10-13"
37
35
  },
38
36
  {
39
- "state": "AZ",
40
37
  "city": "Glendale",
41
38
  "counties": ["Maricopa"],
42
39
  "items": [
@@ -54,7 +51,6 @@
54
51
  "checkedOn": "2026-10-13"
55
52
  },
56
53
  {
57
- "state": "AZ",
58
54
  "city": "Mesa",
59
55
  "counties": ["Maricopa"],
60
56
  "items": [
@@ -72,7 +68,6 @@
72
68
  "checkedOn": "2026-10-13"
73
69
  },
74
70
  {
75
- "state": "AZ",
76
71
  "city": "Peoria",
77
72
  "counties": ["Maricopa", "Yavapai"],
78
73
  "items": [
@@ -90,7 +85,6 @@
90
85
  "checkedOn": "2026-10-13"
91
86
  },
92
87
  {
93
- "state": "AZ",
94
88
  "city": "Phoenix",
95
89
  "counties": ["Maricopa"],
96
90
  "items": [
@@ -107,7 +101,6 @@
107
101
  ]
108
102
  },
109
103
  {
110
- "state": "AZ",
111
104
  "city": "Scottsdale",
112
105
  "status": "unverified",
113
106
  "note": "Only the state-administered TPT license was confirmed from the city's pages; a separate city business registration was not.",
@@ -117,7 +110,6 @@
117
110
  "checkedOn": "2026-10-13"
118
111
  },
119
112
  {
120
- "state": "AZ",
121
113
  "city": "Surprise",
122
114
  "counties": ["Maricopa"],
123
115
  "items": [
@@ -135,7 +127,6 @@
135
127
  "checkedOn": "2026-10-13"
136
128
  },
137
129
  {
138
- "state": "AZ",
139
130
  "city": "Tempe",
140
131
  "counties": ["Maricopa"],
141
132
  "items": [
@@ -145,13 +136,8 @@
145
136
  "category": "license",
146
137
  "authority": "City of Tempe Financial Services, Sales Tax and Licensing",
147
138
  "description": "The general business license (effective August 1, 2025) applies to businesses with a permanent Tempe location, including those with no TPT license; the first renewal is due before January 1, 2027 and annually after that. Regulatory licenses are separate.",
148
- "frequency": "annual",
139
+ "rrule": "FREQ=YEARLY;BYMONTH=12;BYMONTHDAY=31",
149
140
  "deadline": "Before January 1 each year (first renewal before January 1, 2027)",
150
- "due": {
151
- "type": "fixed",
152
- "month": 12,
153
- "day": 31
154
- },
155
141
  "url": "https://www.tempe.gov/government/financial-services/sales-tax-licensing/general-business-license",
156
142
  "appliesTo": ["all"]
157
143
  }
@@ -159,7 +145,6 @@
159
145
  "checkedOn": "2026-10-13"
160
146
  },
161
147
  {
162
- "state": "AZ",
163
148
  "city": "Tucson",
164
149
  "counties": ["Pima"],
165
150
  "items": [