Adding data-annotation-target attributes so the transparency system knows which UI elements to explain.
The Problem with Floating Transparency
The first version of Project Nothing's transparency system was honest but imprecise. It disclosed that psychological tactics were being used without pointing at where, exactly, they manifested in the interface. The result was transparency in the abstract — a general acknowledgment that persuasion was occurring, without specificity about which button, which phrase, which layout choice was doing the persuading.
Abstract transparency is better than none. But it leaves readers in the position of knowing they're being influenced without knowing how to locate the influence. We wanted something more rigorous.
The data-annotation-target Pattern
The solution was deceptively simple: add data-annotation-target attributes to each component in the manifesto. These HTML data attributes serve as anchor points — when the transparency system activates, it can query the DOM for annotated elements and attach explanations directly to them.
Each attribute carries a string identifier corresponding to a specific influence category. The hero section's call-to-action button carries data-annotation-target="cta". The pricing tiers carry data-annotation-target="pricing". The scarcity copy carries data-annotation-target="scarcity". The data model maps these identifiers to explanations.
Self-Describing Interfaces
There's a deeper principle operating here. Most interfaces are designed to be compelling without explaining why they're compelling. Conversion rate optimization is typically invisible: A/B tests run silently, copy is refined without comment, color choices are made based on psychological research that remains hidden from view.
By building annotation targets directly into the component structure, we made the persuasion architecture a first-class concern of the codebase itself. The UI knows what it's doing and is built to say so. The transparency system doesn't overlay explanations on top of an interface that was designed to hide — it attaches explanations to an interface that was designed to disclose.
What This Enables
With annotation targets in place, the transparency system can now render contextually accurate disclosures. When you activate the transparency dial, the explanations appear beside the specific elements they describe — not as a separate document, not as a popup glossary, but as labels anchored to the interface decisions they explain. The form and the disclosure share the same space.
This matters for Project Nothing's core promise. We don't just tell you we use psychological tactics. We show you exactly where.
Experiment Context
- Commit
- 6381c9e
- Mutation rationale
- feat(transparency): add data-annotation-target attributes to manifesto components
- Last reviewed
- February 21, 2026