You have learned how to identify constraints and estimate costs by hand. Now let's talk about where AI fits into this process. AI assistants are surprisingly good at some parts of constraint identification and dangerously bad at others. Knowing the difference is a real skill.
What AI does well vs. what it does poorly
| AI does well | AI does poorly |
|---|---|
| Back-of-envelope calculations (RPS, storage, bandwidth) | Understanding your actual business context |
| Listing NFRs from a requirements document | Knowing your team's real constraints and skills |
| Comparing cloud service pricing across providers | Estimating actual user behavior patterns |
| Generating SLA tables and uptime calculations | Predicting growth accurately for your product |
| Spotting missing requirements you forgot to mention | Understanding organizational politics and priorities |
| Converting between units (DAU to RPS, storage to cost) | Knowing your existing infrastructure and tech debt |
The pattern is clear: AI is great at mechanical, knowledge-heavy tasks. It falls apart when context about your specific situation matters.
Prompt templates and example outputs
Prompt 1: Extract non-functional requirements
Given these requirements, identify all non-functional requirements
and constraints. Organize them by category (scale, latency,
availability, cost, security, compliance).
Requirements:
- Online food ordering platform for a mid-size city (500K population)
- Users can browse restaurants, place orders, track delivery
- Restaurants manage their menus and accept/reject orders
- Delivery drivers see available orders and navigate to addresses
- Payment processing via Stripe
- Launch in 3 months with a team of 4 developersWhat AI typically returns (and it is genuinely useful):
// AI-generated constraint analysis
const constraints = {
scale: {
estimatedDAU: "5,000-15,000 (1-3% of city population)",
peakRPS: "50-150 (lunch and dinner rushes)",
storageYear1: "~50 GB (menus, images, order history)",
concurrentUsers: "500-1,500 during peak hours"
},
latency: {
menuBrowsing: "< 200ms (users abandon slow food apps)",
orderPlacement: "< 1s (critical transaction)",
locationTracking: "< 3s update interval",
searchResults: "< 500ms"
},
availability: {
target: "99.9% (8.76 hours downtime/year)",
reasoning: "Downtime during meal hours directly loses revenue",
criticalPaths: ["order placement", "payment processing"]
},
security: {
pci: "Stripe handles PCI compliance, but secure token storage",
pii: "User addresses, phone numbers require encryption at rest",
gdpr: "If EU users possible, need data deletion capability"
},
teamConstraints: {
developers: 4,
timeline: "3 months",
implication: "Must use managed services, no time for custom infra"
}
};This is a solid starting point. The AI remembered PCI compliance, GDPRWhat is gdpr?A European regulation that gives users control over their personal data, including the right to access, delete, and export it. considerations, and estimated reasonable scale numbers for a mid-size city. You would have spent 30 minutes arriving at the same list.
Prompt 2: Infrastructure cost estimation
Estimate monthly infrastructure costs for:
- A food delivery platform
- 10,000 DAU, 100 RPS at peak
- Image-heavy (restaurant photos, menu items)
- Real-time location tracking for drivers
- Hosted on AWS, us-east-1
Break down by service and show your math.AI output you can expect:
Compute:
2x t3.medium (API servers) = 2 × $32 = $64
1x t3.small (background jobs) = 1 × CODE_BLOCK6 = CODE_BLOCK6
Database:
RDS PostgreSQL db.t3.medium = $65
ElastiCache Redis t3.micro = CODE_BLOCK3 (session + driver locations)
Storage:
S3: 200 GB images × $0.023 = $4.60
EBS: 3 × 30 GB × $0.10 = $9
Data Transfer:
Image serving: ~800 GB × $0.09 = $72
API responses: ~200 GB × $0.09 = CODE_BLOCK8
Other:
ALB load balancer = $22
CloudWatch + logs = CODE_BLOCK5
Route 53 DNS = $2
SSL certificate (ACM) = Free
TOTAL: ~$301/monthPrompt 3: Scale-driven architecture decisions
What scale-related architecture decisions should I make for a system
with 10,000 DAU? Specifically:
- Do I need a load balancer?
- Do I need caching (Redis/Memcached)?
- Do I need a CDN?
- Do I need read replicas for my database?
- Do I need message queues?
For each, answer yes/no and explain why at THIS scale.This prompt is powerful because it forces the AI to reason about your specific scale rather than defaulting to "yes, add everything." At 10K DAU, the honest answer is: you probably need a CDNWhat is cdn?Content Delivery Network - a network of servers around the world that caches your files and serves them from the location closest to the user, making pages load faster. for images, maybe a small Redis for sessions, but you definitely do not need read replicas or message queues yet.
What to verify: where AI gets it wrong
AI has predictable blind spots when identifying constraints. Watch out for these:
1. AI overestimates scale needs for startups.
If you tell AI you are building "a social network," it starts thinking in terms of millions of users. Your MVP has 200 users. Always anchor the AI with explicit numbers: "We expect 500 users in month one, growing to 5,000 by month six."
2. AI underestimates data transfer costs.
In the cost estimation above, the AI calculated $90 for data transfer. In practice, with images, APIWhat is api?A set of rules that lets one program talk to another, usually over the internet, by sending requests and getting responses. responses, logging to external services, and webhookWhat is webhook?An HTTP request that a service sends to your server when a specific event occurs, like a payment completing. Your server processes the event automatically. callbacks, you could easily hit $150-200. Multiply the AI's data transfer estimate by 1.5-2x.
3. AI does not know your team.
AI might suggest Kubernetes for orchestration because it is "the standard." But if your team of 3 has never touched Kubernetes, the learning curve alone adds 2 months to your timeline. Always filter AI suggestions through: "Can my team actually operate this?"
4. AI forgets operational costs.
The monthly bill is not just infrastructure. Factor in:
const realMonthlyCost = {
infrastructure: 301, // What AI estimated
monitoring: 30, // Datadog, Sentry, etc.
ciCd: 15, // GitHub Actions minutes
domainAndEmail: 15, // Domain, transactional email
thirdPartyAPIs: 50, // Maps, SMS, payment fees
developerTime: "priceless", // The biggest cost AI ignores
actualTotal: "~$411 + human time"
};5. AI defaults to AWS pricing.
Unless you specify otherwise, AI almost always quotes AWS. For startups, alternatives like Railway, Render, or Fly.io can be 50-70% cheaper at small scale. Always ask: "What would this cost on [specific platform] instead?"
The hybrid workflow
Here is the workflow that actually works in practice:
Step 1: AI generates the constraint list.
Feed your requirements document (or even rough notes) to AI. Ask it to identify every non-functional requirement, organized by category. This takes 30 seconds instead of 30 minutes.
Step 2: You validate against business reality.
Go through each constraint the AI identified and ask:
- Is this scale estimate realistic for our actual situation?
- Does my team have the skills to build and operate this?
- Does the budget allow for this level of availability?
- Is this compliance requirement actually relevant to us?
Cross out anything that does not match reality. Add anything the AI missed about your specific context (existing systems, organizational constraints, contractual obligations).
Step 3: AI does the cost math.
Take the validated constraint list and ask AI to estimate infrastructure costs. It is excellent at this mechanical work: looking up instance pricing, calculating storage costs, estimating bandwidthWhat is bandwidth?How much data can flow through a connection at once - like the number of lanes on a highway rather than the speed limit..
Step 4: You sanity-check the numbers.
Apply the correction factors: multiply data transfer by 1.5x, add 30% for operational overhead the AI forgot, and verify that the total fits your actual budget.
// The hybrid workflow in code
function identifyConstraints(requirements) {
// Step 1: AI generates first pass
const aiConstraints = askAI(
`Identify all NFRs and constraints for: ${requirements}`
);
// Step 2: Human validates
const validated = aiConstraints.filter(constraint =>
matchesBusinessReality(constraint) &&
teamCanHandle(constraint) &&
budgetAllows(constraint)
);
// Step 3: AI estimates costs
const costEstimate = askAI(
`Estimate monthly costs for: ${JSON.stringify(validated)}`
);
// Step 4: Human applies correction factors
return {
constraints: validated,
estimatedCost: costEstimate.total * 1.3, // 30% buffer
dataTransferCost: costEstimate.dataTransfer * 1.5
};
}This workflow gives you the speed of AI with the judgment of a human. The AI handles the parts it is good at (comprehensive listing, math, pricing lookups) while you handle the parts it cannot do (business context, team reality, budget pressure). Neither alone produces great results. Together, you get a constraint analysis in minutes that would take hours by hand and is grounded in your actual situation.