Reference · companion to the article
Data dictionary
Every variable used in More service jobs, less technical AI use — a subnational look, defined twice: once technically, once for a reader with no economics background.
How to read this. Section 1 is the analysis dataset — the 17 columns that actually enter the results. Section 2 explains the five constructed measures in depth, because those are where the interpretation lives. Sections 3–6 document the source data each was built from. Section 7 lists the definitional wrinkles worth knowing about.
1. The analysis frame
One row per OECD TL2 region. 279 rows × 17 columns, 35 countries. Built by collapsing 293 Economic Index subregions up to their parent TL2 region, weighted by usage.
| Column | Unit | Technical definition | In plain terms |
|---|---|---|---|
tl2_code | string | OECD Territorial Level 2 code, TL2024 vintage (e.g. US11, ES51, FR1) | The region's ID. One row per region. |
country | string | ISO 3166-1 alpha-2, taken from the subregion code prefix | Which country the region is in. |
n_sub | count | Number of subregions collapsed into this TL2 | How many smaller administrative areas were merged. Usually 1; 12 regions are built from more than one. |
usage_wt | percent | Sum of usage_pct across constituent subregions | How much of its country's Claude usage this region accounts for. |
log_vol | log percent | ln(usage_wt) | The same thing on a log scale, so a big region and a small one can be compared proportionally. The disclosure-volume control. |
comp_math_raw | pp of usage | Usage-weighted mean of the raw, un-renormalized SOC major group 15 (Computer and Mathematical) pct | The outcome. Of everything people in this region do with Claude, the share that is computing and mathematical work. |
comp_math_renorm | pp | Same, but from shares rescaled so a region's reported groups sum to 100 | A diagnostic version of the above. Not used in any published estimate. |
b4_mass | pp of usage | Usage-weighted sum of the raw pct of the four non-technical universally-reported groups | How much of a region's usage sits in office/admin, sales, education and arts work combined. |
b4_of_nontech | percent | b4_mass / (100 − comp_math_raw) × 100 | Of the non-technical usage in a region, how much sits in those four big occupational families. Built so that "the technical slice shrank and everything else grew proportionally" gives an exactly flat line. |
soc_pct_sum_raw | percent | Usage-weighted mean of each subregion's pre-renormalization occupational total | How much of a region's usage the data actually discloses by occupation. Median ≈ 95%; the rest is suppressed for privacy. |
service_share | % of employment | Share of regional employment in service activities — see §2.1 | The main regressor. How much of the region's workforce is in services rather than farming, factories or construction. |
knowledge_service_share | % of employment | Share in ICT, finance and professional/administrative services — see §2.2 | A narrower version: only the "knowledge economy" slice of services. |
gdp_pc_ppp | USD, PPP | Regional GDP per capita, constant prices, PPP-adjusted | How rich the region is per person, adjusted so currencies and price levels are comparable. |
pct_tertiary | percent | Share of population with ISCED 2011 levels 5–8 | Share of people with a university-level qualification. |
pop | persons | Regional population | How many people live there. |
pop_density | persons/km² | Population per square kilometre | How crowded it is. |
gdp_pc_rel | ratio | Regional GDP per capita relative to its national average | Whether the region is richer or poorer than its own country's average. 1.0 = exactly average. |
Created later, not stored in the CSV: log_gdp_pc =
ln(gdp_pc_ppp). Used in every controlled specification.
2. The constructed measures, explained
2.1 service_share — the main regressor
What counts as a service. Everything that is not agriculture, extraction, manufacturing, utilities or construction. This is the standard national-accounts definition, and it is much broader than "office work." A supermarket cashier, a bus driver, a nurse, a schoolteacher, a hotel cleaner and an investment banker are all in the service sector.
Non-US regions (34 countries) — OECD Regional Database, dataflow
DSD_REG_ECO@DF_EMP ("Employment by main economic activity – Regions"), territorial
level TL2, classified by NACE Rev. 2 activity aggregates:
service_share = (G-I + J + K + L + M_N + O-Q + R-U) / _T × 100
| Code | Activities |
|---|---|
G-I | wholesale and retail trade; transport and storage; accommodation and food service |
J | information and communication |
K | financial and insurance activities |
L | real estate activities |
M_N | professional, scientific and technical; administrative and support services |
O-Q | public administration and defence; education; human health and social work |
R-U | arts, entertainment and recreation; other services; household and extraterritorial activities |
_T | total employment (the denominator) |
Excluded — and therefore not services: A agriculture,
forestry and fishing; B-E mining, manufacturing, electricity and gas, water and
waste; F construction.
US states (51 regions) — BLS Quarterly Census of Employment and Wages,
using annual_avg_emplvl:
service_share = emp(102) / (emp(101) + emp(102)) × 100
at agglvl_code == 52, summed over own_code ∈ {1,2,3,5}
where 101 is goods-producing and 102 is service-providing. Ownership
codes 1, 2, 3 and 5 are federal, state and local government plus private industry.
agglvl_code must be pinned: selecting industry codes without
pinning the aggregation tier mixes levels and picks up suppressed detail rows, which manufactured
a false result in an early build. At tier 52 the only industry codes that exist are 101 and 102,
so pinning the tier performs the industry selection.
In plain terms: take everyone employed in the region, work out how many are in service industries rather than making or growing physical things, and express it as a percentage. Regions run from about 37% to 97.5%.
2.2 knowledge_service_share — the narrower regressor
Non-US: (J + K + M_N) / _T × 100 — information and
communication, finance and insurance, professional/scientific/technical and administrative
services.
US: at agglvl_code == 53 (supersector tier),
(1022 + 1023 + 1024) over all supersectors excluding 1029 —
information, financial activities, and professional and business services, over the total
excluding unclassified.
In plain terms: the white-collar, information-heavy slice of the service sector. Excludes retail, transport, hospitality, health and education.
Status: a documented failure. It looked like the stronger regressor in
early exploratory work, but it collapses once regional usage volume is controlled for
(t = −0.93, p = 0.354), because knowledge-service regions are the high-usage regions.
service_share is the primary regressor. Kept as a reported negative result.
2.3 comp_math_raw — the outcome
The Economic Index classifies each conversation into one of the 22 major groups of the US Standard Occupational Classification. Major group 15 is Computer and Mathematical Occupations — software development, systems analysis, data science, statistics, actuarial work.
The pct metric is "percentage of the geography's total in this category node," so
SOC 15's raw pct is already the share of all of a region's Claude usage
that is computing and mathematical work. No rescaling is applied, which is what
makes it independent of how much of the region's data was disclosed.
At TL2 level it is the usage-weighted mean across constituent subregions — which, because the weights are usage shares, is exactly the aggregate share for the combined region.
In plain terms: out of everything people in this region ask Claude to do, this is the percentage that is technical or computing work. Sample mean 24.4%, ranging from about 19% to 32%.
Why "raw" rather than the renormalized version. The renormalized shares divide by each region's disclosure coverage, and coverage correlates with service employment. That rescaling would drag the outcome in the same direction as the finding, mechanically. Removing it shrank the estimate by about 20% — the finding survived, but on the raw measure it is not open to that objection.
2.4 b4_of_nontech — the breadth test
The four occupational groups reported in every region — office and administrative support, sales, educational instruction, and arts/media — as a share of all non-technical usage.
Constructed so the null hypothesis is exactly flat: if the technical slice shrinks and everything else expands in proportion, this number does not move. It falls only if usage genuinely leaks toward the long tail of smaller occupations. Because both its numerator and denominator are always-observed raw values, disclosure coverage cancels out entirely.
Result: flat. No support for the breadth hypothesis. See Appendix B of the article.
2.5 log_vol — the disclosure-volume control
ln of the region's summed usage_pct.
An important subtlety. For subregions, usage_pct is measured
relative to the parent country, not globally. So usage_wt is a region's
share of its own country's usage, and log_vol is the log of that share — which is
not comparable in levels across countries.
This is harmless here, and provably so. Since
ln(usage_i) = ln(share_i) + ln(country total), and the country total is constant
within a country, the difference is absorbed entirely by the country fixed effects that every
specification using log_vol includes. Within a country, log_vol is
exactly equivalent to log absolute usage up to a constant.
Why it exists: the Economic Index suppresses an occupation category when the underlying conversation count is too small. Bigger regions clear that threshold in more categories and therefore look more occupationally diverse for reasons that have nothing to do with AI diffusion. Controlling for volume closes that channel.
2.6 tech_core and tech_broad — the independent technical measure
A second measure of technical usage, built from the artifact classification rather than the occupational one.
tech_core = artifact_code_fix_or_debug_pct + artifact_script_or_snippet_pct
+ artifact_sql_or_database_query_pct + artifact_config_or_infra_pct
tech_broad = tech_core + artifact_app_or_website_pct + artifact_ml_or_ai_system_pct
Why it is genuinely independent of comp_math_raw:
- Different question.
comp_math_rawasks which occupation a task belongs to. The artifact measure asks what the conversation produced. A marketer writing a SQL query is technical by artifact but not by occupation; an engineer asking for career advice is the reverse. - No suppression. Artifact shares come from the
overallcategory, which is published for all 652 subregions with every one of the 32 labels present, summing to 100.00 per region (observed range 99.95–100.05). There is no disclosure threshold, no varying support, no coverage variable, and no need for a volume control. Every methodological complication in this project came from the occupational data's suppression, and none of it applies here. - Complete denominator. Artifact shares cover all usage; occupational shares cover a median of 13 of 22 groups.
Result — the two agree. Preferred specification: tech_core gives
−0.0562 (t = −3.53) against comp_math_raw's −0.0581 (t = −4.07). In within-country
standard deviations, −1.48 against −1.27 — the independent measure is slightly stronger.
Correlation between the measures is +0.857 pooled, +0.652 within country: close
enough to be tracking a common construct, far enough apart that the agreement is not circular.
Means differ as expected — 24.4% of usage is occupationally technical, 9.3% actually produces
code.
Limitation. These are two classifications of the same conversations, not two independent datasets. The check rules out artifacts of the occupational taxonomy and of the disclosure structure — which is what was in doubt — but not something common to the underlying sample or classifier.
3. Source — Anthropic Economic Index, Release 6
Claude.ai consumer usage (Free, Pro, Max), released CC-BY. Two monthly windows: 2026-04-01 and
2026-05-01, date_end exclusive.
| Field | Meaning |
|---|---|
date_start / date_end | Collection period. End is exclusive. |
geo_id | GLOBAL, an ISO 3166-1 alpha-3 country code, or an ISO 3166-2 subregion code (e.g. US-GA, JP-01). |
geo_level | global, country, or subregion. |
category_name | Analysis dimension: overall, onet, request, soc_occupation. |
hierarchy_level | Depth within the category. 0 is most granular. For soc_occupation, 0 = detailed occupation, 1 = major group (the 22 we use). |
metric_id | Which metric this row reports. |
value | The number, rounded to two decimals. |
node_name | The specific entity — e.g. "Computer and Mathematical". |
node_external_id | Source identifier — O*NET element ID, SOC code, or request-topic UUID. |
Metrics used
| Metric | Definition | Note |
|---|---|---|
pct | Percentage of the geography's total in this category node | The occupational shares. Denominator is all the region's usage. |
usage_pct | Percentage of total usage relative to the parent geography — global for countries, parent country for subregions | Used as collapse weight and as the volume control. See §2.5. |
usage_per_capita_index | Usage share ÷ working-age (15–64) population share. 1.0 = proportional to population | Countries and US states only. Its absence elsewhere is why this project measures composition, not intensity. |
Disclosure. "A cell is only published if it meets both the aggregation thresholds and the geography sample floor." A missing row means the cell was not published, not that the value is zero. This single sentence drives the entire methodology: it is why absent groups must never be read as zeros, why support varies from 5 to 22 groups across regions, and why every breadth measure had to be tested against a volume control.
Filtering rule. Topline figures must be filtered to
category_name == "overall". Metrics repeat across category trees and hierarchy
levels; unfiltered sums double-count and produce meaningless multiples.
4. Source — OECD Regional Database
Accessed via the SDMX REST API at sdmx.oecd.org, agency
OECD.CFE.EDS, territorial levels CTRY + TL2, keyed on
ref_area (OECD TL2 code).
| Dataflow | Provides |
|---|---|
DSD_REG_ECO@DF_EMP | employment by main economic activity (→ service_share, knowledge_service_share, emp_total) |
DSD_REG_ECO@DF_ECO | GDP and labour productivity (→ gdp_pc_ppp, lab_prod_ppp, gdp_pc_rel) |
DSD_REG_DEMO@DF_DEMO | population (→ pop, pop_density) |
DSD_REG_EDU@DF_EDU | educational attainment (→ pct_tertiary, using ISCED11_5T8) |
Cleaning rules that matter
TERRITORIAL_TYPE→ keep_Zonly. Otherwise urban/rural/metro typologies double-count regions.PRICES→ keepQ(constant prices), for both GDP and labour productivity.EDUCATION_LEV→ useISCED11_5T8(tertiary total), not its sub-levels.- Region-year panel collapsed to latest non-null year per variable.
- Activity aggregates are nested (
C⊂B-E), so the service sum must use the top-level aggregates listed in §2.1, never a mix of levels.
Fetch note. pd.read_csv(url) returns HTTP 403 — OECD blocks the
Python urllib user-agent. Use requests with a browser UA and
Accept: application/vnd.sdmx.data+csv; labels=both.
Coverage gap. The regional database reports total employment for Japanese regions but no industry breakdown, and no regional educational attainment. Japan is therefore absent from the analysis despite the Economic Index covering 33 Japanese subregions that crosswalk cleanly to 11 TL2 regions.
Six residual pseudo-regions — ATZZ, BEZZ,
ESZZ, FIZZ, PTZZ, SEZZ — carry
service_share of exactly 100.0 with no GDP. No region maps to them and the
completeness rule excludes them, but any future frame rule keyed on service_share
alone would admit them as 100%-service regions.
5. Source — BLS Quarterly Census of Employment and Wages
Used only to supply US state employment shares, because the OECD regional series does not cover US states at the required industry detail.
| Field | Meaning | How used |
|---|---|---|
area_fips | 5-character FIPS area code | States end in 000 (but not US000, which is national). Keyed to OECD as "US" + area_fips[:2]. |
own_code | Ownership: 1 federal, 2 state, 3 local, 5 private | Summed over {1,2,3,5}. Codes 0 and 8 are aggregates and don't appear at these tiers. |
industry_code | NAICS or supersector code | 101/102 at tier 52; 1011–1029 at tier 53. |
agglvl_code | Aggregation tier | 52 = domain (goods vs services); 53 = supersector. Must be pinned. |
annual_avg_emplvl | Annual average of monthly employment levels | The employment measure. |
disclosure_code | Blank, or N = not disclosed | Suppressed cells appear as employment 0 with N. |
Why the share survives suppression. It is self-normalising: a suppressed ownership row contributes zero to both numerator and denominator and cancels out.
In plain terms: QCEW is a near-census of jobs covered by unemployment insurance — roughly 95% of US employment. It counts jobs where the work is located, not where the worker lives.
6. Crosswalk
Maps Economic Index subregion codes to OECD regions. 433 mapped subregions.
| Column | Meaning |
|---|---|
geo_id | Subregion code (ISO 3166-2) |
country | ISO 3166-1 alpha-2 |
iso_name | Region name from pycountry |
tl2_code | OECD TL2 code — the merge key |
match_type | exact, aggregate (several regions → one TL2), or manual |
score | Fuzzy-match score |
in_frame | Whether the region is in the analytic set |
Built from the OECD Territorial Correspondence Table (TL2024), fuzzy-matched on both English and local-language region names, with 11 manual corrections and 6 drops, then hand-verified. Portugal's districts and Ireland's provinces are best-fit approximations that do not nest perfectly.
7. Definitional wrinkles worth knowing
- US and OECD service shares are not identical constructs. QCEW covers employment insured against unemployment — it excludes the self-employed and most farm work — so US service shares sit systematically above OECD's. Country fixed effects absorb the level difference; only within-US variation is used.
- US "financial activities" is broader than OECD "K". Supersector
1023bundles NAICS 52 (finance and insurance) with 53 (real estate and leasing), while OECD keeps real estate separate inL. Both fall insideservice_shareeither way; the difference only affectsknowledge_service_share. - "100% covariate completeness" in the
in_framerule means the analysis covariates —gdp_pc_ppp,service_share,pct_tertiary,pop— not every column.emp_totalis excluded. Exactly one observation (US-AK) distinguishes the two readings. comp_math_renormandb4_of_nontechuse opposite aggregation orders (weighted mean of ratios vs ratio of weighted means). Affects only the 12 multi-subregion TL2s, max relative difference 4.2e-3, and neither enters a published estimate.comp_math_rawis a simple mass and is identical under either order.- Occupational support is not fixed at 22 groups. The median subregion reports 13 of 22; only 11 of 279 TL2 regions report all 22. Column layout and realized support are different things.
- Two months, not one. All metrics are averaged across April and May 2026 over present observations only. A group reported in one month keeps that month's value rather than being halved. April carries 6,707 level-1 occupation rows against May's 8,509 — 27% more categories clearing disclosure in the second month, over an identical set of regions.
Appendix — the master dataset
652 rows × 73 columns, one row per subregion. This is the merge layer; the analysis frame is derived from it. Only 12 of these 73 columns enter the published analysis — the rest are carried for transparency and future work.
Composition: 1 key + 52 Economic Index metrics + 4 crosswalk + 10 covariates + 6 occupation-derived = 73.
Task characteristics (7)
| Column | Definition | In plain terms |
|---|---|---|
multitasking_pct | % of conversations involving more than one distinct task | How often people ask for several things at once. |
human_only_ability_pct | % where a human could have done the task without AI | How much of the work wasn't strictly dependent on AI. |
ai_autonomy_mean | Mean AI autonomy in task completion, 1–5 | How much Claude was left to get on with it. |
ai_education_years_mean | Mean equivalent years of education Claude demonstrated | How advanced the work Claude did was, in schooling-year terms. |
human_education_years_mean | Mean years of human education the task would require | How advanced the work was for a person. |
human_only_time_mean | Mean hours for a human to do it unaided | How long it would have taken without AI. |
human_with_ai_time_mean | Mean minutes for a human to do it with AI | How long it took with AI. Note the unit change — hours above, minutes here. |
Collaboration mode (8)
| Column | In plain terms |
|---|---|
collaboration_bucket_automation_pct | Claude did the task. |
collaboration_bucket_augmentation_pct | Claude helped the person do the task. |
collaboration_directive_pct | One instruction, one output. |
collaboration_feedback_loop_pct | Back-and-forth refinement. |
collaboration_task_iteration_pct | Repeated passes over the same task. |
collaboration_learning_pct | The person was trying to understand something. |
collaboration_validation_pct | The person was checking their own work. |
collaboration_none_pct | No pattern assigned. |
Use case (3) — use_case_work_pct,
use_case_personal_pct, use_case_coursework_pct. Share of conversations
classified as work, personal or coursework.
Artifact type (32)
artifact_{label}_pct, the share of conversations whose most prominent concrete
output was that kind of thing. In plain terms: what people ended up with — a document, a
chart, a bug fix, a recipe. Labels: academic_paper_or_thesis,
advice_or_recommendation, analysis_or_summary,
app_or_website, audio_or_music, blog_or_article,
chart_or_visualization, code_fix_or_debug, config_or_infra,
creative_writing, data_or_spreadsheet, document_or_report,
educational_material, email_or_message,
explanation_or_answer, game_or_interactive,
idea_or_brainstorm, image_or_graphic,
marketing_or_social_content, math_or_calculation,
ml_or_ai_system, none, other,
plan_or_strategy, presentation_or_slides,
recipe_or_meal_plan, resume_or_job_application,
script_or_snippet, sql_or_database_query, translation,
ui_or_design_mockup, video_or_animation.
Occupation-derived columns (6)
| Column | Definition | In plain terms | Status |
|---|---|---|---|
comp_math_share | Renormalized SOC 15 share | Technical share of usage, rescaled so reported groups sum to 100 | Superseded by comp_math_raw, rebuilt from this by multiplying back through soc_pct_sum_raw |
prof_core_share | Renormalized SOC 11+13+15 | Management + business/finance + computing | Not used — collapses to −0.139 once renormalization is removed. Largely a rescaling artifact. |
white_collar_share | Renormalized SOC 11–29 | All professional and managerial occupations | Not used — near-ceiling at ~80% with a coefficient of variation of 0.03. Almost no variation to explain. |
soc_pct_sum_raw | Pre-renormalization occupational total | How much of the region's usage is disclosed by occupation. Median ≈ 95%. | Used. |
soc_n_groups | Distinct SOC major groups reported | How many of the 22 occupation families show up at all. Min 5, median 13. | Diagnostic. |
soc_covered | Whether occupation data exists for this subregion | True for 609 of 652. | Used as a filter. |
The 12 columns that actually enter the analysis
geo_id, tl2_code, country, in_frame,
usage_pct, service_share, knowledge_service_share,
gdp_pc_ppp, pct_tertiary, pop,
soc_pct_sum_raw, soc_covered — plus comp_math_share, which
is used only as the input from which comp_math_raw is reconstructed. Everything else
is carried for transparency or parked for future work.