Description
We have a working e-commerce chatbot (Python, FastAPI, vector search) with a product recommendation/narrowing feature already built. The problem: it currently only works if the customer answers in the exact sequence the bot expects (category → brand → subcategory → price range, one at a time, in order). If the customer gives information out of order, mentions multiple things at once, changes their mind, or asks for something we don't carry, the bot breaks down or gives a poor response. We need this rewritten to genuinely understand free-form customer messages and respond helpfully no matter what order the information comes in. What "fixed" looks like, concretely: Extract multiple pieces of information from a single message (e.g. "a Garmin watch for my dad" should capture brand + category + context together, not force the customer through separate questions for each). If a requested brand or category doesn't exist in our catalog, say so immediately and offer real alternatives that actually exist — never force the conversation toward something we don't sell, and never invent categories/brands that aren't in the data. Handle a customer changing their mind mid-conversation (e.g. switching from a smartwatch to a laptop) without getting stuck. Handle a customer rejecting every option offered and pivoting to asking by use-case instead (e.g. "I don't want any of those brands, what's good for fitness tracking?"). Every option the bot presents (brands, categories, subcategories) must c