Why Most Build Descriptions Fail
Most people describe what they want to build the way they would describe it to a friend: "I want a website where people can sign up and get access to my content." A friend would ask follow-up questions. Claude will attempt to build something reasonable based on that description and produce something that is technically functional but not quite what you had in mind.
The problem is ambiguity. "Sign up" could mean email only, email plus name, full account creation, or Stripe payment. "Access to my content" could mean a PDF download link, a private page, a member portal, or an email sequence. Every ambiguous element in your description produces a reasonable but potentially wrong assumption in the code.
The fix: eliminate ambiguity before asking Claude to write code. Use the input-process-output framework to describe exactly what should happen at each stage. Zero ambiguous elements = zero wrong assumptions = fewer rounds of correction.
The Input-Process-Output Framework
Input: What does the user do or provide? What fields are on the form? What does a button do? What triggers the app to do something? Be specific about every field name, every trigger, every user action.
Process: What happens to that input? Does it get stored in a database? Does it send an email? Does it call an external API? Does it generate something? Name the specific action and the specific tool or service involved.
Output: What does the user see when the process is complete? A thank-you page? A file download? A redirect to another page? An email in their inbox? An updated display? Describe the exact result.
Example: Vague vs Specific
Vague: "Build a lead magnet page where people can download my free guide."
Specific: "Build a landing page with two fields: first name and email address. When the user submits the form, store their information in a Replit database table called leads with columns first_name, email, and created_at. Then redirect them to /download where they see a button that opens this PDF link: [URL]. The page should have a headline, a three-bullet value prop, and the form."
The specific version builds correctly on the first attempt. The vague version requires three rounds of correction.