{
  "anchors": [
    {
      "about": "2-letter state/jurisdiction code (PD-003).",
      "format": "usps_state",
      "kind": "geography",
      "name": "state",
      "scope": "universal"
    },
    {
      "about": "5-digit Census county FIPS, zero-padded string.",
      "format": "fips5",
      "kind": "geography",
      "name": "county_fips",
      "scope": "universal"
    }
  ],
  "capability": "ai_infrastructure.employment",
  "codebooks": {
    "agglvl": {
      "codes": {
        "10": {
          "label": "National, total covered (all ownerships)"
        },
        "11": {
          "label": "National, total \u2014 by ownership"
        },
        "14": {
          "label": "National, by NAICS sector"
        },
        "15": {
          "label": "National, by NAICS 3-digit"
        },
        "18": {
          "label": "National, by 6-digit NAICS"
        },
        "50": {
          "label": "State, total covered (all ownerships)"
        },
        "51": {
          "label": "State, total \u2014 by ownership"
        },
        "54": {
          "label": "State, by NAICS sector"
        },
        "55": {
          "label": "State, by NAICS 3-digit"
        },
        "58": {
          "label": "State, by 6-digit NAICS"
        },
        "70": {
          "label": "County, total covered (all ownerships)"
        },
        "71": {
          "label": "County, total \u2014 by ownership"
        },
        "74": {
          "label": "County, by NAICS sector"
        },
        "75": {
          "label": "County, by NAICS 3-digit"
        },
        "78": {
          "label": "County, by 6-digit NAICS"
        }
      },
      "coverage": "national / state / county at each pinned industry depth (MSA excluded \u2014 CBSA codes don't fit the county_fips anchor)",
      "note": "First digit = geography (1 national / 5 state / 7 county); second digit = industry depth (0 total covered, 1 total by ownership, 4 NAICS sector, 5 NAICS 3-digit, 8 NAICS 6-digit). Geography NESTS \u2014 18 national contains 58 state contains 78 county \u2014 and the total depth (x0/x1, industry '10') contains every other depth. Filter to one level (or group_by agglvl) to avoid double-counting. Depth follows the industry_code: '10' lives at x0/x1, 23 and '44-45' at x4, 721/722 at x5, 236220/518210/334413 at x8.",
      "semantics": "bls_qcew_aggregation_level",
      "source": "BLS QCEW aggregation levels."
    },
    "industry": {
      "codes": {
        "10": {
          "label": "Total, all industries"
        },
        "23": {
          "label": "Construction"
        },
        "236220": {
          "label": "Commercial and institutional building construction"
        },
        "334413": {
          "label": "Semiconductor and related device manufacturing"
        },
        "44-45": {
          "label": "Retail trade"
        },
        "518210": {
          "label": "Computing infrastructure providers, data processing, web hosting, and related services"
        },
        "721": {
          "label": "Accommodation"
        },
        "722": {
          "label": "Food services and drinking places"
        }
      },
      "coverage": "the eight pinned industry series: the two AI-infrastructure NAICS + the PD-069 place-based local-economy set",
      "note": "DISTINCT series, never conflated. The only ancestries: '10' (total, all industries) contains every other series, and 23 (construction) contains 236220 (commercial building). The remaining series are mutually DISJOINT \u2014 721/722 sit under NAICS 72 (not served), NOT under retail '44-45'. Each code lives at its own agglvl depth ('10' at x0/x1; 23 and '44-45' at x4; 721/722 at x5; 236220/518210/334413 at x8); never sum a series with its ancestor. NAICS vintage: 2014-2021 coded under NAICS 2017, 2022Q1-forward under NAICS 2022 (BLS never recodes history) \u2014 the 2022 revision REDEFINED 518210, so its cross-2022Q1 level shift is reclassification, not a real change.",
      "semantics": "bls_qcew_naics_industry",
      "source": "BLS QCEW industry titles (NAICS 2022), verbatim."
    },
    "ownership": {
      "codes": {
        "0": {
          "label": "Total Covered"
        },
        "1": {
          "label": "Federal Government"
        },
        "2": {
          "label": "State Government"
        },
        "3": {
          "label": "Local Government"
        },
        "4": {
          "label": "International Government"
        },
        "5": {
          "label": "Private"
        },
        "8": {
          "label": "Total Government"
        },
        "9": {
          "label": "Total U.I. Covered (Excludes Federal Government)"
        }
      },
      "coverage": "the ownership sectors QCEW publishes",
      "note": "own_code 5 = Private (the usual filter). 0 'Total Covered' and 8 'Total Government' are TOTALS that already contain their components \u2014 never sum a total with its parts.",
      "semantics": "bls_qcew_ownership",
      "source": "BLS QCEW ownership titles, verbatim."
    }
  },
  "data_point": {
    "does_not_answer": [
      "an \"AI jobs\" or data-center-ONLY headcount (NAICS 518210 is the broader computing-infrastructure / hosting industry)",
      "employment or wages for a SUPPRESSED county x industry cell (BLS withholds it for confidentiality \u2014 served as absent null, never zero)",
      "jobs at the WORK SITE \u2014 QCEW counts jobs at the employer's establishment, so construction workers building in a county for an out-of-county contractor are counted where the contractor is based, not at the site",
      "industries beyond the eight pinned series (e.g. electrical contractors 238210 \u2014 largely absent/suppressed at county grain; not served)",
      "a definition-constant 518210 series across 2022Q1 \u2014 the NAICS-2022 revision REDEFINED 518210 (BLS codes 2014-2021 under NAICS 2017, 2022-forward under NAICS 2022, and never recodes history), so a level shift at that boundary (e.g. Loudoun County, -45% in one quarter) is reclassification, not jobs lost",
      "MSA / metro-area figures (CBSA codes like 'C1018' do not fit the county_fips anchor \u2014 national / state / county only)",
      "occupation, job title, or skill detail (QCEW is an INDUSTRY program, not an occupational one)",
      "which company or establishment employs (QCEW carries no employer-level breakdown)",
      "a measured zero where the cell is withheld (a suppressed 0 is absence, disambiguated by disclosure_code)"
    ],
    "grain": "area_industry_quarterly",
    "id": "ai_infrastructure.employment",
    "note": "This is INDUSTRY employment, establishments, and wages from BLS QCEW for eight pinned industry series \u2014 the data-center industry (NAICS 518210) and semiconductor manufacturing (NAICS 334413), plus the PD-069 place-based set: total all industries ('10'), construction (23), commercial building (236220), retail ('44-45'), accommodation (721), and food service (722) \u2014 served verbatim per (area, ownership, industry, quarter). It is NOT an 'AI jobs' count; a confidential county \u00d7 industry cell is served absent (withheld), never zero; and jobs count at the employer's ESTABLISHMENT, not the work site. Counts and employment are additive only WITHIN one agglvl + one ownership + one quarter; industry codes NEST ('10' contains 23 contains 236220 \u2014 each depth has its own agglvl); employment is a per-quarter stock (not summable across quarters).",
    "product_spec": "blocks/ai_infrastructure_employment/card.md",
    "represented_fact": "BLS Quarterly Census of Employment and Wages (QCEW) \u2014 quarterly establishment counts, monthly employment, and quarterly wages for eight industry series, by national / state / county and ownership, served exactly as BLS publishes: the two vertical industries \u2014 NAICS 518210 (computing infrastructure providers, data processing, web hosting \u2014 the data-center industry proxy) and NAICS 334413 (semiconductor manufacturing) \u2014 plus the place-based local-economy set (PD-069): total all industries (\"10\"), construction (23), commercial & institutional building construction (236220), retail trade (\"44-45\"), accommodation (721), and food services & drinking places (722), so an agent can read what a facility buildout does to a county's whole economy, not just the operator industry. INDUSTRY employment \u2014 NOT an \"AI jobs\" or data-center-only count (NAICS 518210 spans hosting broadly). A confidential county x industry cell is served ABSENT (BLS withholds employment/wages by zeroing them; we never serve that 0 as a measured zero). Jobs are counted at the EMPLOYER'S ESTABLISHMENT, not the work site \u2014 a construction crew building in county X for a contractor based in county Y counts in county Y. Each year is served exactly as BLS coded it \u2014 2014-2021 under NAICS 2017, 2022Q1-forward under NAICS 2022; BLS never recodes history.",
    "source_basis": [
      "employment.bls.qcew"
    ],
    "source_decisions": [
      "docs/sources/employment/bls_qcew/build-plan.md"
    ]
  },
  "input": {
    "controls": [
      "include_records",
      "include_evidence",
      "limit",
      "order_by",
      "top_n",
      "order",
      "rollup_other"
    ],
    "date_range_params": [
      "quarter_from",
      "quarter_to"
    ],
    "date_ranges": [
      "quarter"
    ],
    "field_metadata": {
      "avg_wkly_wage": {
        "answer_label": "average weekly wage",
        "counting_definition": "A per-cell average \u2014 non-additive: never sum or average it across cells; a withheld (disclosure 'N'/'-') cell carries no value.",
        "definition": "BLS's published average weekly wage ($) for the cell (total quarterly wages \u00f7 average monthly employment \u00f7 13 weeks, computed by BLS), served on DETAIL records only.",
        "semantics": "bls_qcew_average_weekly_wage",
        "source_field": "avg_wkly_wage"
      }
    },
    "filters": [
      "as_of",
      "industry",
      "industry_code",
      "ownership",
      "own_code",
      "state",
      "county_fips",
      "area_fips",
      "agglvl",
      "year",
      "qtr",
      "quarter",
      "quarter_from",
      "quarter_to"
    ],
    "group_by": [
      "industry",
      "industry_code",
      "ownership",
      "own_code",
      "state",
      "county_fips",
      "agglvl",
      "year",
      "qtr",
      "quarter"
    ],
    "ranking": {
      "no_ranking": "Omit order_by and top_n to return all groups in group-key order.",
      "order": {
        "default": "desc",
        "valid_values": [
          "desc",
          "asc"
        ]
      },
      "order_by": {
        "accepts": "one of output.metrics",
        "note": "Ranks the groups by a metric (a measure). Not a group_by dimension \u2014 rows already come back grouped by each group_by field.",
        "requires": [
          "group_by"
        ],
        "valid_values": [
          "qtrly_estabs",
          "month1_emplvl",
          "month2_emplvl",
          "month3_emplvl",
          "total_qtrly_wages",
          "source_record_count"
        ]
      },
      "top_n": {
        "note": "Keeps the top N groups by order_by; the rest fold into one (other) remainder (additive metrics sum into it, non-additive ones are nulled) so the result still reconciles to summary.totals.",
        "requires": [
          "group_by",
          "order_by"
        ],
        "type": "positive integer"
      }
    }
  },
  "output": {
    "aggregate_citation_fields": [
      "source_id",
      "publisher",
      "source_url",
      "source_file",
      "raw_file_sha256",
      "as_of",
      "source_rows_count",
      "source_rows_sample",
      "verify",
      "lineage_filter"
    ],
    "citation_fields": [
      "source_id",
      "source_url",
      "source_file",
      "sheet",
      "source_row",
      "raw_file_sha256",
      "as_of"
    ],
    "detail_fields": [
      "source_id",
      "sheet_name",
      "source_record_key",
      "report_period",
      "area_fips",
      "own_code",
      "industry_code",
      "agglvl_code",
      "size_code",
      "year",
      "qtr",
      "disclosure_code",
      "qtrly_estabs",
      "industry",
      "ownership",
      "state",
      "county_fips",
      "county_fips_source",
      "county_fips_unresolved",
      "quarter",
      "month1_emplvl",
      "month2_emplvl",
      "month3_emplvl",
      "total_qtrly_wages",
      "avg_wkly_wage",
      "source_row_number",
      "as_of",
      "raw_file_sha256",
      "citation"
    ],
    "metric_groups": {
      "employment": [
        "month1_emplvl",
        "month2_emplvl",
        "month3_emplvl"
      ],
      "establishments": [
        "qtrly_estabs"
      ],
      "records": [
        "source_record_count"
      ],
      "wages": [
        "total_qtrly_wages"
      ]
    },
    "metric_metadata": {
      "month1_emplvl": {
        "additive_across_groups": true,
        "aggregation": "sum",
        "authoritative_total_path": "summary.totals.month1_emplvl",
        "category": "employment",
        "definition": "BLS QCEW covered employment in the first month of the quarter for the industry \u00d7 area \u00d7 ownership in scope, served verbatim \u2014 INDUSTRY employment, not an 'AI jobs' count.",
        "description": "Covered employment in month 1 of the quarter. The three monthly columns are intra-quarter SNAPSHOTS \u2014 average them for a quarterly figure, never sum the three together; and employment is a per-quarter STOCK, so it is not summable across quarters (a qcew_period scope note flags that). Additive across distinct AREAS within ONE agglvl + ONE ownership + ONE quarter (e.g. summing all counties in a state). NOT additive across geographic levels (national contains states/counties \u2014 a qcew_hierarchy scope note flags it), across nesting industry series ('10' contains every other series; 23 contains 236220), or across the ownership totals (own_code 0/8 contain their components). A ranked top_n '(other)' remainder that would fold NESTING groups serves NULL metrics with a qcew_rollup_overlap note instead of a double-counted sum. A withheld (disclosure 'N'/'-') cell is served NULL, never zero (PD-048).",
        "display_name": "Employment (month 1 of quarter)",
        "display_precision": "Integer headcount (stored as double; rounded to 6 decimal places in JSON).",
        "grain": "area \u00d7 ownership \u00d7 industry \u00d7 quarter",
        "null_handling": "A withheld (confidential) cell is absent (null), never zero; a matched group with no atoms returns null; an empty-query summary returns zero.",
        "rollup_behavior": "additive_partition_metric",
        "row_metric_path": "rows[].metrics.month1_emplvl",
        "source_fields": [
          "month1_emplvl"
        ],
        "unit": "count"
      },
      "month2_emplvl": {
        "additive_across_groups": true,
        "aggregation": "sum",
        "authoritative_total_path": "summary.totals.month2_emplvl",
        "category": "employment",
        "definition": "BLS QCEW covered employment in the second month of the quarter for the industry \u00d7 area \u00d7 ownership in scope, served verbatim \u2014 INDUSTRY employment, not an 'AI jobs' count.",
        "description": "Covered employment in month 2 of the quarter. The three monthly columns are intra-quarter SNAPSHOTS \u2014 average them for a quarterly figure, never sum the three together; and employment is a per-quarter STOCK, so it is not summable across quarters (a qcew_period scope note flags that). Additive across distinct AREAS within ONE agglvl + ONE ownership + ONE quarter (e.g. summing all counties in a state). NOT additive across geographic levels (national contains states/counties \u2014 a qcew_hierarchy scope note flags it), across nesting industry series ('10' contains every other series; 23 contains 236220), or across the ownership totals (own_code 0/8 contain their components). A ranked top_n '(other)' remainder that would fold NESTING groups serves NULL metrics with a qcew_rollup_overlap note instead of a double-counted sum. A withheld (disclosure 'N'/'-') cell is served NULL, never zero (PD-048).",
        "display_name": "Employment (month 2 of quarter)",
        "display_precision": "Integer headcount (stored as double; rounded to 6 decimal places in JSON).",
        "grain": "area \u00d7 ownership \u00d7 industry \u00d7 quarter",
        "null_handling": "A withheld (confidential) cell is absent (null), never zero; a matched group with no atoms returns null; an empty-query summary returns zero.",
        "rollup_behavior": "additive_partition_metric",
        "row_metric_path": "rows[].metrics.month2_emplvl",
        "source_fields": [
          "month2_emplvl"
        ],
        "unit": "count"
      },
      "month3_emplvl": {
        "additive_across_groups": true,
        "aggregation": "sum",
        "authoritative_total_path": "summary.totals.month3_emplvl",
        "category": "employment",
        "definition": "BLS QCEW covered employment in the third month of the quarter for the industry \u00d7 area \u00d7 ownership in scope, served verbatim \u2014 INDUSTRY employment, not an 'AI jobs' count.",
        "description": "Covered employment in month 3 of the quarter. The three monthly columns are intra-quarter SNAPSHOTS \u2014 average them for a quarterly figure, never sum the three together; and employment is a per-quarter STOCK, so it is not summable across quarters (a qcew_period scope note flags that). Additive across distinct AREAS within ONE agglvl + ONE ownership + ONE quarter (e.g. summing all counties in a state). NOT additive across geographic levels (national contains states/counties \u2014 a qcew_hierarchy scope note flags it), across nesting industry series ('10' contains every other series; 23 contains 236220), or across the ownership totals (own_code 0/8 contain their components). A ranked top_n '(other)' remainder that would fold NESTING groups serves NULL metrics with a qcew_rollup_overlap note instead of a double-counted sum. A withheld (disclosure 'N'/'-') cell is served NULL, never zero (PD-048).",
        "display_name": "Employment (month 3 of quarter)",
        "display_precision": "Integer headcount (stored as double; rounded to 6 decimal places in JSON).",
        "grain": "area \u00d7 ownership \u00d7 industry \u00d7 quarter",
        "null_handling": "A withheld (confidential) cell is absent (null), never zero; a matched group with no atoms returns null; an empty-query summary returns zero.",
        "rollup_behavior": "additive_partition_metric",
        "row_metric_path": "rows[].metrics.month3_emplvl",
        "source_fields": [
          "month3_emplvl"
        ],
        "unit": "count"
      },
      "qtrly_estabs": {
        "additive_across_groups": true,
        "aggregation": "sum",
        "authoritative_total_path": "summary.totals.qtrly_estabs",
        "category": "establishments",
        "definition": "Count of establishments (physical locations) covered by unemployment insurance in the industry \u00d7 area \u00d7 ownership in scope, for the quarter, exactly as BLS publishes it in QCEW.",
        "description": "BLS's published count of UI-covered establishments. Not withheld even when a cell's employment/wages are. Additive across distinct AREAS within ONE agglvl + ONE ownership + ONE quarter (e.g. summing all counties in a state). NOT additive across geographic levels (national contains states/counties \u2014 a qcew_hierarchy scope note flags it), across nesting industry series ('10' contains every other series; 23 contains 236220), or across the ownership totals (own_code 0/8 contain their components). A ranked top_n '(other)' remainder that would fold NESTING groups serves NULL metrics with a qcew_rollup_overlap note instead of a double-counted sum. A withheld (disclosure 'N'/'-') cell is served NULL, never zero (PD-048).",
        "display_name": "Establishments",
        "display_precision": "Integer.",
        "grain": "area \u00d7 ownership \u00d7 industry \u00d7 quarter",
        "null_handling": "Always an establishment count (BLS does not suppress establishment counts); an empty-query summary returns zero.",
        "rollup_behavior": "additive_partition_metric",
        "row_metric_path": "rows[].metrics.qtrly_estabs",
        "source_fields": [
          "qtrly_estabs"
        ],
        "unit": "count"
      },
      "source_record_count": {
        "additive_across_groups": true,
        "aggregation": "count source records",
        "authoritative_total_path": "summary.totals.source_record_count",
        "category": "records",
        "definition": "Count of normalized source records (area \u00d7 ownership \u00d7 industry \u00d7 quarter cells) contributing to the current result scope.",
        "description": "Number of normalized QCEW source cells (area \u00d7 ownership \u00d7 industry \u00d7 quarter) contributing to the value.",
        "display_name": "Source record count",
        "display_precision": "Integer.",
        "grain": "source row",
        "null_handling": "Always an integer count.",
        "rollup_behavior": "additive_partition_metric",
        "row_metric_path": "rows[].metrics.source_record_count",
        "source_fields": [
          "source_record_key"
        ],
        "unit": "count"
      },
      "total_qtrly_wages": {
        "additive_across_groups": true,
        "aggregation": "sum",
        "authoritative_total_path": "summary.totals.total_qtrly_wages",
        "category": "wages",
        "definition": "Sum of total quarterly wages ($) paid by UI-covered employers in the industry \u00d7 area \u00d7 ownership in scope, exactly as BLS publishes it in QCEW.",
        "description": "Total quarterly wages ($). UNLIKE employment, wages DO sum across quarters (Q1+\u2026+Q4 = the annual wage bill). Additive across distinct AREAS within ONE agglvl + ONE ownership + ONE quarter (e.g. summing all counties in a state). NOT additive across geographic levels (national contains states/counties \u2014 a qcew_hierarchy scope note flags it), across nesting industry series ('10' contains every other series; 23 contains 236220), or across the ownership totals (own_code 0/8 contain their components). A ranked top_n '(other)' remainder that would fold NESTING groups serves NULL metrics with a qcew_rollup_overlap note instead of a double-counted sum. A withheld (disclosure 'N'/'-') cell is served NULL, never zero (PD-048).",
        "display_name": "Total quarterly wages",
        "display_precision": "USD, rounded to 6 decimal places in JSON to remove binary floating-point noise.",
        "grain": "area \u00d7 ownership \u00d7 industry \u00d7 quarter",
        "null_handling": "A withheld (confidential) cell is absent (null), never zero; a matched group with no atoms returns null; an empty-query summary returns zero.",
        "rollup_behavior": "additive_partition_metric",
        "row_metric_path": "rows[].metrics.total_qtrly_wages",
        "source_fields": [
          "total_qtrly_wages"
        ],
        "unit": "USD"
      }
    },
    "metrics": [
      "qtrly_estabs",
      "month1_emplvl",
      "month2_emplvl",
      "month3_emplvl",
      "total_qtrly_wages",
      "source_record_count"
    ],
    "summary_fields": [
      "group_count",
      "totals"
    ]
  },
  "primitive": "query_ai_infrastructure_employment_v1",
  "status": "available"
}
