Example
One full run, end to end
A developer has vibe-coded a research assistant: it crawls public pages for
context and drafts articles with an LLM. Before shipping to users in the US,
Germany, and South Korea, they ask their coding agent to lint it.
1 · The agent works out whose law applies
The app crawls two sources the developer named. Server location is noise;
what matters is each operator's jurisdiction, so the agent resolves the
domains first.
resolve_domain_jurisdiction(domain="stadt-koeln.de")
→ { jurisdiction: "de", method: "entity_domains" }{# noqa: public-leak — "entity_domains" is the tool's public API method value in real responses, not an internal table reference #}
resolve_domain_jurisdiction(domain="cool-startup.ai")
→ { jurisdiction: null, method: "unknown" }
# .ai is a vanity TLD: LexLint refuses to guess. The agent checks the
# operator's terms page and finds a Delaware company: lint "us".
2 · Declare the profile, run the lint
The agent declares what the app actually does. It crawls, and it generates
content; it does not train models on the crawled text, so it declares only
what is true.
lint_app_profile(
activities=[
"crawls_web",
"generates_content"],
jurisdictions=[
"us",
"de",
"eu",
"kr"]
)
WARNeuTDM opt-outs are enforceable rights reservations: honor machine-readable reservations when crawlingDSM Directive Art. 4(3) · as of 2026-07-27 WARNeuSynthetic content transparency: AI-generated text must be identifiable as such in some contextsAI Act Art. 50 · as of 2026-07-27 INFOkrGenerated-content labeling duties phase inAI Framework Act · as of 2026-06-30 0 errors, 2 warnings, 1 info: review the warnings below
3 · The agent reads the findings back into its plan
This is where a lint earns its keep with an LLM at the keyboard: the
findings are structured, cited, and specific enough for the agent to map
each one onto the code it just wrote.
# the agent, reasoning over the lint output
Agent: Two findings implicate code in this repo.
The TDM warning lands on fetcher.py: I crawl
stadt-koeln.de but never check for machine-readable
opt-out signals before fetching.
The two labeling entries land on render.py: drafts
ship with no indication they are AI-assisted, and the
KR duties phase in on dates I should record next to
the label logic.
Agent: Fixing both files now, while the change is cheap.
4 · ...and fixes the app
# fetcher.py: honor machine-readable TDM reservations (DSM Art. 4(3))
- html = fetch(url).html
+ resp = fetch(url)
+ if tdm_opt_out(resp.headers, resp.html):
+ return skip(url, reason="TDM rights reserved")
+ html = resp.html
# render.py: label synthetic content (AI Act Art. 50; KR phase-in)
+ draft.badge = "AI-assisted draft"
+ # KR labeling duties phase in: AI Framework Act
+ draft.meta["generator"] = APP_NAME
The crawler now checks reservation signals before every fetch, and drafts
carry a visible label with the phase-in duty recorded where the next
developer will see it.
5 · What the run means, and what it does not
The findings do not disappear on re-run: obligations apply whether or not
you have met them, and LexLint reports what applies. What changed is that
every finding now maps to a shipped mitigation, each with a citation for
counsel to start from. The app is not "compliant": LexLint cannot know
that, and says so. What the team has is the basics caught early, at the
moment they were cheapest to fix.
Connect your agent →