# Using KLEC Watch (klecwatch.com) — a guide for AI agents

**TL;DR:** klecwatch.com aggregates Kentucky legislative lobbying disclosures (Kentucky
Legislative Ethics Commission public reports, 2015–present). Everything is plain,
CORS-open JSON under `https://klecwatch.com/data/` — no auth, no key, no SDK. See
`/llms.txt` for the full data contract. Campaign finance lives on the sibling site,
https://krefwatch.com.

## Pick your entry point

| You want | Fetch |
|---|---|
| Valid years + completeness flags | `/data/years.json` — 2015–2026; 2018 missing, 2017 Q1-only, current year in progress |
| "Who spent the most lobbying Frankfort in X year?" | `/data/y/<year>/summary.json` → `topEmployers` |
| "How much has <company> spent lobbying?" | `/data/employers-index.json` (find key + per-year totals) → `/data/y/<year>/employers.json` for detail |
| "Which lobbyists did <company> hire?" | `/data/y/<year>/employers.json` → that employer's `agents` |
| "Who are <lobbyist>'s clients / how much do they make?" | `/data/agents-index.json` (find slug) → `/data/y/<year>/agents.json` |
| "Who lobbied <bill>?" | `/data/y/<year>/bills.json` — **2025 and 2026 only** |
| "Which industries spend the most?" | `/data/y/<year>/summary.json` → `topIndustries` |
| "Does this employer also give campaign money?" | `/data/kref-links.json` → `https://krefwatch.com/e/<date>/employers/<slugified-key>` |

Money fields: `comp` = agent compensation (paid to lobbyists), `other` = other reported
expenses (receptions/events/advertising), `total` = comp + other as reported to KLEC.

## Rules for reporting from this data

1. **Cite the year — and its completeness.** 2018 is missing entirely (no archived
   snapshot); 2017 covers Q1/the session only; the current year is in progress.
   `years.json` carries `complete` + `note` for every year.
2. **Bills come from free text.** Employers describe lobbying in prose; only explicit
   bill numbers ("HB 500") are indexed, and only for 2025+. Absence from a bill page
   is not evidence an employer didn't lobby the topic.
3. **"Legislative agent" = lobbyist.** KLEC's statutory term; the site says lobbyist,
   the JSON says agent. Same people.
4. **Agent names were flipped heuristically.** KLEC files Last-First; the pipeline
   flips to First-Last. Compound surnames can mangle — verify against KLEC originals.
5. **Employer keys are heuristic normalizations.** The `key` field groups filings across
   years; the raw display `name` is preserved alongside.
6. **Filings lag.** KLEC reporting periods close on a schedule; "as of the latest
   filing" is the honest frame. Build date: `generatedAt` in `/data/years.json`.
7. **Lobbying ≠ campaign money.** Lobbying spend (here) and campaign contributions
   (krefwatch.com) are different legal regimes; don't sum them as one number.
8. **Verify before publishing.** Original records: https://klec.ky.gov/Reports

## Provenance

Current-year data is refreshed from KLEC's live public reports (Legislative Agent
Compensation + Employer Expenses + Bills Lobbied); historical years were reconstructed
from Internet Archive snapshots of the same reports. KLEC Watch is an independent
project of The Lexington Times (https://lexingtonky.news) and is not affiliated with
the Kentucky Legislative Ethics Commission. Fully open source:
https://github.com/paul-codes-1/klecwatch · Contact: editor@lexingtonky.news
