FTC Non-Compete Rule Public Comments: Open Coding in QDA Mode
Open coding of public comments on the FTC's Non-Compete Clause Rule (docket FTC-2023-0007) in Potato's QDA Mode. The design demonstrates a codebook grown while reading, in-vivo codes, full-text search with search-and-claim, and shared memos raised as issues. Commenters keep the rights to their comments, so the ten sample comments are synthetic.
Try it live — no install
Boot the real Potato server in your browser (WebAssembly) and annotate with this exact config. Nothing leaves your machine.
Run live in your browserGet This Design
Clone or download from the repository
Quick start:
git clone https://github.com/davidjurgens/potato-showcase.git
cd potato-showcase/text/computational-social-science/ftc-noncompete-public-comments-qda
potato start config.yamlAbout this dataset
In January 2023 the Federal Trade Commission proposed a rule that would ban most non-compete clauses in employment. In the final rule, published in May 2024, the Commission reported receiving over 26,000 public comments from employers and workers in a wide range of industries and from every State. The FTC removed the rule from the Code of Federal Regulations in February 2026 after federal courts vacated it. The comments remain in Regulations.gov docket FTC-2023-0007.
QDA Mode features demonstrated: an open codebook grown while reading, in-vivo coding, full-text search with search-and-claim, and shared memos raised as issues. The codebook starts with five codes that paraphrase the FTC's own summary of the comments (blocked from a better job, blocked from starting a business, suppressed wages, a climate of fear, and the opposing argument that non-competes protect employer investment). Coders add the rest while reading, most often by selecting a commenter's words and pressing the in-vivo key.
Search covers the comment text. With search-and-claim turned on, a coder who has just created a code can search the docket for words that might carry the code and pull the matching comments into their own queue to test it. New memos default to shared, so a coder who sees two codes drifting together can write a memo, mark it as an issue, and assign it to the lead coder, whose list of open issues shows it until it is resolved.
Potato 2.13.1 has limits worth planning around. Codes added in the browser are added at the top level of the codebook. Merging two codes is an admin API call, and a merge does not re-point codings already saved under the old code, so settle duplicates early and record each decision in a memo. A .qdpx export carries the codes as a flat list and leaves out memos.
Commenters keep the rights to their own submissions, so all ten sample comments are synthetic, written in the form of a Regulations.gov submission with comment IDs that match no real comment.
- Public comments
- Over 26,000 (as reported in the final rule)
- Docket
- FTC-2023-0007
- Proposed rule
- 88 FR 3482, January 19, 2023
- Final rule
- 89 FR 38342, May 7, 2024
- Rule removed
- 91 FR 6507, February 12, 2026
- Seed codes
- 5
Configuration File
This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.
# FTC Non-Compete Clause Rule: Public Comments (Docket FTC-2023-0007)
# QDA Mode features shown here: an open codebook grown while reading, in-vivo
# codes, full-text search with search-and-claim, and shared memos raised as
# issues.
#
# Source documents (Federal Register, works of the U.S. Government):
# Proposed rule: Federal Trade Commission, "Non-Compete Clause Rule,"
# 88 FR 3482 (January 19, 2023).
# https://www.federalregister.gov/documents/2023/01/19/2023-00414/non-compete-clause-rule
# Final rule: Federal Trade Commission, "Non-Compete Clause Rule,"
# 89 FR 38342 (May 7, 2024).
# https://www.federalregister.gov/documents/2024/05/07/2024-09171/non-compete-clause-rule
# Removal: "Revision of the Negative Option Rule, Withdrawal of the CARS Rule,
# Removal of the Non-Compete Rule To Conform These Rules to Federal Court
# Decisions," 91 FR 6507 (February 12, 2026).
# Comments: Regulations.gov docket FTC-2023-0007.
#
# What the final rule says about the comments (89 FR 38342): "In response to
# the NPRM, the Commission received over 26,000 public comments," from
# employers and workers "in a wide range of industries and from every State".
# The FTC summarized what commenters reported: non-competes "prevented them
# from taking a better job or starting a competing business," "suppressed
# their wages," and "created a climate of fear that deters competitive
# activity," while commenters opposed to the rule argued that non-competes
# protect firms' investments. The five seed codes below paraphrase those
# summaries. Everything else in the codebook is meant to be added while
# reading, mostly as in-vivo codes taken from commenters' own words.
#
# The rule itself no longer stands: the FTC removed it from the Code of
# Federal Regulations in February 2026 after federal courts vacated it. The
# comment record on Regulations.gov is unchanged.
#
# Reproduction notes:
# - Commenters keep the rights to their own comments, so every comment in
# sample-data.json is SYNTHETIC, written in the form of a Regulations.gov
# submission. Comment IDs end in SYN01 to SYN10 and match no real comment.
# - Codebook edits made in the browser are additions at the top level. Merging
# two codes is an admin API call (POST /api/codebook/admin/merge), and in
# Potato 2.13.1 a merge does not re-point codings already saved under the
# old code, so settle duplicates early and record each decision in a memo.
# - A .qdpx export of this project carries the codes as a flat list and
# leaves out memos.
annotation_task_name: "FTC Non-Compete Rule Public Comments: Open Coding in QDA Mode"
task_dir: "."
data_files:
- sample-data.json
item_properties:
id_key: "id"
text_key: "text"
output_annotation_dir: "annotation_output/"
export_annotation_format: "jsonl"
port: 8000
qda_mode:
enabled: true
memos:
enabled: true
show_sidebar_by_default: true
codebook:
enabled: true
mode: open
# With text selected in comment_codes, press "i" to turn the selected words
# into a new code. The composer shows similar existing codes, so a coder can
# reuse one instead of creating a near-duplicate.
codebook_invivo_key: i
# A coding team reads one docket together, so new memos default to shared.
# Mark a memo as an issue and assign it to someone to put a codebook question
# on that person's list of open issues.
annotation_ui:
memos: true
visibility: shared
# Full-text search over the comment text (the text_key field; the submitter
# and state fields are not indexed). With annotator_claim, a coder can search
# for words such as "lawyer" or "trade secrets" and pull the matching comments
# into their own queue.
search:
enabled: true
backend: fts5
annotator_claim: true
annotation_instructions: |
Each item is one public comment submitted to the Federal Trade Commission
on its proposed Non-Compete Clause Rule (docket FTC-2023-0007).
1. Read the whole comment first.
2. Highlight passages and apply codes in "Comment codes". The codebook
starts with five codes taken from the FTC's own summary of the comments.
When a passage needs a code that does not exist, select the commenter's
words and press "i" to create an in-vivo code from them.
3. Record the commenter's position on the proposed ban in "Position".
4. Use search to find comments that touch a code you just created, and
claim them into your queue to check whether the code holds up.
5. Write memos as you go. If two codes seem to overlap, or a code's meaning
is drifting, write a shared memo, mark it as an issue, and assign it to
the lead coder. Resolve the issue once the codebook decision is made.
instance_display:
fields:
- key: comment_id
type: text
label: "Comment ID"
- key: submitter_type
type: text
label: "Submitter (self-described)"
- key: state
type: text
label: "State"
- key: text
type: text
label: "Comment"
span_target: true
annotation_schemes:
- annotation_type: span
name: comment_codes
description: "Highlight a passage and apply a code. Select words and press i to code in vivo."
codebook: true
labels:
- name: "blocked from a better job"
tooltip: "The commenter says a non-compete kept them, or workers they know, from taking a better job."
- name: "blocked from starting a business"
tooltip: "The commenter says a non-compete kept them from starting a competing business."
- name: "suppressed wages"
tooltip: "The commenter links a non-compete to lower pay or smaller raises."
- name: "climate of fear"
tooltip: "The commenter describes fear of being sued, or of the employer, as what keeps workers in place, whether or not the clause is enforceable."
- name: "protects employer investment"
tooltip: "The commenter argues that non-competes protect an employer's investment in training, clients, or confidential information."
- annotation_type: radio
name: position
description: "What position does the comment take on the proposed ban?"
labels:
- name: "supports the ban"
- name: "opposes the ban"
- name: "supports with changes"
- name: "no clear position"
user_config:
allow_all_users: true
Sample Data
[
{
"id": "ftc_001",
"comment_id": "FTC-2023-0007-SYN01",
"submitter_type": "Individual (veterinary technician)",
"state": "Ohio",
"text": "I have worked at the same animal hospital for six years. A clinic ten minutes from my house offered me $4 more an hour and better hours, but my contract says I cannot work within 25 miles for two years. I turned it down. I support the ban. Nobody should have to choose between a raise and getting sued.",
"synthetic": true
},
{
"id": "ftc_002",
"comment_id": "FTC-2023-0007-SYN02",
"submitter_type": "Individual (hair stylist)",
"state": "Arizona",
"text": "I built my own client list over nine years. When I wanted to rent a chair and go out on my own, the salon owner reminded me of the noncompete I signed when I was 19. I don't even know if it would hold up, but I can't afford a lawyer to find out. So I stayed. That is what these agreements really do. They keep you scared.",
"synthetic": true
}
]
// ... and 8 more itemsTry it live — no install
Boot the real Potato server in your browser (WebAssembly) and annotate with this exact config. Nothing leaves your machine.
Run live in your browserGet This Design
Clone or download from the repository
Quick start:
git clone https://github.com/davidjurgens/potato-showcase.git
cd potato-showcase/text/computational-social-science/ftc-noncompete-public-comments-qda
potato start config.yamlDataset & paper
Federal Trade Commission. 2024. Non-Compete Clause Rule. Federal Register 89: 38342 (May 7, 2024).
Citation (BibTeX)
@misc{ftc2024noncompete,
title = {Non-Compete Clause Rule},
author = {{Federal Trade Commission}},
howpublished = {Federal Register 89: 38342},
year = {2024},
note = {Final rule, FR Doc. 2024-09171. Public comments: Regulations.gov docket FTC-2023-0007},
url = {https://www.federalregister.gov/documents/2024/05/07/2024-09171/non-compete-clause-rule}
}
@misc{ftc2023noncompete_nprm,
title = {Non-Compete Clause Rule},
author = {{Federal Trade Commission}},
howpublished = {Federal Register 88: 3482},
year = {2023},
note = {Notice of proposed rulemaking, FR Doc. 2023-00414},
url = {https://www.federalregister.gov/documents/2023/01/19/2023-00414/non-compete-clause-rule}
}Details
Annotation Types
Domain
Use Cases
Tags
Found an issue or want to improve this design?
Open an Issue(opens in a new tab)Related Designs
PsyCoMark: Psycholinguistic Conspiracy Marker Extraction and Detection
SemEval-2026 Task 10 (PsyCoMark): studying how conspiracy theories are expressed in social-media (Reddit) statements. Annotators make a document-level conspiracy judgment (Yes / No / Can't tell) and extract five psycholinguistic conspiracy markers as spans: Actor, Action, Effect, Victim, and Evidence.
Pandemic Journaling Project: Thematic Coding of Journal Entries in QDA Mode
Qualitative coding of COVID-19 journal entries in the format of the Pandemic Journaling Project (PJP-1), run in Potato's QDA Mode with an open codebook seeded from PJP's preliminary tag list, excerpt-level and in-vivo coding, private memos, and one case per journaler. PJP-1 entries are controlled-access data at the Qualitative Data Repository, so the ten sample entries are synthetic.
Adverse Drug Event Extraction (CADEC)
Named entity recognition for adverse drug events from patient-reported experiences, based on the CADEC corpus (Karimi et al., 2015). Annotates drugs, adverse effects, symptoms, diseases, and findings from colloquial health forum posts with mapping to medical vocabularies (SNOMED-CT, MedDRA).