Epic 2: Requirement Proposal & Review
Status: Not Started
Priority: High
Epic Owner: AI/ML Team
Estimated Tasks: 8
Depends On: Epic 1 (Design Token Extraction)
Overview
Build an AI-powered system that analyzes screenshots and Figma frames to propose functional requirements (props, events, states, validation, accessibility) with confidence scores and human-in-the-loop approval before code generation.
Goals
- Infer component type from screenshot/Figma frame
- Propose functional requirements across all categories
- Generate confidence scores and rationales per requirement
- Build editable approval panel UI
- Export approved
requirements.json
- Feed requirements into retrieval and generation pipeline
- Target p50 latency ≤15s for proposal
Success Criteria
- ✅ Correctly identify component type (Button, Card, etc.) with 85%+ accuracy
- ✅ Propose requirements covering props, events, states, validation, a11y
- ✅ Confidence score (0-1) per requirement with rationale
- ✅ Editable approval panel allows accept/edit/remove
- ✅ Export
requirements.json with approved items only
- ✅ Requirements used by Pattern Retrieval (Epic 3) and Code Generation (Epic 4)
- ✅ Proposal completes in ≤15s (p50)
- ✅ Achieve ≥80% precision, ≥70% recall on labeled eval set
Tasks
Task 1: Component Type Inference
Acceptance Criteria:
Files: backend/src/agents/component_classifier.py
Task 2: Props Requirement Proposal
Acceptance Criteria:
Files: backend/src/agents/requirement_proposer.py
Example Output:
{
"id": "req-001",
"category": "props",
"name": "variant",
"values": ["primary", "secondary", "ghost"],
"confidence": 0.95,
"rationale": "3 distinct button styles with different backgrounds"
}
Task 3: Events Requirement Proposal
Acceptance Criteria:
Example Output:
{
"id": "req-002",
"category": "events",
"name": "onClick",
"required": true,
"confidence": 0.88,
"rationale": "Interactive element with cursor:pointer style"
}
Task 4: States/Variants Requirement Proposal
Acceptance Criteria:
Example Output:
{
"id": "req-003",
"category": "states",
"name": "hover",
"description": "Darkened background on hover",
"confidence": 0.82,
"rationale": "Secondary variant shows background-opacity-90 on hover layer"
}
Task 5: Validation & Accessibility Requirement Proposal
Acceptance Criteria:
Example Output:
{
"id": "req-004",
"category": "accessibility",
"name": "aria-label",
"required": false,
"confidence": 0.75,
"rationale": "Icon-only variant detected without visible text"
}
Task 6: Approval Panel UI
Acceptance Criteria:
Files: app/src/components/requirements/ApprovalPanel.tsx
UI Structure:
<ApprovalPanel>
<CategorySection title="Props" count={3}>
<RequirementCard
id="req-001"
name="variant"
values={["primary", "secondary"]}
confidence={0.95}
rationale="..."
onAccept={handleAccept}
onEdit={handleEdit}
onRemove={handleRemove}
/>
</CategorySection>
<CategorySection title="Events" count={2}>
{/* ... */}
</CategorySection>
</ApprovalPanel>
Task 7: Requirement Editing & Validation
Acceptance Criteria:
Files: app/src/components/requirements/RequirementEditor.tsx
Task 8: Requirements Export & Integration
Acceptance Criteria:
Files:
backend/src/services/requirement_exporter.py
app/src/lib/api/requirements.ts
Export Format:
{
"componentType": "Button",
"confidence": 0.92,
"requirements": [
{
"id": "req-001",
"category": "props",
"name": "variant",
"values": ["primary", "secondary", "ghost"],
"confidence": 0.95,
"rationale": "Multiple button styles detected",
"approved": true,
"edited": false
}
],
"metadata": {
"extractedAt": "2025-10-03T10:00:00Z",
"approvedAt": "2025-10-03T10:05:00Z",
"source": "figma"
}
}
Dependencies
Requires: Epic 1 (tokens as input for analysis)
Blocks: Epic 3 (requirements used in retrieval), Epic 4 (requirements used in generation)
Technical Architecture
Requirement Proposal Flow
Screenshot/Figma + Tokens
↓
Component Type Inference (GPT-4V + analysis)
↓
Requirement Proposal Agent (LangChain)
├─→ Props Analyzer
├─→ Events Analyzer
├─→ States Analyzer
└─→ A11y Analyzer
↓
Confidence Scoring (<0.8 flagged for review)
↓
Approval Panel UI (React)
↓
User Actions (Accept/Edit/Remove)
↓
Export requirements.json
↓
Feed to Retrieval & Generation
Metrics & Evaluation
| Metric |
Target |
Measurement |
| Precision |
≥80% |
True positives / (TP + FP) on eval set |
| Recall |
≥70% |
True positives / (TP + FN) on eval set |
| Latency |
p50 ≤15s |
LangSmith traces |
| User Edits |
<30% |
% of requirements edited before approval |
Eval Set: 20 labeled Button/Card examples with ground truth requirements
Risks & Mitigation
| Risk |
Mitigation |
| Low precision (false positives) |
Human review required, confidence thresholds |
| Missed requirements (low recall) |
Allow manual additions, improve prompts |
| Slow proposal (>15s) |
Parallelize analyzers, cache common patterns |
| Unclear rationales |
Improve prompt to cite specific visual cues |
Definition of Done
Related Epics
- Depends On: Epic 1
- Blocks: Epic 3, Epic 4
- Related: Epic 5 (a11y requirements validation)
Epic 2: Requirement Proposal & Review
Status: Not Started
Priority: High
Epic Owner: AI/ML Team
Estimated Tasks: 8
Depends On: Epic 1 (Design Token Extraction)
Overview
Build an AI-powered system that analyzes screenshots and Figma frames to propose functional requirements (props, events, states, validation, accessibility) with confidence scores and human-in-the-loop approval before code generation.
Goals
requirements.jsonSuccess Criteria
requirements.jsonwith approved items onlyTasks
Task 1: Component Type Inference
Acceptance Criteria:
Files:
backend/src/agents/component_classifier.pyTask 2: Props Requirement Proposal
Acceptance Criteria:
Files:
backend/src/agents/requirement_proposer.pyExample Output:
{ "id": "req-001", "category": "props", "name": "variant", "values": ["primary", "secondary", "ghost"], "confidence": 0.95, "rationale": "3 distinct button styles with different backgrounds" }Task 3: Events Requirement Proposal
Acceptance Criteria:
Example Output:
{ "id": "req-002", "category": "events", "name": "onClick", "required": true, "confidence": 0.88, "rationale": "Interactive element with cursor:pointer style" }Task 4: States/Variants Requirement Proposal
Acceptance Criteria:
Example Output:
{ "id": "req-003", "category": "states", "name": "hover", "description": "Darkened background on hover", "confidence": 0.82, "rationale": "Secondary variant shows background-opacity-90 on hover layer" }Task 5: Validation & Accessibility Requirement Proposal
Acceptance Criteria:
Example Output:
{ "id": "req-004", "category": "accessibility", "name": "aria-label", "required": false, "confidence": 0.75, "rationale": "Icon-only variant detected without visible text" }Task 6: Approval Panel UI
Acceptance Criteria:
Files:
app/src/components/requirements/ApprovalPanel.tsxUI Structure:
Task 7: Requirement Editing & Validation
Acceptance Criteria:
Files:
app/src/components/requirements/RequirementEditor.tsxTask 8: Requirements Export & Integration
Acceptance Criteria:
requirements.jsonFiles:
backend/src/services/requirement_exporter.pyapp/src/lib/api/requirements.tsExport Format:
{ "componentType": "Button", "confidence": 0.92, "requirements": [ { "id": "req-001", "category": "props", "name": "variant", "values": ["primary", "secondary", "ghost"], "confidence": 0.95, "rationale": "Multiple button styles detected", "approved": true, "edited": false } ], "metadata": { "extractedAt": "2025-10-03T10:00:00Z", "approvedAt": "2025-10-03T10:05:00Z", "source": "figma" } }Dependencies
Requires: Epic 1 (tokens as input for analysis)
Blocks: Epic 3 (requirements used in retrieval), Epic 4 (requirements used in generation)
Technical Architecture
Requirement Proposal Flow
Metrics & Evaluation
Eval Set: 20 labeled Button/Card examples with ground truth requirements
Risks & Mitigation
Definition of Done
Related Epics