← All articles

SpecDD for Non-Technical Users: Can You Vibe-Spec? Yes

·

Yes, you can vibe-spec.

That sounds a little unserious, but I mean it in a practical way. If you can explain what you want a feature to do, what it should avoid, and how you would know whether it worked, you can write a useful SpecDD spec. It does not have to be perfect, and it does not have to describe the architecture or name the files, services, APIs, or database tables involved.

What it has to do is make intent visible, which is already valuable because a lot of software work goes wrong before anyone writes code. A product decision is made in a meeting, clarified in a chat thread, partially copied into a ticket, reinterpreted by a developer, and then handed to an AI agent that sees only the last slice of the conversation. By the time implementation starts, the most important context may be scattered across five places and three people.

SpecDD gives that context somewhere better to live. For non-technical users, the useful starting point is not syntax or architecture, but the behavior you want the software to have and the mistakes you already know you do not want it to make.

Your intent is already part of the system

Software teams often talk as if specifications are a technical artifact, but many of the most important rules in a product are not technical at first. They come from product judgment, customer support history, sales promises, compliance needs, operational pain, QA findings, and the small details users notice when the system behaves in a way that feels wrong.

A developer may know where a signup flow lives in the codebase, while a product manager may know why the trial must start without a credit card. A support lead might be the person who understands why customers get confused when an error message mentions an internal billing state, and QA may be carrying the memory of the edge case that has broken three releases in a row. A founder may not know which component renders the form, but may know that the workflow needs to feel immediate because the whole product promise depends on it.

That knowledge is specification work, whether or not it looks technical.

The problem is that this knowledge often lives in places AI agents cannot reliably use. A ticket may contain the main request, but not the reasoning. A meeting note may explain the customer problem, but not the acceptance behavior. A chat thread may contain the decision, but nobody will remember to paste it into the next implementation prompt. The agent will then do what agents do: fill the empty space with a plausible answer, which is sometimes fine and sometimes exactly the thing your team already decided not to do.

A spec can sound like a person wrote it

A SpecDD file can contain technical sections when those are useful, but it does not have to begin that way. A plain-language spec is still a useful spec if it captures the behavior clearly.

Spec: Trial Signup

Purpose:
  Let a new customer start a 14-day trial without talking to sales.

Must:
  Ask only for the information needed to create the trial.
  Send a welcome email after signup.
  Show a clear message if the email address is already used.
  Let the customer start using the product immediately after signup.

Must not:
  Ask for credit card details.
  Create duplicate accounts for the same email address.
  Mention internal billing systems to the customer.

Scenario: new customer starts trial
  Given a new customer enters their name, company, and email address
  When they submit the signup form
  Then a trial account is created
  And they can enter the product immediately
  And they receive a welcome email

Scenario: email already exists
  Given an account already exists for the email address
  When the customer tries to start a trial with that email
  Then they see a clear message telling them what to do next
  And no duplicate account is created

Done when:
  A new customer can complete signup without help.
  The customer receives the welcome email.
  Support can see that the trial account exists.

There is no database schema in that spec, no architecture, and no instruction about which service owns the behavior. It is still useful because it tells the team and the agent what matters from the user’s point of view.

A developer could improve it by adding ownership, dependencies, test expectations, or technical boundaries, but that does not make the first version wrong. It makes the first version the starting point.

Prompt a business-grade spec from your notes

The format is there to help, not to make you sound like someone else. You do not need to start by writing a perfect SpecDD file directly. You can start with rough business notes, customer complaints, support examples, screenshots, or the product behavior you want, then ask an agent to turn that material into a basic SpecDD spec.

For example, you can prompt from notes like this:

Turn these business notes into a basic SpecDD spec.
Use only SpecDD sections such as Purpose, Must, Must not, Scenario, and Done when.
Keep it understandable to product, QA, and support.
Do not invent technical architecture.

Business notes:
  Trial signup should feel quick.
  The customer should not feel like they are applying for access.
  The error message for an existing email should be helpful, not technical.
  Sales should not need to approve normal trial signups.
  Support needs to see that the trial account exists after signup.

That prompt is not the final spec, and it does not need to be. It is raw material for a business-grade spec that captures the product experience before the technical details arrive. A developer can later turn “quick” into concrete performance expectations, loading states, or flow changes. QA can turn “helpful, not technical” into checks on copy and error behavior. An AI agent can use the spec to avoid generating a flow that is technically complete but wrong in tone.

That is why I think “vibe-spec” is a useful phrase, even though it sounds loose. Sometimes the first thing you know is the shape of the experience, not the implementation, and that is worth capturing before you tighten it later.

Specs do not necessarily need to be technical if you do not want them to be. Make them your own; it is fine.

Technical detail can arrive later

One of the best uses of AI in a SpecDD workflow is refinement. You can start with a plain-language description and ask an agent to turn it into a sharper spec without inventing details that were not there.

Turn this plain-language feature description into a SpecDD spec.
Keep the behavior understandable to product and QA.
Do not invent technical requirements unless they are clearly implied.

That last sentence matters. AI agents are very willing to be helpful in ways that look like progress but are actually assumption. They may add a payment provider, invent an admin permission model, or decide that the feature obviously needs a queue because that is a common pattern in other projects. Sometimes those additions are useful suggestions, but they should not quietly become requirements.

The refinement step should preserve intent first. Technical people can then add the details that belong to their part of the work: which files are owned, which system boundaries matter, which tests should exist, which dependencies are allowed, and which implementation choices are forbidden.

That division of labor is healthy. Non-technical contributors should not have to pretend to know the codebase before they are allowed to describe the product behavior, and developers should not have to guess product intent from a thin ticket and a few old comments. The spec gives both sides a shared surface to improve.

A prompt disappears, a spec stays

A prompt is useful for one interaction, while a spec is useful for the next interaction too. That difference matters more than it first appears. If you explain a feature to an AI agent in chat, the explanation may help that session produce better output. But unless the explanation becomes part of the project, the next session starts without it. The same is true for the next developer, the next QA pass, and the next version of the feature.

When the same intent is written into a local spec, it becomes reusable. The team can review it with the work, correct it when someone notices a bad assumption, update it when the product changes, and let a new agent read it later when nobody remembers the original conversation clearly.

For non-technical contributors, that is especially useful because it stops product decisions from disappearing into the background noise of delivery. The rule you care about becomes visible where implementation happens.

Where plain-language specs are strongest

Vibe-specing works especially well for behavior that users can see or feel. Signup flows are a good example, because the desired experience often matters as much as the data being collected. Billing rules are another, since the business meaning of an exception may be more important than the implementation detail. Notifications, emails, onboarding flows, permission rules, admin workflows, reports, dashboards, and customer-facing error states all benefit from people writing down what should happen before the system guesses.

Support and QA teams are particularly good sources for these specs because they know where users get stuck, which messages cause confusion, and which cases get missed because they are not the happy path. Product and operations teams often know the non-obvious business rule that turns a simple feature into a real one.

Those details are easy to lose when everything is compressed into a ticket title like “Improve trial signup.” A spec gives you room to say what “improve” actually means.

A simple way to start

You do not need a full process to write the first version. Start with a few plain sections and answer them as directly as you can.

Spec: [Feature name]

Purpose:
  What is this for?

Must:
  What must happen?

Must not:
  What must never happen?

Scenario: [example situation]
  Given a real situation this must handle
  When something happens
  Then describe the outcome that proves it worked.

Done when:
  How will we know this worked?

If you only fill in those sections, you already have something better than a vague prompt. The spec gives a developer or agent a target to discuss. It also gives you something to review before implementation starts.

From there, the workflow is simple. Write the rough spec, ask an agent or developer to refine it, review the refined version for meaning, and only then implement. If the refinement changes what you meant, correct it. If it adds technical detail you do not understand, ask why that detail belongs there. You are not being difficult by doing that. You are protecting the intent of the feature.

Review the meaning, not the syntax

When an AI agent or developer turns your rough spec into a more formal one, your job is not to audit every technical word. Your job is to check whether the meaning survived.

Does the feature still do what you intended? Does it avoid the customer experience you wanted to avoid? Did the agent add a rule that changes the product behavior? Did it remove an edge case because the edge case was inconvenient? Did it turn a soft preference into a hard requirement, or a hard requirement into something optional?

Those are the questions that need your judgment.

A refined spec can look more technical and still be wrong, and it can also look plain and be exactly right. The point is not to make the document impressive, but to make the desired behavior clear enough that implementation has less room to drift.

Collaboration gets better at exactly that point. Product can check intent, QA can add scenarios, support can add common failure cases, and developers can add boundaries and implementation constraints. The AI agent can help shape the text, but the team decides what the spec means.

What if I am the only member and I have no team?

SpecDD still helps a lot when the whole team is just you and an AI agent.

In fact, solo work is one of the places where the value shows up quickly, because there is nobody else carrying the memory of the product with you. If you explain the feature only in a prompt, that explanation helps one session and then mostly disappears. The next time you work on the same flow, you have to remember what you decided, why you decided it, which edge cases mattered, and what the agent should avoid doing. That is not really different from a team forgetting its own decisions, except the team is smaller and the forgetting is quieter.

A plain-language spec gives future-you a better starting point. It captures the product behavior, the things customers should never see, the cases you already thought through, and the line where the work should stop. It also gives the agent a stable contract to return to, so you do not have to rebuild the entire explanation every time you open a new chat or revisit the feature a month later.

If a team eventually appears, the benefit compounds. The first developer, QA person, support hire, or contractor does not have to reconstruct the product from your memory and a pile of old prompts. They can read the specs and see what the system was supposed to mean before they start changing it. That does not replace conversation, but it makes the conversation much better because the important intent is already on the table.

The first version is allowed to be rough

The fear I want to remove is the idea that you need permission to write a spec only after you become technical enough. You do not need that permission.

A rough spec that captures real intent is better than a polished ticket that hides the important behavior, and a plain example is better than a vague requirement. A note that says “do not mention billing internals to the customer” may save more implementation time than a long discussion about which component should render the message.

Developers can add technical structure, AI agents can help refine wording, and QA can turn scenarios into tests. What only you may know is what the feature is supposed to mean to the user, the customer, the operator, or the business.

SpecDD is useful because it lets that knowledge enter the development workflow without forcing it to become technical first. You can start with the experience, the rule, the exception, the thing customers keep asking for, or the thing you absolutely do not want the system to do.

So yes, you can vibe-spec. Write the thing down in the clearest language you have, make the spec your own, and then let the team and the agent tighten it until it is ready to build.

← All articles