Natural-language AI v2 — multi-service estimates, conversational adjustments, clarification flow
The AI assistant now handles the way people actually ask about Azure costs. Instead of parsing a single service from a single sentence and redirecting you, it keeps you on the /ai page and shows a combined estimate across all detected services in one view.
Ask "App Service P2v3 Linux with 50 GB/day of Log Analytics" and you get both services calculated side by side with a total at the top, each collapsible to show its breakdown, and a direct link to the full calculator for each. The previous single-service flow is unchanged — if only one service is detected, you're still routed directly.
After your first estimate, the input switches to adjustment mode. Type "make it 100 GB/day" or "add 2 more App Service instances" and the previous parsed state is sent to a new /chat/adjust endpoint alongside your follow-up. The LLM applies the adjustment and returns the full updated state — total and per-service costs update in place. An adjustment history shows what you changed; a reset link wipes the session.
When a required field can't be determined (which tier? how many instances?), the assistant now asks rather than guessing. The question appears as an amber-bordered bubble with quick-reply chips — click an option or type a free-text answer. The "25% cost impact" rule applies: the assistant only clarifies when the wrong default would change the cost by more than 25%.
Security model unchanged: user text is still gated through the chat worker, never reaches the pricing API directly, injection rejection list extended with two new patterns targeting the adjustment flow. Service whitelist validation runs on every service in the multi-service array — a single unknown service name rejects the entire response.
Log Analytics and SQL Database added to the combined endpoint. All five existing services continue to work as before. New service slug whitelist covers all 23 calculators on the site.