# Codebook: data/fdd_item20_associations.csv Unit: one Clean Franchise Disclosure Document (FDD) on Minnesota CARDS, the 259-FDD sample of /research/franchise-royalty-rates/ (FDDs issued 2025-01-24 to 2026-08-18). Source passages: FDD Item 20 ("Outlets and Franchisee Information"), governed by 16 CFR 436.5(t). Paragraph numbers verified against eCFR on 2026-10-18: (t)(4) current franchisee list, (t)(5) former franchisee list, (t)(7) confidentiality clauses, (t)(8) trademark-specific franchisee organizations. Councils are also read from Item 11 and the franchise agreement. Reading rule: code what the FDD says, not what it implies elsewhere. When a field is unclear after reading, take the more conservative code (the one that claims less) and say why in `notes`. ## Identification (joined, not re-extracted) | Field | Source | |---|---| | brand, franchisor, sector, sector_label, fdd_issue_date, mn_file_number, mn_document_id | /research/franchise-royalty-rates/ data/fdd_fees.csv | | mn_document_url | current CARDS link, research/emerging-franchise-brands/data/link_updates.csv (links last verified 2026-10-14) | ## Confidentiality clause statement, 16 CFR 436.5(t)(7) | Field | Values | Rule | |---|---|---| | conf_status | affirmative / denial / contradictory / not_stated | affirmative = the FDD says franchisees signed clauses restricting what they can say about their experience during the last three fiscal years, or prints the Rule's model statement ("In some instances, current and former franchisees sign provisions restricting their ability to speak openly...") without a denial. The Rule requires that statement only "if so", so printing it alone counts as affirmative. denial = says no franchisee signed such a clause (including denials limited to settlements or to former franchisees). contradictory = prints the model statement and also says none were signed. not_stated = no statement in Item 20. | | conf_wording | model_only / own_statement / hedged / quantified / na | Strength of an affirmative or contradictory statement. model_only = only the Rule's model sentence (including light edits such as "have signed" or "speak only"). own_statement = the franchisor's own sentence that clauses were signed or are used (for example "During the last three fiscal years, we have signed confidentiality clauses with current or former franchisees", or a standard practice in settlements). Clarified after the blind check: a model sentence edited to claim signing in a period ("in the last 3 years", "some current and former franchisees have signed") counts as own_statement, and its signers are coded from that sentence. hedged = only says franchisees "may" sign or "may have" signed. quantified = gives a number or share (for example "one agreement", "all our franchisees"). na = denial or not_stated. | | conf_coverage | current_and_former / current_or_former / former_only / current_only / unspecified / model_only / na | Who signed, as the franchisor's own sentence states it. model_only = only the model sentence names anyone (it always says "current and former"). unspecified = "franchisees" or "some franchisees" with no current/former split. | | conf_circumstances | settlement / exit / agreement / multiple / not_stated / na | When the FDD says why clauses were signed. settlement = dispute settlements. exit = termination, release, reacquisition or transfer agreements. agreement = the franchise agreement itself. multiple = two or more of these. | ## Franchisee organizations, 16 CFR 436.5(t)(8) | Field | Values | Rule | |---|---|---| | org_status | independent_listed / sponsored_listed / both_listed / other_listed / none_known / not_stated | independent_listed = Item 20 (or an exhibit it points to) names an independent franchisee organization that asked to be included, or one the FDD calls independent. sponsored_listed = Item 20 (or its exhibit) names an organization, council, board or committee the franchisor created, sponsored or endorsed (a council named in Item 20 counts, even when the FDD also says "no trademark-specific organizations"). both_listed = both kinds. other_listed = an organization named with no stated relationship. none_known = Item 20 says there is none, none known, none sponsored or none that asked. not_stated = no organization statement. | | org_kind | association / advisory_council / both / na | association = a member-based franchisee or owners association (incorporated, dues, AAFD chapter, "association" in the name). advisory_council = a council, board, committee or working group. | | council_any | exists / reserved / none_stated | Any franchisor-sponsored franchisee advisory council, board or committee mentioned anywhere in the FDD (usually Item 11 or the franchise agreement). exists = the FDD says one exists now. reserved = only a right or plan to form one, or a reference "if established" or "if active". none_stated = says none, or no mention. Fund expense lists that mention councils do not count. | ## Former franchisee list, 16 CFR 436.5(t)(5) | Field | Values | Rule | |---|---|---| | former_list | entries / none / not_located | entries = at least one former franchisee is identified (name or entity) in the list. none = the list or Item 20 says there are none. not_located = Item 20 points to a list whose entries are not in the FDD's text layer. No names or contact details are stored anywhere. | | former_phones | count | Telephone-number patterns in the parsed list segment (02c_former_segments.py), a rough size signal only; not published per brand. | ## Joined fields (published datasets, not recomputed) | Field | Source | |---|---| | fiscal_year, start, end, exits, transfers, years_franchising | /research/franchise-closure-rates/ data/item20_counts.csv (exits = terminations + non-renewals + reacquisitions + ceased operations, latest fiscal year) | | exit_rate_pct, churn_rate_pct | derived here: exits / start x 100 and (exits + transfers) / start x 100, systems with start > 0 only | | item3_any, by_franchisee_vs_franchisor, size_band | /research/franchise-litigation-disclosure/ data/fdd_item3_item4.csv | | adfund_council, adfund_council_power | /research/franchise-advertising-fund/ data/fdd_item11_adfund.csv (`council`, `council_power`) | ## Process 1. Regex suggestions and passage extraction (scripts/01_extract.py, 02_autocode.py, 02b and 02c for the former list). 2. First-pass reading of every FDD (data/coding/first_pass.psv; former lists flagged by the parser or in conflict with Item 20 counts read in data/coding/former_reading.psv). Frozen before the blind check (scripts/03_freeze_and_pick.py). 3. Independent blind check of 20 random FDDs (result: 155 of 160 fields agreed; 1 first-pass error, 4 fields from the wording ambiguity clarified above; data/blindcheck/score.json) by a separate reviewer who never saw the first-pass values; every disagreement adjudicated against the FDD text (data/blindcheck/adjudication.csv). Error patterns fixed dataset-wide. Text fields: en and em dashes are replaced with hyphens (house style). No franchisee or former franchisee name or contact detail is stored.