{
  "article": {
    "url": "https://floridalicenseindex.com/electrical/changelog-september-2026/",
    "headline": "Florida's Electrical-Contractor File Changed After August 31. Here's What the First Update Shows.",
    "datePublished": "2026-09-01",
    "dateModified": "2026-09-01"
  },
  "methodologyVersion": "2026-09-01.1",
  "sourceUrl": "https://www2.myfloridalicense.com/sto/file_download/extracts/lic08el.csv",
  "artifacts": {
    "terminalPreCutoff": {
      "label": "Terminal pre-cutoff capture",
      "manifestPath": "data/snapshots/eclb/2026-08-31/212955Z/manifest.json",
      "blobCapture": "2026-08-31/161231Z",
      "pulledAtUtc": "2026-08-31T21:29:55.476Z",
      "httpLastModified": "Mon, 31 Aug 2026 10:46:29 GMT",
      "sha256": "63181f37c77fb446dc57e1546963b13fa6bd529dd96f1a548adc12e085984324",
      "byteLength": 4328637,
      "rowCount": 21777,
      "credentialRowCount": 19678,
      "nonCredentialRowCount": 2099
    },
    "firstPostCutoff": {
      "label": "First post-cutoff capture",
      "manifestPath": "data/snapshots/eclb/2026-09-01/051806Z/manifest.json",
      "blobCapture": "2026-09-01/051806Z",
      "pulledAtUtc": "2026-09-01T05:18:06.120Z",
      "httpLastModified": "Mon, 31 Aug 2026 10:46:29 GMT",
      "sha256": "63181f37c77fb446dc57e1546963b13fa6bd529dd96f1a548adc12e085984324",
      "byteLength": 4328637,
      "rowCount": 21777,
      "credentialRowCount": 19678,
      "nonCredentialRowCount": 2099
    },
    "firstChangedPostCutoff": {
      "label": "First changed post-cutoff capture",
      "manifestPath": "data/snapshots/eclb/2026-09-01/133218Z/manifest.json",
      "blobCapture": "2026-09-01/133218Z",
      "pulledAtUtc": "2026-09-01T13:32:18.204Z",
      "httpLastModified": "Tue, 01 Sep 2026 10:45:59 GMT",
      "sha256": "71bbe7369027d1982c14ece3c7836f2f4ff9e96aa35a9912584bba1fe89066c3",
      "byteLength": 4329246,
      "rowCount": 21781,
      "credentialRowCount": 19682,
      "nonCredentialRowCount": 2099
    },
    "confirmingPostCutoff": {
      "label": "Later confirming capture",
      "manifestPath": "data/snapshots/eclb/2026-09-01/172537Z/manifest.json",
      "blobCapture": "2026-09-01/133218Z",
      "pulledAtUtc": "2026-09-01T17:25:37.150Z",
      "httpLastModified": "Tue, 01 Sep 2026 10:45:59 GMT",
      "sha256": "71bbe7369027d1982c14ece3c7836f2f4ff9e96aa35a9912584bba1fe89066c3",
      "byteLength": 4329246,
      "rowCount": 21781,
      "credentialRowCount": 19682,
      "nonCredentialRowCount": 2099
    }
  },
  "reconciliation": {
    "earlierTotal": 21777,
    "laterTotal": 21781,
    "matched": 21775,
    "unchangedMatched": 21452,
    "changedMatched": 323,
    "earlierOnly": 2,
    "laterOnly": 6,
    "credential": {
      "earlierTotal": 19678,
      "laterTotal": 19682,
      "matched": 19676,
      "unchangedMatched": 19353,
      "changedMatched": 323,
      "earlierOnly": 2,
      "laterOnly": 6
    },
    "nonCredential": {
      "earlierTotal": 2099,
      "laterTotal": 2099,
      "matched": 2099,
      "unchangedMatched": 2099,
      "changedMatched": 0,
      "earlierOnly": 0,
      "laterOnly": 0
    }
  },
  "centralFigures": {
    "credentialRowsBefore": 19678,
    "credentialRowsAfter": 19682,
    "netCredentialRows": 4,
    "expiration2026To2028Matched": 291,
    "secondaryActiveToInactiveMatched": 6,
    "appearedCredentialRows": 6,
    "noLongerPresentCredentialRows": 2,
    "duplicateIdentifierGroups": 36,
    "blankIdentifierRowsPerArtifact": 1
  },
  "expirationDistribution": {
    "08/31/2026": {
      "before": 3197,
      "after": 2905,
      "net": -292
    },
    "08/31/2028": {
      "before": 16481,
      "after": 16777,
      "net": 296
    }
  },
  "primaryStatusDistribution": {
    "C": {
      "before": 19503,
      "after": 19507,
      "net": 4
    },
    "P": {
      "before": 158,
      "after": 158,
      "net": 0
    },
    "S": {
      "before": 17,
      "after": 17,
      "net": 0
    }
  },
  "secondaryStatusDistribution": {
    "A": {
      "before": 18167,
      "after": 18166,
      "net": -1
    },
    "I": {
      "before": 1511,
      "after": 1516,
      "net": 5
    }
  },
  "occupationCounts": {
    "EC": {
      "before": 13242,
      "after": 13245,
      "net": 3
    },
    "ER": {
      "before": 1931,
      "after": 1931,
      "net": 0
    },
    "EF": {
      "before": 1635,
      "after": 1636,
      "net": 1
    },
    "EG": {
      "before": 615,
      "after": 615,
      "net": 0
    },
    "EY": {
      "before": 83,
      "after": 82,
      "net": -1
    },
    "EH": {
      "before": 3,
      "after": 3,
      "net": 0
    },
    "EZ": {
      "before": 24,
      "after": 24,
      "net": 0
    },
    "EI": {
      "before": 9,
      "after": 9,
      "net": 0
    },
    "ES": {
      "before": 1994,
      "after": 1995,
      "net": 1
    },
    "ET": {
      "before": 142,
      "after": 142,
      "net": 0
    },
    "EJ": {
      "before": 0,
      "after": 0,
      "net": 0
    }
  },
  "changedFieldCounts": {
    "licenseeName": 1,
    "doingBusinessAs": 8,
    "addressLine1": 37,
    "addressLine2": 5,
    "city": 22,
    "state": 8,
    "zip": 30,
    "countyCode": 14,
    "secondaryStatus": 6,
    "effectiveDate": 6,
    "expirationDate": 291
  },
  "caveat": "These are observations about two dated DBPR files. A row's appearance, disappearance, or field change does not, by itself, establish why the change occurred or the credential's current legal status. DBPR says this download includes active, inactive, and voluntarily inactive licensees while excluding null-and-void, delinquent, and involuntarily inactive records; the file does not identify which excluded category explains an absent row. Use DBPR's live lookup for current verification."
}
