REM ============================================================================ REM Pricing Tool with Knowledge Base and Website Integration REM ============================================================================ REM This example demonstrates: REM 1. Product pricing lookup from CSV database REM 2. Integration with product brochures KB REM 3. Dynamic website content indexing REM 4. Multi-source knowledge retrieval REM ============================================================================ REM Define tool parameters PARAM product AS string LIKE "fax" DESCRIPTION "Required name of the product you want to inquire about." REM Tool description DESCRIPTION "Whenever someone asks for a price, call this tool and return the price of the specified product name. Also provides access to product documentation and specifications." REM ============================================================================ REM Validate Input REM ============================================================================ IF product = "" THEN TALK "Please specify which product you would like to know the price for." EXIT END IF REM Normalize product name (lowercase for case-insensitive search) product_normalized = LOWER(TRIM(product)) PRINT "Looking up pricing for product: " + product_normalized REM ============================================================================ REM Search Product Database REM ============================================================================ price = -1 stock_status = "unknown" product_category = "" product_description = "" REM Search in products CSV file productRecord = FIND "products.csv", "LOWER(name) = '" + product_normalized + "'" IF productRecord THEN price = productRecord.price stock_status = productRecord.stock_status product_category = productRecord.category product_description = productRecord.description PRINT "Product found in database:" PRINT " Name: " + productRecord.name PRINT " Price: $" + STR(price) PRINT " Stock: " + stock_status PRINT " Category: " + product_category ELSE REM Product not found in database PRINT "Product not found in local database: " + product TALK "I couldn't find the product '" + product + "' in our catalog. Please check the spelling or ask about a different product." REM Still activate KB in case user wants to browse catalog ADD_KB "productbrochurespdfsanddocs" RETURN -1 END IF REM ============================================================================ REM Add Product Documentation Knowledge Base REM ============================================================================ REM The .gbkb/productbrochurespdfsanddocs folder should contain: REM - product_catalog.pdf REM - technical_specifications.pdf REM - user_manuals.pdf REM - warranty_information.pdf REM - comparison_charts.pdf REM ============================================================================ ADD_KB "productbrochurespdfsanddocs" REM ============================================================================ REM Add Product Website for Real-time Information REM ============================================================================ REM This indexes the product's official page with: REM - Latest specifications REM - Customer reviews REM - Installation guides REM - Troubleshooting tips REM ============================================================================ product_url = "https://example.com/products/" + product_normalized REM Try to add website (will only work if URL is accessible) REM ADD_WEBSITE product_url REM Alternative: Add general product documentation page ADD_WEBSITE "https://example.com/docs/products" PRINT "Knowledge base activated for: " + product REM ============================================================================ REM Build Response Message REM ============================================================================ response_message = "**Product Information: " + productRecord.name + "**\n\n" response_message = response_message + "šŸ’° **Price:** $" + STR(price) + "\n" response_message = response_message + "šŸ“¦ **Availability:** " + stock_status + "\n" response_message = response_message + "šŸ“‚ **Category:** " + product_category + "\n\n" IF product_description <> "" THEN response_message = response_message + "šŸ“ **Description:**\n" + product_description + "\n\n" END IF REM Add stock availability message IF stock_status = "in_stock" THEN response_message = response_message + "āœ… This product is currently in stock and ready to ship!\n\n" ELSE IF stock_status = "low_stock" THEN response_message = response_message + "āš ļø Limited availability - only a few units left in stock.\n\n" ELSE IF stock_status = "out_of_stock" THEN response_message = response_message + "āŒ Currently out of stock. Expected restock date: contact sales.\n\n" ELSE IF stock_status = "pre_order" THEN response_message = response_message + "šŸ”œ Available for pre-order. Ships when available.\n\n" END IF REM Inform about available knowledge response_message = response_message + "šŸ“š **Need More Information?**\n" response_message = response_message + "I now have access to our complete product documentation. You can ask me:\n\n" response_message = response_message + "• What are the technical specifications?\n" response_message = response_message + "• How does it compare to other products?\n" response_message = response_message + "• What's included in the warranty?\n" response_message = response_message + "• Are there any setup instructions?\n" response_message = response_message + "• What do customers say about this product?\n" TALK response_message REM ============================================================================ REM Store Product Context in Bot Memory REM ============================================================================ SET BOT MEMORY "last_product_inquiry", product_normalized SET BOT MEMORY "last_product_price", STR(price) SET BOT MEMORY "last_product_category", product_category SET BOT MEMORY "inquiry_timestamp", NOW() REM ============================================================================ REM Set User Context for Personalized Follow-up REM ============================================================================ SET CONTEXT "current_product", product_normalized SET CONTEXT "current_price", STR(price) SET CONTEXT "browsing_category", product_category REM ============================================================================ REM Log Inquiry for Analytics REM ============================================================================ inquiry_id = UUID() inquiry_date = NOW() user_session = SESSION_ID() SAVE "product_inquiries.csv", inquiry_id, user_session, product_normalized, price, inquiry_date PRINT "Inquiry logged: " + inquiry_id REM ============================================================================ REM Check for Related Products REM ============================================================================ IF product_category <> "" THEN PRINT "Searching for related products in category: " + product_category related_products = FIND ALL "products.csv", "category = '" + product_category + "' AND LOWER(name) <> '" + product_normalized + "'" IF related_products <> NULL AND LEN(related_products) > 0 THEN related_message = "\n\n**Related Products You Might Like:**\n\n" counter = 0 FOR EACH related IN related_products IF counter < 3 THEN related_message = related_message + "• " + related.name + " - $" + STR(related.price) IF related.stock_status = "in_stock" THEN related_message = related_message + " āœ…" END IF related_message = related_message + "\n" counter = counter + 1 END IF NEXT TALK related_message END IF END IF REM ============================================================================ REM Optional: Check for Promotions REM ============================================================================ promotion = FIND "promotions.csv", "LOWER(product_name) = '" + product_normalized + "' AND active = true" IF promotion THEN promo_message = "\n\nšŸŽ‰ **Special Offer!**\n" promo_message = promo_message + promotion.description + "\n" promo_message = promo_message + "Discount: " + promotion.discount_percentage + "%\n" promo_message = promo_message + "Valid until: " + promotion.end_date + "\n" discounted_price = price * (1 - (promotion.discount_percentage / 100)) promo_message = promo_message + "\n**Discounted Price: $" + STR(discounted_price) + "**" TALK promo_message SET BOT MEMORY "active_promotion", promotion.code END IF REM ============================================================================ REM Return the price for programmatic use REM ============================================================================ RETURN price