Methodology / Codebook
Codebook
This is the data dictionary for the AI Trace record: every field in the three tables that make up the record, every value each enum can take, and what those values mean. The definitions are the ones our editorial standards use. The same definitions are published as a machine-readable schema at /datapackage.json, and the pages, the public API, and dataset releases are all generated from this one source.
Tables
The record is three tables. A company has many practices; a practice has many evidence rows. Ids are stable and are the citation keys; a company slug is the current URL and can change.
Companies companies.csv
One row per company profile. The id is the stable identifier; the slug is the current URL path and can change when a company is renamed.
Primary key id · parent_company_id references companies.id
| Field | Type | Definition |
|---|---|---|
idCompany id | string (uuid) | Stable unique identifier for the company. Cite by id: https://www.aitrace.org/r/company/{id} resolves to the current page even after a rename. |
nameName | string | Company display name. |
slugSlug | string | URL-safe company identifier, the path segment of the company page. Unique at any one time; may change when a company is renamed, so it is not a stable citation key. |
websiteWebsite | string (uri), nullable | Primary company website URL. |
descriptionDescription | string, nullable | Short description of the company shown on its profile. |
industry_tagsIndustry tags | array, nullable | Array of industry tags assigned to the company. |
aliasesAliases | array, nullable | Other names the company is known by; used to match searches and reports to the profile. |
ai_statusAI status | stringCompany AI status values | Overall company AI status: confirmed_use, suspected_use, no_known_use, or under_review. Set by a moderator on the company record. |
parent_company_idParent company id | string (uuid), nullable | Id of the parent company when this company is a subsidiary. Null for top-level companies. |
last_verified_atLast verified | datetime, nullable | Updated whenever a moderator publishes or edits a practice or a cited source under this company. It records the most recent moderator action on the company's record; it does not mean every claim was re-checked on that date. Null when no moderator action has been recorded. |
created_atCreated | datetime | Timestamp the company record was created. |
updated_atUpdated | datetime | Timestamp the company record was most recently updated. |
Practices practices.csv
One row per documented AI practice. Every structured field supports an explicit "unknown" or "unclear" value, and every descriptive field may be left null, when sources do not support a specific value. We do not guess.
Primary key id · company_id references companies.id
| Field | Type | Definition |
|---|---|---|
idPractice id | string (uuid) | Stable unique identifier for the practice. Cite by id: https://www.aitrace.org/r/practice/{id} resolves to the current page. |
company_idCompany id | string (uuid) | Id of the company the practice belongs to. |
categoryCategory | stringPractice category values | Practice category, one of seven values; "Other" is the catch-all.Completeness weight: 5 points |
subcategorySubcategory | string, nullable | Optional free-text subcategory.Completeness weight: 5 points |
summarySummary | string | One-sentence summary of the practice. |
detailsDetails | string, nullable | Longer prose description. |
products_affectedProducts affected | array, nullable | Array of product or service names touched by this practice. Empty when none are named. |
statusStatus | stringPractice status values | Editorial status: verified, reported, disputed, or retracted. |
date_practice_startedDate started | string, nullable | Earliest known date the practice began. A partial date (a year, or a year and month) is allowed; null when sources do not say.Completeness weight: 5 points |
discontinued_atDiscontinued | date, nullable | Date the practice was discontinued. Null when still active. Discontinuation is an explicit flag, not a deletion: the entry stays in the record. |
last_reviewed_atLast reviewed | datetime, nullable | Timestamp of the most recent moderator review of this practice. |
deployment_scopeDeployment scope | stringDeployment scope values | Access conditions for the AI system. The value "unknown" is the sentinel default and earns zero points in the completeness score. Orthogonal to visibility; never infer one from the other.Completeness weight: 10 points |
deployment_regionsDeployment regions | string, nullable | Free-text geographic scope (examples: "US only", "60+ countries", "global"). Null when sources do not clarify. For scoring purposes, the literal string "unknown" is treated the same as null.Completeness weight: 5 points |
user_base_affectedUser base affected | string, nullable | Free-text scale and population affected (example: "all 500M monthly users", "enterprise customers only"). Null when sources do not clarify. For scoring purposes, the literal string "unknown" is treated the same as null.Completeness weight: 10 points |
ai_functionAI function | arrayAI function values | Array of AI functions; the primary function is listed first. Sentinel default is ["other"]. An array containing only "other" earns zero points in the completeness score.Completeness weight: 10 points |
ai_inputAI input | string, nullable | Free-text description of what the AI system receives as input.Completeness weight: 10 points |
ai_outputAI output | string, nullable | Free-text description of what the AI system produces.Completeness weight: 10 points |
labor_impact_typeLabor impact type | stringLabor impact type values | Labor consequence of the AI system. Sentinel default is "unclear", which earns zero points. Setting "automates_prior_task" requires explicit two-sided evidence at the specific company.Completeness weight: 10 points |
prior_human_processPrior human process | string, nullable | Free-text description of what humans did before the AI system existed. Null when labor_impact_type is new_capability or when sources do not clarify. Populating this field earns its 10 points even when labor_impact_type remains unclear.Completeness weight: 10 points |
labor_contextLabor context | string, nullable | Free-text nuance about the labor situation that does not fit the enum cleanly (example: "editors still review before publish"). Documenting a gap here earns its 5 points even when labor_impact_type is unclear.Completeness weight: 5 points |
visibilityVisibility | string, nullableVisibility values | Whose experience includes the AI output. Null is the sentinel and earns zero points. Orthogonal to deployment_scope; both fields must be set independently based on what the sources support.Completeness weight: 5 points |
completeness_scoreCompleteness score | integer | Derived 0 to 100 editorial completeness score, maintained automatically whenever the practice is written. Purely additive; zero is a valid score. Sentinel values ("unknown", "unclear", a sole ["other"], null) earn zero points for their respective fields. A low score due to honest unknowns is acceptable. It is never authored by hand and is not an editorial judgment. |
created_atCreated | datetime | Timestamp the practice record was created. |
updated_atUpdated | datetime | Timestamp the practice record was most recently updated. |
Evidence evidence.csv
One row per cited source. Every claim in a practice is traceable to at least one row here; a published practice has at least one accepted source, and at least one Tier 1 or Tier 2 source.
Primary key id · practice_id references practices.id
| Field | Type | Definition |
|---|---|---|
idEvidence id | string (uuid) | Evidence row unique identifier. |
practice_idPractice id | string (uuid) | Id of the practice this source supports. |
source_typeSource type | stringSource type values | Type of source: news_article, company_disclosure, regulatory_filing, community_report, academic_paper, social_media_post. Each type maps to a tier. |
source_urlSource URL | string (uri) | Canonical URL of the source. |
archived_urlArchived copy | string (uri), nullable | Wayback or archive URL, when captured. Null when the page could not be archived (for example, the publisher blocks archiving or the page was gone before capture). |
source_titleTitle | string | Title of the article, document, or post. |
source_publisherPublisher | string, nullable | Publisher or platform hosting the source. |
source_dateDate published | date, nullable | Publication date of the source. |
excerptExcerpt | string, nullable | Evidence excerpt relevant to the claim. |
verifiedModerator verified | boolean | Whether a moderator has manually verified this source. A source is marked moderator-verified only when three conditions are met simultaneously: the source is from the company itself, the URL is on a recognizable official domain, and the content directly confirms the specific practice being documented. This flag is applied at the source level, not the practice level. |
created_atCreated | datetime | Timestamp the evidence row was created. |
Enum values
Stored values are what the API and release files carry. Labels are what the site renders. Where a value is marked sentinel, it is the explicit record that we looked and the sources do not say; a sentinel earns zero points in the completeness score, and an entry with honestly unknown fields is more defensible than one filled with plausible guesses.
Company AI status ai_status
The company-level status shown on the company badge. A moderator sets it on the company record; it is set independently of the status of any one practice.
| Stored value | Label | Definition |
|---|---|---|
confirmed_use | Confirmed AI Use | The company badge reads Confirmed AI Use. Descriptive, not a judgment: the site tracks AI use and does not rate it. |
suspected_use | Suspected AI Use | The company badge reads Suspected AI Use. |
no_known_use | No Known AI Use | The company badge reads No Known AI Use. |
under_review | Under Review | The company badge reads Under Review. A company record created by the automated discovery pipeline carries this status until a moderator reviews it. |
Practice status practice_status
The editorial status of one practice entry. Verified and Reported are assigned from the cited sources; Disputed and Retracted come from the dispute and correction process.
| Stored value | Label | Definition |
|---|---|---|
verified | Verified | A practice is marked "Verified" when at least one primary source directly confirms it. A primary source originates from the company itself: its newsroom, engineering blog, SEC filings, regulatory disclosures, official support pages, or developer documentation, on a recognizable official domain. |
reported | Reported | A practice is marked "Reported" when all available sources are secondary, or when the company has not officially confirmed the practice. A secondary source includes news articles, trade press, community reports, academic papers, and social media posts. |
disputed | Disputed | If an entry is disputed, it carries a "Disputed" badge until the dispute is resolved. Contested information is not silently removed. |
retracted | Retracted | An entry that turns out to be materially wrong is marked Retracted rather than deleted: the record of what we got wrong stays public. |
Practice category practice_category
The kind of AI practice. One of seven values; "Other" is the catch-all when no specific category fits.
| Stored value | Label | Definition |
|---|---|---|
creative_generation | Creative Generation | AI used to generate creative material. |
productivity_automation | Productivity Automation | AI used to automate or speed up work tasks. |
data_analysis | Data Analysis | AI used to analyze data. |
content_moderation | Content Moderation | AI used to moderate content. |
recommendation_system | Recommendation System | AI used to recommend items to people. |
customer_service | Customer Service | AI used in customer service. |
othersentinel | Other | The catch-all when no specific category fits. |
Deployment scope deployment_scope
Access conditions for the AI system: who can access it. Orthogonal to visibility; never infer one from the other. The value "unknown" is the sentinel default and earns zero points in the completeness score.
| Stored value | Label | Definition |
|---|---|---|
all_users | All Users | Available to all users of the product or service. |
opt_in | Opt-in | Available to users who choose to turn it on. |
pilot | Pilot | Deployed to a limited pilot group. |
internal_tool | Internal Tool | Used inside the company by its own staff. |
offered_not_mandated | Offered, Not Mandated | Offered to staff or users without being required. |
unknownsentinel | Unknown | The sentinel used when sources do not clarify; it earns zero points in the completeness score. |
AI function ai_function
The technical mechanism: what the model does, independent of labor impact. Stored as an array with the primary function listed first. The value "other" is the sentinel used when no specific function fits; an array containing only "other" earns zero points in the completeness score.
| Stored value | Label | Definition |
|---|---|---|
generating | Generating | Produces new content. |
classifying | Classifying | Assigns items to categories. |
matching | Matching | Pairs or links items to one another. |
summarizing | Summarizing | Condenses longer material. |
recommending | Recommending | Ranks or suggests items. |
detecting | Detecting | Finds patterns, anomalies, or specific content. |
predicting | Predicting | Estimates future or unobserved values. |
automating | Automating | Carries out a task end to end. Shares a word with the labor impact value automates_prior_task but describes the mechanism, not the labor consequence; the two are set independently. |
othersentinel | Other | The sentinel used when no specific function fits. |
Labor impact type labor_impact_type
Labor consequence of the AI system, fully independent of the AI function. The value "unclear" is the sentinel and earns zero points. The value "automates_prior_task" requires explicit two-sided evidence at the specific company: one side documents the prior human process, the other confirms that AI now performs that task.
| Stored value | Label | Definition |
|---|---|---|
augments_existing | Augments Existing Work | AI assists work that humans continue to do. |
automates_prior_task | Automates Prior Task | AI performs a task that humans at the company previously performed. Requires two-sided evidence; where only one side is confirmed, or where the prior human process is an industry-wide assumption rather than a company-specific fact, the value is unclear. |
new_capability | New Capability | AI enables something that was not previously done by humans at the company. |
unclearsentinel | Unclear | The sentinel used when sources do not support a specific classification; it earns zero points. |
Visibility visibility
Whose experience includes the AI output. Null is the sentinel and earns zero points. Orthogonal to deployment scope; both fields must be set independently based on what the sources support.
| Stored value | Label | Definition |
|---|---|---|
consumer_facing | Consumer-facing | Customers or the public experience the AI output. |
internal | Internal | Only people inside the company experience the AI output. |
both | Both | Both customers and internal staff experience the AI output. |
Source type source_type
The kind of cited source. Each type maps to a tier: Tier 1 (Company Disclosure, Regulatory Filing) is material from the company itself or filed with a government and can substantiate a claim alone; Tier 2 (News Article, Academic Paper) is reporting from established outlets and peer-reviewed research; Tier 3 (Social Media, Community Report) is never sufficient alone.
| Stored value | Label | Definition |
|---|---|---|
company_disclosure | Company Disclosure | Tier 1. Official statements, press releases, engineering blogs and documentation on official domains. |
regulatory_filing | Regulatory Filing | Tier 1. SEC and regulatory filings. |
news_article | News Article | Tier 2. Reporting from established outlets with editorial standards and named authorship. |
academic_paper | Academic Paper | Tier 2. Peer-reviewed academic research. |
social_media_post | Social Media | Tier 3. Social media posts; screenshots are required. |
community_report | Community Report | Tier 3. Community reports and forums. |
Provenance status provenance_status
Authorship of the current value of a tracked practice field. Rendered on each practice page as the provenance line; not a column in the release files. The tracked fields are summary, details, category, subcategory, products affected, visibility, labor impact type, deployment scope, deployment regions, user base affected, AI function, AI input, AI output, prior human process, and labor context.
| Stored value | Label | Definition |
|---|---|---|
ai_drafted | AI drafted | The current value was drafted by the automated research pipeline and accepted by a human reviewer without edits. |
human_edited | Human edited | A human reviewer wrote or changed the current value. |
human_verified | Human verified | A human reviewer verified the current value against the cited sources. |
Completeness score
Each practice carries a completeness score from 0 to 100. It is computed, not guessed: it reflects actual non-default field values per the weights below, is maintained automatically whenever a practice is written, and is never authored by hand. It measures how much the cited evidence supports, not how good or bad the practice is. A low score due to honest unknowns is acceptable.
| Field | Points |
|---|---|
Category category | 5 |
Subcategory subcategory | 5 |
Date started date_practice_started | 5 |
Deployment scope deployment_scope | 10 |
Deployment regions deployment_regions | 5 |
User base affected user_base_affected | 10 |
AI function ai_function | 10 |
AI input ai_input | 10 |
AI output ai_output | 10 |
Labor impact type labor_impact_type | 10 |
Prior human process prior_human_process | 10 |
Labor context labor_context | 5 |
Visibility visibility | 5 |
| Total | 100 |
Machine-readable schema
The same dictionary is published as a Frictionless Data Package at /datapackage.json: one Table Schema per table, with field names, types, enum constraints, primary keys, and foreign keys. Dataset releases ship this file beside the CSVs it describes, so a release can be validated against the published schema. The package carries a version once the first dataset release exists; until then the field is absent rather than invented.
For citation forms and the data license, see How to cite. For what the record does not cover, see Known limitations.