The software stack has a gap.
On one end: tools that capture signal. Dovetail, Intercom, user research platforms—everything that tells you what users need. On the other end: tools that execute. Cursor, v0, Claude Code—everything that turns instructions into working software.
The middle is compressing. And that middle is where the most important work happens: deciding what gets built and why.
Most teams skip it. They go straight from customer feedback to a prompt in Cursor. The result: code that solves the wrong problem, or solves it without context.
We call this missing middle the Intent Layer.
┌─────────────────────────────────────┐
│ User Signal │ ← Feedback, friction, research
├─────────────────────────────────────┤
│ ▶ Intent Layer ◀ │ ← What gets built & why
├─────────────────────────────────────┤
│ Agentic Execution │ ← Cursor, v0, Claude Code
├─────────────────────────────────────┤
│ Shipped Software │
└─────────────────────────────────────┘
Prompts Are Not Intent
A prompt is a request. Intent is a specification.
| Prompt | Intent Spec |
|---|---|
| "Add a checkout flow" | Preconditions, expected outcomes, edge cases, traceability to user friction |
| Ephemeral—typed once, discarded | Versioned, auditable, persistent |
| Invented by the developer | Derived from user signal |
| Optimized for speed to first output | Optimized for correctness of final outcome |
When a developer opens Cursor, they shouldn't be inventing context from scratch. They should be pulling from a system that already computed what needs to be built and why.
Prompts generate code. Intent specs generate the right code.
Why the Gap Exists
Today, intent is scattered across your organization:
- Research lives in Dovetail.
- Specs live in Notion or Google Docs.
- Tasks live in Jira or Linear.
- Context lives in someone's head.
No single system synthesizes user friction into structured, machine-readable intent. Each handoff between these tools introduces drift. Each interpretation introduces error.
The fix isn't another tool in the stack. It's a layer that sits above them—synthesizing signal, structuring intent, and pushing context to every downstream agent.
The Three Layers of Intent
We see software development converging on a 3-layer architecture:
1. Intention — The Raw Signal
Unstructured information: user interviews, support tickets, analytics, NPS surveys. Scattered across disconnected silos. This is where friction surfaces—the raw evidence of where your product fails its users.
2. Structure — Computed Intent
This is the Intent Layer itself. It translates abstract friction into a formalized specification. Not by asking you to write specs from scratch, but by computing them—clustering friction signals and generating structured, evidence-backed specifications.
An IntentSpec is not a document. It's a data object:
objective:
statement: "Reduce cart abandonment at payment step"
success_criteria:
- Checkout completes in under 3 seconds on 3G
- Cart abandonment drops from 23% to below 15%
constraints:
- Must work without JavaScript enabled
- Must support existing payment provider
- Rate limited to prevent abuse
outcomes:
- observable: "Conversion rate increase at payment step"
- verification: "A/B test shows 10%+ improvement"
edge_cases:
- Payment declined → show retry with alternative method
- Session expired → preserve cart state
- Zero items in cart → redirect with explanationThis isn't prose. It's a contract. An agent can execute against it. A human can review it. Both can verify whether it was fulfilled.
3. Projection — Execution
Where the spec becomes executable artifacts: code, UI, API documentation, tests. This is where Cursor, Claude Code, and v0 live. When they receive an IntentSpec instead of a prompt, they don't guess—they execute against explicit criteria.
Why This Matters Now
AI has made execution cheap. You can prototype a working solution in the time it used to take to argue about the wireframe. This is powerful—but it creates a dangerous illusion.
When building is instant, teams skip the hard work of defining what they're building. Fast execution masks poor intent. A shiny AI-generated feature ships in a day, only to increase drop-off because no one asked whether users actually needed it.
This is what we've been calling The Vibe Coding Hangover. Solo developers can hold context in their head. Add a PM, a Designer, and three AI agents—and context fragments. Prompts become requests with no shared definition of success.
The bottleneck has shifted. It's no longer writing code. It's defining what code to write.
The PM's Role is Changing
The PM's job used to be translation: talk to customers, synthesize problems, write specs, hand them to engineers. The value was in the compression—taking noisy, qualitative input and producing structured output.
But that compression step is exactly what language models do well. When agents can take a well-formed problem and produce working code, the spec becomes the product. The PM's job shifts from writing handoff documents to forming intent clearly enough that agents can act on it directly.
This is not a demotion. Clarity is harder than verbosity. Precision is harder than prose.
What an Intent Layer Does
- Captures friction from real user signals—support tickets, research transcripts, analytics—not from intuition alone.
- Structures intent into versioned, machine-readable specs with explicit success criteria, constraints, and edge cases.
- Feeds agents exactly what they need to execute—no hallucination, no drift.
- Verifies outcomes against the defined spec after shipping. Did the friction actually decrease?
- Preserves memory so the team knows why something was built, not just that it was built.
Who Owns Intent?
John Moriarty wrote about the shift from products to systems. His framework for the new design role is "Systemic Orchestration"—designers provide the bricks, blueprints, and building codes, not the finished house.
This applies to product work broadly. Designers, PMs, and engineers are all converging on the same discipline: defining intent with enough structure that agents can execute it faithfully.
Someone has to own that layer. That's what we're building at Pathmode.
Don't Just Write Code. Define Intent.
Turn user friction into structured Intent Specs that drive your AI agents.
Get Started for Free