Spec-driven development:agents build to the spec.

A change is done when every acceptance criterion is met.

Steer by Pento turns a request into a spec before any code exists, as goals with numbered acceptance criteria. AI coding agents build against them in isolated sandboxes, an engineer steers any session that drifts, and review checks every criterion before a pull request merges.
Illustrative Steer intake. Dana Kim writes in Slack: "we need a billing page with Stripe before the demo on the 20th". The orchestrator decides to create a goal with probability 0.94 and proposes "Stripe billing page" with three acceptance criteria (Customer saves a card with Stripe Elements; Invoice list with a PDF download; A failed payment shows a retry banner), priority P1, after "Cart totals in EUR". Dana Kim moves it to Ready.

How a spec gets written

  1. 01Someone asksA message in Slack or the Ask Steer dock
  2. 02Steer interviewsThe person who knows, in about 12 minutes
  3. 03Answers become contextVersioned and linked to the goal
  4. 04You mark goals ReadyEach with criteria, a priority and dependencies

What is spec-driven development?

Spec-driven development is a way of building software where the spec is written before the code: a set of goals, each with numbered acceptance criteria. AI coding agents build against those goals, and reviewers check the result against the same criteria, so a change is done when every criterion is met. At Pento the spec stays lightweight and changes as you learn: a goal can be revised or added at any point, and the next session builds from the new version.
From a request to a reviewed change: who does what
  1. 01Request
    • YouSay what you need in Slack or the dock
    • Steer + AI agentsDrafts a goal and lists what it doesn't know
  2. 02Interview
    • YouTalk it through in about 12 minutes
    • Steer + AI agentsAsks the open questions, saves the answers
  3. 03Spec
    • YouReview each proposed goal and mark it Ready
    • Forward deployed engineersWrite the spec with your team
    • Steer + AI agentsProposes goals with acceptance criteria
  4. 04Build
    • YouAnswer Steer's questions when a goal is unclear
    • Forward deployed engineersSteer a session that drifts
    • Steer + AI agentsAgents build from the goal's brief, in sandboxes
  5. 05Review
    • Forward deployed engineersMark each criterion confirmed or to fix
    • Review + checksA different model checks every criterion

A goal can be revised at any point, and the next session builds from the new version.

Compared

Spec-driven vs vibe coding vs waterfall PRDs.

Each one has a place. The difference is what gets written before the code, and what the code is checked against once it exists.
Spec-driven development compared with vibe coding and waterfall PRDs
Written before codeVibe codingA prompt, rewritten as you goWaterfall PRDA long requirements document, signed off up frontSpec-driven, on SteerGoals with numbered acceptance criteria, short enough to read in a minute
Code is checked againstVibe codingWhether it looks right when you try itWaterfall PRDThe PRD, if someone rereads itSpec-driven, on SteerEach criterion, by a review model and a forward deployed engineer, with evidence on the pull request
When you learn somethingVibe codingThe next prompt changes, and nothing records whyWaterfall PRDA change request, or the document quietly goes staleSpec-driven, on SteerThe goal is revised or a new one is added, and the next session builds from it
Works well forVibe codingPrototypes, demos and throwaway experimentsWaterfall PRDContracts where the scope can't moveSpec-driven, on SteerProduction work, with several agents building at once
Where it breaksVibe codingProduction code nobody can review against an intentWaterfall PRDWeeks of writing before anything shipsSpec-driven, on SteerWork nobody can describe yet, which starts with an interview or a discovery session

Heavy PRDs slowed us down on our own projects. A spec on Steer holds what an agent needs to build and a reviewer needs to check, and it changes as soon as you learn something.

From conversation to spec

How Steer turns a conversation into a spec.

Most specs start as one sentence in Slack. Steer does the follow-up a good engineer would: it finds the open questions, asks the person who knows, and writes the answers down before anyone writes code.
  1. 01

    Someone says what they need

    A message in Slack or the Ask Steer dock is enough: “we need a billing page with Stripe before the demo on the 20th.” Steer drafts a goal from it and lists what it doesn't know yet.

  2. 02

    Steer interviews the person who knows

    When a goal needs a conversation, Steer writes the interview: who to ask, what it already knows and the open questions. The person talks it through with Steer in the browser, in about 12 minutes, while Steer draws the options beside the call.

  3. 03

    The answers become context

    The interview is saved as a versioned context item linked to the goal, and it answers the goal's open questions. The next session reads it the same way a person would.

  4. 04

    Steer proposes goals, and you mark them Ready

    Each proposed goal arrives with acceptance criteria, a priority and its dependencies. A person reviews it, edits what's off and marks it Ready.

Illustrative Steer voice interview. Steer interviews Dana Kim in the browser about a Stripe billing page. A four-item agenda (when to charge, currencies, taxes, failed payments) ticks off as she answers, and the transcript scrolls. Beside the call, Steer draws a pick-one card, where Dana chooses to charge on the first order rather than at signup, and the steps for failed-payment retries on day 1, 3 and 7 before the account is paused. When all four items are covered, the answers are saved as version 3 of a context item and Steer proposes two goals with acceptance criteria.
Anatomy of a goal

What a goal on Steer carries.

A spec on Steer is a set of goals. Each one is feature-sized and holds what a session needs to build it and what a reviewer needs to check it.
Illustrative Steer goal, Stripe billing page, with its eight fields: the title; three acceptance criteria, two confirmed and one to fix after the 11:05 review; priority P1 of P0 to P3; it needs Cart totals in EUR first; a checklist at 2 of 4; linked context (an interview with Dana Kim at version 3, the repo map and the conventions); a budget bar at 78%, gold past the 75% mark; and its state, In progress, between Proposed and Verified.
Title
One feature-sized outcome, named the way your team talks about it.
Acceptance criteria
Numbered, testable statements. Review checks each one by number, and the evidence shows which are confirmed.
Priority
P0 to P3. Steer orders the work by priority and by what depends on what.
Dependencies
Which goals it needs first and which goals need it. Independent goals build at the same time, in separate sandboxes.
Checklist
The steps toward the criteria, kept by the orchestrator as sessions report back, so progress is visible at a glance.
Linked context
Interviews, docs, the repo map and its conventions, versioned, so a session reads the same facts a person would.
Budget
A cap on what a session may spend. The cost bar turns gold at 75%, and a session that spends it all stops.
State
From Proposed to Ready, In progress, In review, Approved and Merged. A merged goal is Verified only when CI is green on the default branch.
During the build

How the spec stays in charge.

Writing the spec first only helps if the build keeps reading it. On Steer every session starts from the goal, a person can correct a session while it runs, and review checks the result against the same criteria.
  • Every session starts from the goal

    A coding session gets a brief built from the goal: its criteria, the linked context and the budget. The brief is a file in the session's sandbox, brief.md, so the agent reads the spec before it touches code.

  • A person can steer mid-run

    Our engineers watch the sessions they run. When one drifts, a steer message lands at the next five-minute slice, so the fix happens inside the session instead of in a rejected pull request.

  • Review checks every criterion

    An independent review, on a different model than the one that wrote the code, plus a forward deployed engineer, marks each criterion confirmed or to fix, with the file and line of every finding.

  • Unclear specs become questions

    When the orchestrator is less than 0.70 sure of its next decision, it asks a person instead of acting, with a deadline and a default so the project never stalls.

Illustrative Steer coding session on a Stripe billing page, run by Claude Code in a sandbox with a budget. The agent reads the brief, edits the checkout and passes 12 tests, then starts writing a new currency helper and the watch verdict turns to drifting. Leo steers it to use the existing Money type. The message is delivered at the next slice, the agent switches the checkout to Money, the watch returns to on track, 18 tests pass and the evidence is attached to the pull request.
FAQ

Questions about spec-driven development

Not covered here? Bring the question to a discovery call. An engineer reads every request.

Book a discovery call

Contact us

Start your next project from a spec

Start with the free audit. It turns the work into goals with acceptance criteria, and that scope sets the quote: a fixed price when the scope is clear, or a monthly fee for a team. An engineer reads every request.