AI-Driven Virtual Shopping Assistant with Product Recommendation and Price Comparison,JavaScript

👤 Sharing: AI
```javascript
// Dummy Product Data (Replace with a real database or API)
const products = [
  { id: 1, name: "Running Shoes", category: "Shoes", price: 80, rating: 4.5, image: "running_shoes.jpg", description: "Comfortable running shoes for everyday training.", features: ["Breathable mesh", "Responsive cushioning"] },
  { id: 2, name: "Laptop Backpack", category: "Bags", price: 50, rating: 4.2, image: "laptop_backpack.jpg", description: "Durable backpack with laptop compartment.", features: ["Water-resistant", "Multiple compartments"] },
  { id: 3, name: "Wireless Headphones", category: "Electronics", price: 120, rating: 4.8, image: "wireless_headphones.jpg", description: "Noise-cancelling wireless headphones for immersive audio.", features: ["Bluetooth 5.0", "Long battery life"] },
  { id: 4, name: "Cotton T-Shirt", category: "Clothing", price: 25, rating: 4.0, image: "cotton_tshirt.jpg", description: "Classic cotton t-shirt, perfect for everyday wear.", features: ["Soft fabric", "Durable stitching"] },
  { id: 5, name: "Hiking Boots", category: "Shoes", price: 100, rating: 4.6, image: "hiking_boots.jpg", description: "Sturdy hiking boots for outdoor adventures.", features: ["Waterproof", "Ankle support"] },
  { id: 6, name: "Messenger Bag", category: "Bags", price: 65, rating: 4.3, image: "messenger_bag.jpg", description: "Stylish messenger bag for work or school.", features: ["Adjustable strap", "Multiple pockets"] },
  { id: 7, name: "Smartwatch", category: "Electronics", price: 150, rating: 4.7, image: "smartwatch.jpg", description: "Feature-rich smartwatch for fitness tracking and notifications.", features: ["Heart rate monitor", "GPS"] },
  { id: 8, name: "Denim Jeans", category: "Clothing", price: 40, rating: 4.1, image: "denim_jeans.jpg", description: "Classic denim jeans, a wardrobe staple.", features: ["Durable denim", "Comfortable fit"] },
  { id: 9, name: "Leather Wallet", category: "Accessories", price: 30, rating: 4.4, image: "leather_wallet.jpg", description: "Genuine leather wallet with multiple card slots.", features: ["RFID protection", "Slim design"] },
  { id: 10, name: "Sunglasses", category: "Accessories", price: 70, rating: 4.5, image: "sunglasses.jpg", description: "Stylish sunglasses with UV protection.", features: ["Polarized lenses", "Lightweight frame"] }
];


// Dummy Price Comparison Data (Replace with API integration)
const prices = {
  1: { "Store A": 80, "Store B": 85, "Store C": 78 }, // Running Shoes
  2: { "Store A": 52, "Store B": 48, "Store C": 55 }, // Laptop Backpack
  3: { "Store A": 125, "Store B": 118, "Store C": 122 }, // Wireless Headphones
  4: { "Store A": 25, "Store B": 27, "Store C": 23 }, // Cotton T-Shirt
  5: { "Store A": 105, "Store B": 98, "Store C": 102 }, // Hiking Boots
  6: { "Store A": 68, "Store B": 62, "Store C": 65 }, // Messenger Bag
  7: { "Store A": 155, "Store B": 148, "Store C": 152 }, // Smartwatch
  8: { "Store A": 42, "Store B": 38, "Store C": 45 }, // Denim Jeans
  9: { "Store A": 32, "Store B": 28, "Store C": 35 }, // Leather Wallet
  10: { "Store A": 75, "Store B": 68, "Store C": 72 }  // Sunglasses
};

// Function to perform a simple search
function searchProducts(query) {
  const searchTerm = query.toLowerCase();
  return products.filter(product =>
    product.name.toLowerCase().includes(searchTerm) ||
    product.category.toLowerCase().includes(searchTerm) ||
    product.description.toLowerCase().includes(searchTerm)
  );
}

// Function for basic product recommendations (based on category)
function recommendProducts(category) {
  return products.filter(product => product.category === category);
}

// Function to get the lowest price for a product
function getLowestPrice(productId) {
  if (!prices[productId]) {
    return "Price not available";
  }

  let lowestPrice = Infinity;
  let lowestPriceStore = null;

  for (const store in prices[productId]) {
    if (prices[productId][store] < lowestPrice) {
      lowestPrice = prices[productId][store];
      lowestPriceStore = store;
    }
  }

  return `Lowest price: $${lowestPrice} at ${lowestPriceStore}`;
}

// Function to display product details
function displayProductDetails(product) {
  console.log(`Product: ${product.name}`);
  console.log(`Category: ${product.category}`);
  console.log(`Price: $${product.price}`);
  console.log(`Rating: ${product.rating}`);
  console.log(`Description: ${product.description}`);
  console.log(`Features: ${product.features.join(", ")}`);
  console.log("---");
}


// Main function to simulate the virtual shopping assistant
function virtualShoppingAssistant() {
  console.log("Welcome to the AI-Powered Virtual Shopping Assistant!");

  // Simulate user input (replace with actual input from a UI or command line)
  const userInput = "shoes"; // Example: User is searching for "shoes"

  console.log(`User Input: ${userInput}`);

  const searchResults = searchProducts(userInput);

  if (searchResults.length > 0) {
    console.log("Search Results:");
    searchResults.forEach(product => displayProductDetails(product));

    // Example: Recommend products based on the first search result's category
    const recommendedProducts = recommendProducts(searchResults[0].category);
    console.log(`\nRecommended Products (based on category: ${searchResults[0].category}):`);
    recommendedProducts.forEach(product => displayProductDetails(product));

    // Example: Price comparison for the first search result
    const priceComparison = getLowestPrice(searchResults[0].id);
    console.log(`\nPrice Comparison for ${searchResults[0].name}:`);
    console.log(priceComparison);

  } else {
    console.log("No products found matching your search.");
  }
}

// Run the shopping assistant
virtualShoppingAssistant();


/*
Explanation:

1.  **Data:**
    *   `products`:  This is an array of JavaScript objects, each representing a product.  It includes properties like `id`, `name`, `category`, `price`, `rating`, `image`, `description`, and `features`.  **Important:**  In a real application, you would fetch this data from a database or an external API.  This is just dummy data for demonstration.
    *   `prices`: This is an object where keys are product IDs and values are objects representing prices from different stores. In a real system, this would also come from an API.

2.  **`searchProducts(query)` Function:**
    *   Takes a `query` (string) as input, representing the user's search term.
    *   Converts the `query` to lowercase for case-insensitive searching.
    *   Uses the `filter()` method to iterate through the `products` array and create a new array containing only the products that match the search criteria.
    *   A product is considered a match if its `name`, `category`, or `description` (all converted to lowercase) includes the `searchTerm`.
    *   Returns the filtered array of matching products.

3.  **`recommendProducts(category)` Function:**
    *   Takes a `category` (string) as input.
    *   Uses the `filter()` method to iterate through the `products` array and return a new array containing only products that belong to the specified `category`.
    *   This provides a very basic form of recommendation.  More sophisticated AI recommendations would involve analyzing user history, preferences, and product attributes using machine learning algorithms.

4.  **`getLowestPrice(productId)` Function:**
    *   Takes a `productId` as input.
    *   Checks if price data exists for the given product ID.  If not, it returns "Price not available".
    *   Iterates through the `prices[productId]` object (which represents prices from different stores).
    *   Keeps track of the lowest price found so far and the store offering that price.
    *   Returns a string indicating the lowest price and the store.

5.  **`displayProductDetails(product)` Function:**
    *   Takes a `product` object as input.
    *   Logs the product's details (name, category, price, rating, description, features) to the console in a formatted way.  In a real application, this would update the UI to display the product information.

6.  **`virtualShoppingAssistant()` Function:**
    *   This is the main function that simulates the shopping assistant's workflow.
    *   It first prints a welcome message.
    *   **Simulates User Input:**  It currently uses a hardcoded `userInput = "shoes"`.  In a real application, you would replace this with code that captures user input from a UI element (e.g., a search box) or from the command line.
    *   Calls `searchProducts()` to find products matching the user's input.
    *   **Handles Search Results:**
        *   If search results are found:
            *   It logs "Search Results:" to the console.
            *   It iterates through the `searchResults` array and calls `displayProductDetails()` to display each product's information.
            *   It calls `recommendProducts()` to get recommendations based on the category of the first search result.
            *   It logs "Recommended Products..." and displays the recommended products using `displayProductDetails()`.
            *   It calls `getLowestPrice()` to find the lowest price for the first search result and displays the price comparison information.
        *   If no search results are found, it logs "No products found..."
    *   This function coordinates the search, recommendation, and price comparison functionalities.

7.  **`virtualShoppingAssistant();`:**
    *   This line calls the `virtualShoppingAssistant()` function to start the simulation.

Key Improvements and Considerations for a Real Application:

*   **Database/API Integration:** Replace the dummy `products` and `prices` data with a connection to a real database (e.g., MongoDB, PostgreSQL) or an external API that provides product information and pricing.
*   **User Interface (UI):** Create a user interface (using HTML, CSS, and JavaScript frameworks like React, Angular, or Vue.js) to allow users to enter search queries, view product details, and interact with the shopping assistant.
*   **More Sophisticated Recommendations:** Implement more advanced recommendation algorithms.  Consider:
    *   **Collaborative Filtering:** Recommending products based on the purchase history and preferences of similar users.
    *   **Content-Based Filtering:** Recommending products based on the attributes of products the user has previously interacted with.
    *   **Machine Learning Models:** Train machine learning models to predict user preferences and recommend products accordingly.
*   **Natural Language Processing (NLP):** Integrate NLP libraries (e.g., spaCy, NLTK) to understand user input more accurately and handle more complex search queries (e.g., "show me comfortable running shoes under $100").
*   **Sentiment Analysis:** Analyze product reviews and user feedback to gauge the sentiment towards different products and use this information to improve recommendations.
*   **Real-time Price Updates:**  Integrate with price monitoring APIs to get real-time price updates from different retailers.
*   **User Accounts and Preferences:**  Implement user accounts to store user preferences, purchase history, and other relevant information.
*   **Scalability:** Design the application to be scalable to handle a large number of users and products.
*   **Error Handling:** Add comprehensive error handling to handle potential issues such as API errors, database connection problems, and invalid user input.
*   **Testing:** Write unit tests and integration tests to ensure the application is working correctly.
*   **Deployment:** Deploy the application to a web server or cloud platform.

This enhanced explanation provides a more comprehensive understanding of the code and highlights the key areas that would need to be addressed to create a fully functional AI-powered virtual shopping assistant. Remember to replace the dummy data and simulated user input with real-world data sources and UI elements for a practical implementation.
*/
```
👁️ Viewed: 5

Comments