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 │
└─────────────────────────────────────┘
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.
Today, intent is scattered across your organization:
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.
We see software development converging on a 3-layer architecture:
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.
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 explanation
This 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.
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.
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 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.
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.