|
1 |
+import Link from "next/link"; |
|
2 |
+import { |
|
3 |
+ DIMENSIONS, |
|
4 |
+ EXPOSURE_DIMENSIONS, |
|
5 |
+ HIGH_EXPOSURE_THRESHOLD, |
|
6 |
+ INDEX_VERSION, |
|
7 |
+ INVERTED_DIMENSIONS, |
|
8 |
+ WEIGHTS, |
|
9 |
+ type DimensionKey, |
|
10 |
+} from "@airiskindex/scoring"; |
|
11 |
+ |
|
12 |
+export const metadata = { |
|
13 |
+ title: "Methodology — AI Risk Index", |
|
14 |
+ description: |
|
15 |
+ "Full methodology of the AI Risk Index: task-based scoring, multi-model LLM rater panel, confidence intervals, weights, formulas, versioning and limitations.", |
|
16 |
+}; |
|
17 |
+ |
|
18 |
+const DIMENSION_DETAILS: Array<{ |
|
19 |
+ key: DimensionKey; |
|
20 |
+ name: string; |
|
21 |
+ question: string; |
|
22 |
+ anchors: string; |
|
23 |
+}> = [ |
|
24 |
+ { |
|
25 |
+ key: "automatability", |
|
26 |
+ name: "Task automatability", |
|
27 |
+ question: |
|
28 |
+ "Could current AI (including tool-using agents) perform this task end-to-end with at least 50% time saving at equal quality?", |
|
29 |
+ anchors: |
|
30 |
+ "1 = no meaningful part automatable today · 3 = roughly half automatable with significant setup · 5 = the full task meets the ≥50%-time-saving-at-equal-quality bar with off-the-shelf systems. The 50% threshold follows Eloundou et al. (2024), the citable standard.", |
|
31 |
+ }, |
|
32 |
+ { |
|
33 |
+ key: "feasibility", |
|
34 |
+ name: "Current technical feasibility", |
|
35 |
+ question: |
|
36 |
+ "Do deployed products demonstrably perform this task reliably today — not merely in demos or benchmarks?", |
|
37 |
+ anchors: |
|
38 |
+ "1 = research-stage only · 3 = products exist with material error rates or narrow scope · 5 = mature products perform this reliably in production at scale. Separating conceivable from deployable is the failure that undid whole-occupation forecasts.", |
|
39 |
+ }, |
|
40 |
+ { |
|
41 |
+ key: "cost_ratio", |
|
42 |
+ name: "Cost of substitution vs. wage", |
|
43 |
+ question: |
|
44 |
+ "How does the all-in AI cost per task-equivalent (inference, integration, oversight) compare to the loaded human wage for the same output?", |
|
45 |
+ anchors: |
|
46 |
+ "1 = AI is more expensive all-in · 3 = roughly comparable · 5 = AI is at least an order of magnitude cheaper.", |
|
47 |
+ }, |
|
48 |
+ { |
|
49 |
+ key: "barriers", |
|
50 |
+ name: "Adoption barriers", |
|
51 |
+ question: |
|
52 |
+ "How strong are the real-world barriers to substitution: licensing and authorization requirements, liability and error-cost asymmetry, regulation of the automation itself, human-contact requirements, organizational friction?", |
|
53 |
+ anchors: |
|
54 |
+ "1 = nothing prevents substitution · 3 = some friction (oversight requirements, customer preference for humans) · 5 = hard barriers — a licensed human must legally perform or sign off on the task. This dimension is inverted in the composite: strong barriers lower the substitution score.", |
|
55 |
+ }, |
|
56 |
+ { |
|
57 |
+ key: "adoption_velocity", |
|
58 |
+ name: "Sector adoption velocity", |
|
59 |
+ question: |
|
60 |
+ "How fast and deep are the sectors where this task occurs actually adopting AI — agents in production and measured displacement, not vendor announcements?", |
|
61 |
+ anchors: |
|
62 |
+ "1 = laggard sectors (small firms, physical work, low digitization) · 3 = pilots common, production rare · 5 = fast, deep adoption (information, finance, professional-services patterns).", |
|
63 |
+ }, |
|
64 |
+]; |
|
65 |
+ |
|
66 |
+function Section({ |
|
67 |
+ id, |
|
68 |
+ title, |
|
69 |
+ children, |
|
70 |
+}: { |
|
71 |
+ id: string; |
|
72 |
+ title: string; |
|
73 |
+ children: React.ReactNode; |
|
74 |
+}): JSX.Element { |
|
75 |
+ return ( |
|
76 |
+ <section id={id} className="mt-12 scroll-mt-6"> |
|
77 |
+ <h2 className="text-2xl font-semibold tracking-tight">{title}</h2> |
|
78 |
+ <div className="mt-4 space-y-4 leading-relaxed text-[var(--ink-2)]">{children}</div> |
|
79 |
+ </section> |
|
80 |
+ ); |
|
81 |
+} |
|
82 |
+ |
|
83 |
+export default function MethodologyPage(): JSX.Element { |
|
84 |
+ return ( |
|
85 |
+ <main className="mx-auto max-w-3xl px-6 py-14"> |
|
86 |
+ <p className="text-xs font-semibold uppercase tracking-[0.14em] text-[var(--muted)]"> |
|
87 |
+ Methodology · version {INDEX_VERSION} |
|
88 |
+ </p> |
|
89 |
+ <h1 className="mt-3 text-4xl font-bold tracking-tight"> |
|
90 |
+ How the AI Risk Index is computed |
|
91 |
+ </h1> |
|
92 |
+ <p className="mt-4 text-lg leading-relaxed text-[var(--ink-2)]"> |
|
93 |
+ Every number on this site is reproducible: the weights, formulas, rater prompts and every |
|
94 |
+ individual model rating are public. This page is the human-readable specification; the |
|
95 |
+ machine-readable version is at{" "} |
|
96 |
+ <Link href="/api/v1/methodology" className="underline"> |
|
97 |
+ /api/v1/methodology |
|
98 |
+ </Link> |
|
99 |
+ . |
|
100 |
+ </p> |
|
101 |
+ |
|
102 |
+ <nav className="mt-8 rounded-xl border border-[var(--border)] bg-[var(--surface-1)] p-5 text-sm"> |
|
103 |
+ <p className="font-medium text-[var(--ink)]">Contents</p> |
|
104 |
+ <ol className="mt-2 list-inside list-decimal space-y-1 text-[var(--ink-2)]"> |
|
105 |
+ {[ |
|
106 |
+ ["principles", "Principles"], |
|
107 |
+ ["three-scores", "The three scores"], |
|
108 |
+ ["data", "Data sources"], |
|
109 |
+ ["rating", "Task rating — the multi-model panel"], |
|
110 |
+ ["dimensions", "The five dimensions and their weights"], |
|
111 |
+ ["formulas", "Formulas"], |
|
112 |
+ ["aggregation", "From tasks to occupations"], |
|
113 |
+ ["uncertainty", "Confidence intervals"], |
|
114 |
+ ["versioning", "Versioning and immutable runs"], |
|
115 |
+ ["validation", "Validation and sensitivity"], |
|
116 |
+ ["limitations", "Known limitations"], |
|
117 |
+ ["citation", "Citation, license and contact"], |
|
118 |
+ ].map(([anchor, label]) => ( |
|
119 |
+ <li key={anchor}> |
|
120 |
+ <a href={`#${anchor}`} className="hover:text-[var(--ink)] hover:underline"> |
|
121 |
+ {label} |
|
122 |
+ </a> |
|
123 |
+ </li> |
|
124 |
+ ))} |
|
125 |
+ </ol> |
|
126 |
+ </nav> |
|
127 |
+ |
|
128 |
+ <Section id="principles" title="1. Principles"> |
|
129 |
+ <p> |
|
130 |
+ <strong className="text-[var(--ink)]">Task-based, not occupation-based.</strong>{" "} |
|
131 |
+ Occupations are bundles of tasks with very different AI exposure. Scoring whole |
|
132 |
+ occupations with a single judgment — the approach of the famous 2013 "47% of jobs" |
|
133 |
+ estimate — has a poor empirical track record. We score each of the ~18,800 O*NET task |
|
134 |
+ statements individually and derive occupation scores from them, weighted by how |
|
135 |
+ important each task is to the occupation. |
|
136 |
+ </p> |
|
137 |
+ <p> |
|
138 |
+ <strong className="text-[var(--ink)]">Uncertainty is part of the score.</strong> Large |
|
139 |
+ language models disagree with each other substantially when rating AI exposure — |
|
140 |
+ replications show the share of "highly exposed" occupations can vary by an order of |
|
141 |
+ magnitude depending on which frontier model does the rating. A single-model index is |
|
142 |
+ therefore an artifact. Every score we publish carries a confidence interval derived from |
|
143 |
+ disagreement across an independent multi-model panel. |
|
144 |
+ </p> |
|
145 |
+ <p> |
|
146 |
+ <strong className="text-[var(--ink)]">Fully reproducible.</strong> Weights live in one |
|
147 |
+ versioned source file, prompts are versioned, every rating stores the model, prompt |
|
148 |
+ version, raw response and parsed score, and every published number traces to a stored, |
|
149 |
+ immutable computation run. |
|
150 |
+ </p> |
|
151 |
+ <p> |
|
152 |
+ <strong className="text-[var(--ink)]">Adaptation, not doom.</strong> The evidence to |
|
153 |
+ date shows concentrated, cohort-specific effects — especially on entry-level hiring in |
|
154 |
+ automation-exposed occupations — rather than economy-wide job loss, while measured AI |
|
155 |
+ usage remains majority-augmentative. The index is designed to guide adaptation |
|
156 |
+ decisions, not to produce headlines. |
|
157 |
+ </p> |
|
158 |
+ </Section> |
|
159 |
+ |
|
160 |
+ <Section id="three-scores" title="2. The three scores"> |
|
161 |
+ <p>Every occupation gets three sub-scores on a 0–100 scale, never collapsed into one:</p> |
|
162 |
+ <ul className="list-inside list-disc space-y-2"> |
|
163 |
+ <li> |
|
164 |
+ <strong className="text-[var(--ink)]">Exposure</strong> — AI is technically capable of |
|
165 |
+ performing the occupation's tasks. Computed from the capability dimensions only |
|
166 |
+ (automatability and feasibility). |
|
167 |
+ </li> |
|
168 |
+ <li> |
|
169 |
+ <strong className="text-[var(--ink)]">Substitution</strong> — the headline composite: |
|
170 |
+ AI actually replaces the human, once cost, adoption barriers and sector adoption |
|
171 |
+ velocity are accounted for. Exposure without adoption predicts nothing; this score is |
|
172 |
+ exposure discounted by the real world. |
|
173 |
+ </li> |
|
174 |
+ <li> |
|
175 |
+ <strong className="text-[var(--ink)]">Augmentation</strong> — AI assists the human on |
|
176 |
+ the task, raising productivity without replacing them. Rated separately per task; it |
|
177 |
+ is not part of the substitution composite. High augmentation alongside moderate |
|
178 |
+ substitution reads as a changing job, not a disappearing one. |
|
179 |
+ </li> |
|
180 |
+ </ul> |
|
181 |
+ </Section> |
|
182 |
+ |
|
183 |
+ <Section id="data" title="3. Data sources"> |
|
184 |
+ <div className="overflow-x-auto rounded-xl border border-[var(--border)] bg-[var(--surface-1)]"> |
|
185 |
+ <table className="w-full text-left text-sm"> |
|
186 |
+ <thead className="border-b border-[var(--grid)] text-xs uppercase tracking-wide text-[var(--muted)]"> |
|
187 |
+ <tr> |
|
188 |
+ <th className="px-4 py-3 font-medium">Input</th> |
|
189 |
+ <th className="px-4 py-3 font-medium">Source</th> |
|
190 |
+ <th className="px-4 py-3 font-medium">Role</th> |
|
191 |
+ </tr> |
|
192 |
+ </thead> |
|
193 |
+ <tbody> |
|
194 |
+ {[ |
|
195 |
+ [ |
|
196 |
+ "Occupations & task statements", |
|
197 |
+ "O*NET 30.3 (U.S. Dept. of Labor, CC BY 4.0), O*NET-SOC 2019 taxonomy", |
|
198 |
+ "Unit of analysis: 1,016 occupations, ~18,800 tasks", |
|
199 |
+ ], |
|
200 |
+ [ |
|
201 |
+ "Task importance weights", |
|
202 |
+ "O*NET Task Ratings, importance scale (IM, 1–5)", |
|
203 |
+ "Aggregation weights from tasks to occupations", |
|
204 |
+ ], |
|
205 |
+ [ |
|
206 |
+ "Wages & employment", |
|
207 |
+ "BLS Occupational Employment and Wage Statistics, May 2025 national", |
|
208 |
+ "Median wages (shown per occupation; cost-ratio context)", |
|
209 |
+ ], |
|
210 |
+ [ |
|
211 |
+ "EU/France crosswalk (planned)", |
|
212 |
+ "ESCO v1.2 + official ESCO↔O*NET crosswalk; ROME 4.0", |
|
213 |
+ "European occupation coverage in a future release", |
|
214 |
+ ], |
|
215 |
+ [ |
|
216 |
+ "Adoption evidence", |
|
217 |
+ "Census BTOS, Anthropic Economic Index, sector deployment studies", |
|
218 |
+ "Grounding for the adoption-velocity rubric anchors", |
|
219 |
+ ], |
|
220 |
+ ].map(([a, b, c]) => ( |
|
221 |
+ <tr key={a as string} className="border-b border-[var(--grid)] last:border-b-0 align-top"> |
|
222 |
+ <td className="px-4 py-3 font-medium text-[var(--ink)]">{a}</td> |
|
223 |
+ <td className="px-4 py-3">{b}</td> |
|
224 |
+ <td className="px-4 py-3">{c}</td> |
|
225 |
+ </tr> |
|
226 |
+ ))} |
|
227 |
+ </tbody> |
|
228 |
+ </table> |
|
229 |
+ </div> |
|
230 |
+ <p> |
|
231 |
+ Raw source dumps are immutable and never edited in place; all transformations run |
|
232 |
+ through a pipeline that records manifests (hashes and row counts) for every derived |
|
233 |
+ artifact. |
|
234 |
+ </p> |
|
235 |
+ </Section> |
|
236 |
+ |
|
237 |
+ <Section id="rating" title="4. Task rating — the multi-model panel"> |
|
238 |
+ <p> |
|
239 |
+ Each task statement is rated on six dimensions (the five composite dimensions plus |
|
240 |
+ augmentation) on an integer 1–5 scale by{" "} |
|
241 |
+ <strong className="text-[var(--ink)]">at least two independent frontier language |
|
242 |
+ models</strong> using an identical, versioned rubric prompt. Ratings are requested with |
|
243 |
+ schema-constrained JSON output; each rating must include a written rationale grounded in |
|
244 |
+ the task statement. |
|
245 |
+ </p> |
|
246 |
+ <p> |
|
247 |
+ For every task × dimension, the panel produces a rating band:{" "} |
|
248 |
+ <code>low</code> = the panel minimum, <code>mid</code> = the panel mean,{" "} |
|
249 |
+ <code>high</code> = the panel maximum. Bands — not single numbers — flow into all |
|
250 |
+ downstream computation, which is how rater disagreement becomes a visible confidence |
|
251 |
+ interval instead of hidden noise. |
|
252 |
+ </p> |
|
253 |
+ <p> |
|
254 |
+ <strong className="text-[var(--ink)]">Audit trail.</strong> Every rating stores the |
|
255 |
+ model identifier, prompt version, raw API response, parsed score and rationale. On any |
|
256 |
+ occupation page, expanding a task shows every model's rating and rationale — nothing is |
|
257 |
+ asserted that cannot be inspected. |
|
258 |
+ </p> |
|
259 |
+ <p> |
|
260 |
+ <strong className="text-[var(--ink)]">Human validation.</strong> A sample of ratings is |
|
261 |
+ reviewed by humans; disagreements above one point on the 5-point scale route the task to |
|
262 |
+ an expert review queue whose overrides replace the model band and are flagged in the |
|
263 |
+ data. Prompt changes bump the prompt version and invalidate cached ratings. |
|
264 |
+ </p> |
|
265 |
+ </Section> |
|
266 |
+ |
|
267 |
+ <Section id="dimensions" title="5. The five dimensions and their weights"> |
|
268 |
+ <div className="overflow-x-auto rounded-xl border border-[var(--border)] bg-[var(--surface-1)]"> |
|
269 |
+ <table className="w-full text-left text-sm"> |
|
270 |
+ <thead className="border-b border-[var(--grid)] text-xs uppercase tracking-wide text-[var(--muted)]"> |
|
271 |
+ <tr> |
|
272 |
+ <th className="px-4 py-3 font-medium">Dimension</th> |
|
273 |
+ <th className="px-4 py-3 font-medium">Weight</th> |
|
274 |
+ <th className="px-4 py-3 font-medium">Orientation</th> |
|
275 |
+ </tr> |
|
276 |
+ </thead> |
|
277 |
+ <tbody className="tabular-nums"> |
|
278 |
+ {DIMENSIONS.map((key) => ( |
|
279 |
+ <tr key={key} className="border-b border-[var(--grid)] last:border-b-0"> |
|
280 |
+ <td className="px-4 py-3 font-medium text-[var(--ink)]"> |
|
281 |
+ {DIMENSION_DETAILS.find((d) => d.key === key)?.name ?? key} |
|
282 |
+ </td> |
|
283 |
+ <td className="px-4 py-3">{(WEIGHTS[key] * 100).toFixed(0)}%</td> |
|
284 |
+ <td className="px-4 py-3"> |
|
285 |
+ {INVERTED_DIMENSIONS.has(key) |
|
286 |
+ ? "inverted — higher rating lowers substitution" |
|
287 |
+ : "direct"} |
|
288 |
+ </td> |
|
289 |
+ </tr> |
|
290 |
+ ))} |
|
291 |
+ </tbody> |
|
292 |
+ </table> |
|
293 |
+ </div> |
|
294 |
+ <div className="space-y-5"> |
|
295 |
+ {DIMENSION_DETAILS.map((dim) => ( |
|
296 |
+ <div key={dim.key}> |
|
297 |
+ <h3 className="font-semibold text-[var(--ink)]"> |
|
298 |
+ {dim.name}{" "} |
|
299 |
+ <span className="text-sm font-normal text-[var(--muted)]"> |
|
300 |
+ · weight {(WEIGHTS[dim.key] * 100).toFixed(0)}% |
|
301 |
+ </span> |
|
302 |
+ </h3> |
|
303 |
+ <p className="mt-1">{dim.question}</p> |
|
304 |
+ <p className="mt-1 text-sm text-[var(--muted)]">{dim.anchors}</p> |
|
305 |
+ </div> |
|
306 |
+ ))} |
|
307 |
+ </div> |
|
308 |
+ <p> |
|
309 |
+ Weights are defined once, in a versioned source file, and served live at{" "} |
|
310 |
+ <Link href="/api/v1/methodology" className="underline"> |
|
311 |
+ /api/v1/methodology |
|
312 |
+ </Link>{" "} |
|
313 |
+ — any change is a new index version with a changelog entry and regenerated sensitivity |
|
314 |
+ analyses. |
|
315 |
+ </p> |
|
316 |
+ </Section> |
|
317 |
+ |
|
318 |
+ <Section id="formulas" title="6. Formulas"> |
|
319 |
+ <p> |
|
320 |
+ A rating <em>r</em> ∈ [1, 5] normalizes to substitution pressure <em>p</em> ∈ [0, 1]: |
|
321 |
+ </p> |
|
322 |
+ <pre className="overflow-x-auto rounded-xl border border-[var(--border)] bg-[var(--surface-1)] p-4 text-sm text-[var(--ink)]"> |
|
323 |
+ {`p = (r − 1) / 4 direct dimensions |
|
324 |
+p = 1 − (r − 1) / 4 inverted dimensions (barriers) |
|
325 |
+ |
|
326 |
+substitution_task = 100 · Σ_d w_d · p_d over all five dimensions |
|
327 |
+exposure_task = 100 · (w_auto·p_auto + w_feas·p_feas) / (w_auto + w_feas) |
|
328 |
+augmentation_task = 100 · p_augmentation`} |
|
329 |
+ </pre> |
|
330 |
+ <p> |
|
331 |
+ The exposure sub-score uses only {EXPOSURE_DIMENSIONS.join(" and ")}, renormalized. The |
|
332 |
+ scoring engine is a pure, deterministic library with no network, clock or randomness — |
|
333 |
+ identical inputs always produce identical scores, which is what makes runs auditable. |
|
334 |
+ Its behavior is pinned by property-based tests and by a published worked example that |
|
335 |
+ the test suite reproduces to three decimals. |
|
336 |
+ </p> |
|
337 |
+ </Section> |
|
338 |
+ |
|
339 |
+ <Section id="aggregation" title="7. From tasks to occupations"> |
|
340 |
+ <p> |
|
341 |
+ Occupation scores are the importance-weighted mean of task scores, using O*NET task |
|
342 |
+ importance ratings normalized within each occupation. Tasks without an importance rating |
|
343 |
+ receive the occupation's mean importance. The same aggregation applies to the low, mid |
|
344 |
+ and high bounds. |
|
345 |
+ </p> |
|
346 |
+ <p> |
|
347 |
+ We additionally report the <strong className="text-[var(--ink)]">highly exposed task |
|
348 |
+ share</strong>: the fraction of an occupation's tasks with a substitution score of{" "} |
|
349 |
+ {HIGH_EXPOSURE_THRESHOLD} or more. "X% of tasks in this occupation are highly exposed" |
|
350 |
+ is the preferred headline reading — more honest than a single composite. |
|
351 |
+ </p> |
|
352 |
+ </Section> |
|
353 |
+ |
|
354 |
+ <Section id="uncertainty" title="8. Confidence intervals"> |
|
355 |
+ <p> |
|
356 |
+ The low and high bounds are worst/best-case envelopes over the rater panel: the lower |
|
357 |
+ bound takes each dimension's pressure-minimizing rating bound (for the inverted barriers |
|
358 |
+ dimension, that is the <em>high</em> rating), the upper bound symmetrically. By |
|
359 |
+ construction low ≤ score ≤ high always holds. A wide interval means the models disagreed |
|
360 |
+ — treat that score as an open question, not a verdict. Occupations with the widest |
|
361 |
+ intervals are exactly where human expert review is prioritized. |
|
362 |
+ </p> |
|
363 |
+ </Section> |
|
364 |
+ |
|
365 |
+ <Section id="versioning" title="9. Versioning and immutable runs"> |
|
366 |
+ <p> |
|
367 |
+ The index version ({INDEX_VERSION}) follows semantic versioning: formula or weight |
|
368 |
+ changes are major; data-source refreshes are minor; recomputations with refreshed |
|
369 |
+ adoption inputs are patches. Every computation writes a run record with the index |
|
370 |
+ version, prompt version and rater models. Runs are immutable — recomputations create new |
|
371 |
+ runs and old runs remain queryable, so any historically published score can be |
|
372 |
+ reproduced and checked forever. Every API response carries the index version it was |
|
373 |
+ computed under. |
|
374 |
+ </p> |
|
375 |
+ </Section> |
|
376 |
+ |
|
377 |
+ <Section id="validation" title="10. Validation and sensitivity"> |
|
378 |
+ <p>Published alongside each major or minor release:</p> |
|
379 |
+ <ul className="list-inside list-disc space-y-2"> |
|
380 |
+ <li> |
|
381 |
+ <strong className="text-[var(--ink)]">Convergent validity</strong> — rank correlation |
|
382 |
+ against independent published measures (Felten AIOE, "GPTs are GPTs" task scores, ILO |
|
383 |
+ exposure gradients). |
|
384 |
+ </li> |
|
385 |
+ <li> |
|
386 |
+ <strong className="text-[var(--ink)]">Rater stability</strong> — the distribution of |
|
387 |
+ cross-model agreement; the widest-band occupations are flagged in the product. |
|
388 |
+ </li> |
|
389 |
+ <li> |
|
390 |
+ <strong className="text-[var(--ink)]">Outcome tracking</strong> — correlation against |
|
391 |
+ realized labor-market indicators (entry-level employment in exposed occupations, |
|
392 |
+ measured usage data). Exposure indices individually explain little of realized |
|
393 |
+ unemployment risk, so we report outcome tracking honestly rather than claiming |
|
394 |
+ prediction. |
|
395 |
+ </li> |
|
396 |
+ <li> |
|
397 |
+ <strong className="text-[var(--ink)]">Weight sensitivity</strong> — rank stability of |
|
398 |
+ the composite under ±25% perturbation of each weight. |
|
399 |
+ </li> |
|
400 |
+ </ul> |
|
401 |
+ </Section> |
|
402 |
+ |
|
403 |
+ <Section id="limitations" title="11. Known limitations"> |
|
404 |
+ <ul className="list-inside list-disc space-y-2"> |
|
405 |
+ <li> |
|
406 |
+ LLM raters co-evolve with the technology they measure; multi-model panels bound this |
|
407 |
+ "ruler problem" but do not eliminate it. |
|
408 |
+ </li> |
|
409 |
+ <li> |
|
410 |
+ Sector-level adoption evidence enters through rubric anchors rather than per-sector |
|
411 |
+ statistical joins in the current version. |
|
412 |
+ </li> |
|
413 |
+ <li> |
|
414 |
+ Scores describe tasks as currently constituted; occupations reorganize, and task mixes |
|
415 |
+ shift precisely when exposure is high. |
|
416 |
+ </li> |
|
417 |
+ <li> |
|
418 |
+ Wages shown are U.S. national medians; cross-country generalization awaits the |
|
419 |
+ ESCO/ROME release. |
|
420 |
+ </li> |
|
421 |
+ <li> |
|
422 |
+ This index measures pressure, not destiny. It cannot tell an individual whether their |
|
423 |
+ job is safe; it can tell them which of their tasks are changing and how confident the |
|
424 |
+ evidence is. |
|
425 |
+ </li> |
|
426 |
+ </ul> |
|
427 |
+ </Section> |
|
428 |
+ |
|
429 |
+ <Section id="citation" title="12. Citation, license and contact"> |
|
430 |
+ <p> |
|
431 |
+ Cite as: <em>AI Risk Index, version {INDEX_VERSION}, airiskindex.io, Simon-Pierre |
|
432 |
+ Boucher (2026)</em>. Scores and derived data are published under{" "} |
|
433 |
+ <strong className="text-[var(--ink)]">CC BY 4.0</strong> — reuse freely with |
|
434 |
+ attribution and the index version. Occupation and task data incorporate the O*NET |
|
435 |
+ database (U.S. Department of Labor, CC BY 4.0); wage data from BLS OEWS. |
|
436 |
+ </p> |
|
437 |
+ <p> |
|
438 |
+ Methodology questions, corrections, expert-panel participation, data licensing or |
|
439 |
+ anything else:{" "} |
|
440 |
+ <a href="mailto:contact@spboucher.ai" className="underline"> |
|
441 |
+ contact@spboucher.ai |
|
442 |
+ </a>{" "} |
|
443 |
+ — Simon-Pierre Boucher. |
|
444 |
+ </p> |
|
445 |
+ </Section> |
|
446 |
+ </main> |
|
447 |
+ ); |
|
448 |
+} |