Skip to main content
Back to Blog
how-toengineering

Intentional Underspecification

Jake Levirne
Jake Levirne
·3 min read

In AI-assisted development, we typically emphasize well-structured prompts with comprehensive context. Tools like SpecFlow exemplify this approach, enabling developers to provide rich contextual information. However, there are specific scenarios where intentionally underspecified prompts yield superior results through enabling AI experimentation and creative problem-solving.

Understanding Intentional vs. Unintentional Underspecification

The critical distinction lies in purposeful design. Intentional underspecification serves as a strategic tool for discovery, while unintentional vagueness leads to unpredictable or suboptimal outputs. This technique requires careful consideration of when precision is essential versus when exploration adds value.

Practical Applications for Underspecified Prompts

1. Data Model Design

  • Instead of: "Create a PostgreSQL schema with users, posts, and comments tables"
  • Try: "Design a data structure for a community discussion platform"
  • Benefit: AI may suggest alternative approaches like graph databases for relationship-heavy data or document stores for flexible content structures

2. UI/UX Design Exploration

  • Instead of: "Create a React form with email and password fields using Material-UI"
  • Try: "Design an onboarding experience for a meditation app"
  • Benefit: AI might propose progressive disclosure patterns, biometric authentication options, visual breathing exercises during loading, or gamification elements you hadn't considered

3. Sample Data Generation

  • Instead of: "Generate 10 user records with name, email, age, and registration date"
  • Try: "Create realistic sample data for a fitness tracking application"
  • Benefit: AI often includes relevant patterns you might overlook, like seasonal variations, user behavior clusters, edge cases

4. Architecture Decisions

  • Instead of: "Implement this as a REST API with PostgreSQL"
  • Try: "This system needs to handle real-time collaboration for distributed teams"
  • Benefit: Opens possibilities for WebSocket implementations, event-driven architectures, or hybrid approaches

5. Technology Stack Selection

  • Instead of: "Use React with Redux for state management"
  • Try: "Build an interactive dashboard for data visualization"
  • Benefit: May surface alternatives like Vue with Pinia or even specialized visualization frameworks

Implementation Strategy

  1. Identify Exploration Opportunities

    • Early-stage design decisions
    • Proof-of-concept development
    • Architecture evaluation phases
    • Creative problem-solving scenarios
  2. Run Parallel Experiments

    • Submit the same underspecified prompt multiple times
    • Collect diverse approaches
    • Request comparative analysis of the generated solutions
  3. Apply Constraints Post-Generation

    • After receiving initial suggestions, introduce your specific requirements
    • Ask the AI to evaluate options against your constraints
    • Iterate based on insights gained
  4. Engage in Clarifying Dialogue

    • After receiving an initial proposal, prompt the AI to ask clarifying questions
    • Example follow-up: "What questions would you need answered to determine if this approach or an alternative would work better for my specific context?"
    • This technique surfaces hidden assumptions and unconsidered constraints
    • The AI's questions often reveal critical factors you hadn't explicitly considered

Framework for Decision Making

Consider these questions when deciding specification level:

  • Is this a greenfield opportunity or constrained by existing systems?
  • Would alternative approaches provide significant value?
  • Are there established patterns that must be followed?
  • Is this exploratory work or production implementation?

Practical Example: Storage Solution Selection

Rather than specifying "implement SQLite for local storage," consider:

  1. Describe the context: "Small application, local deployment, structured data with relationships"
  2. Review AI suggestions: might propose SQLite, but also IndexedDB for browser-based apps, or embedded key-value stores
  3. Engage in dialogue: "What questions would help determine the best storage solution for this use case?"
  4. Evaluate trade-offs: request analysis of each option based on the clarified requirements
  5. Make informed decision: choose based on comprehensive understanding rather than initial assumptions

Key Takeaways

  • Underspecification is a tool, not a default approach
  • Use it deliberately during exploration and design phases
  • Leverage AI as a thought partner for discovering possibilities
  • Engage in iterative dialogue to uncover hidden requirements
  • Always validate suggestions against your specific requirements

This balanced approach to prompt engineering enables developers to harness AI's creative potential while maintaining control over critical decisions. The goal is not to abdicate responsibility but to expand the solution space before converging on optimal implementations. By treating AI as a collaborative partner that can both propose solutions and help refine requirements, we create a more robust decision-making process that combines human insight with machine exploration.

Newsletter

Get new posts in your inbox

Bring your team together to build better products. Fresh takes on remote collaboration and AI-driven development.