Technical Documentation

SavvyMenu AI

The AI-First Menu Assistant. We ingest static PDF menus and turn them into intelligent, queryable knowledge bases using a Hybrid RAG approach.

Hybrid RAG

We combine Structured SQL (for opening hours, locations) with Vector Embeddings (for menu items, ingredients) to ensure zero-hallucination answers.

Dual-Model Engine

Powered by Groq. We use Llama 3.3 70B for complex reasoning and Llama 3.1 8B for fast re-ranking and query expansion.

How It Works

Before you embed the widget, your data goes through our ingestion pipeline.

1

PDF Ingestion

Celery workers process external PDF URLs, extracting text and spatial layout.

2

Vectorization

Chunks are embedded using OpenAI/Cohere models and stored in ChromaDB.

3

Hybrid Query

The widget queries our FastAPI backend, which retrieves and synthesizes the answer.

Widget Integration

Paste this snippet into the <head> of your website.

PrerequisiteYou need a configured workspace. Go to Dashboard > Settings to copy your unique Publishable Client Key.
index.html
<script src="https://cdn.savvymenu.ai/widget.js"
  data-id="YOUR_API_KEY"></script>

Platform Guides

Detailed instructions for common CMS platforms.

WordPress

Use the Insert Headers and Footers plugin to paste the script into the footer.

Squarespace

Navigate to Settings > Advanced > Code Injection and paste in the Footer field.

Wix

Go to Settings > Custom Code. Add code to Body - End.

Webflow

Open Project Settings > Custom Code and add to the Footer Code section.

Advanced Customization

Control the widget's appearance by creating a global configuration object.

config.js
window.SavvyMenuConfig = {
  brand_color: "#6366f1", // Override Dashboard Color
  position: "bottom-left", // or "bottom-right" (default)
  welcome_message: "Hungry? Ask me about our menu!"
};

Smart Actions Protocol

How our AI triggers client-side interactivity using a hidden JSON protocol.

When the AI wants to suggest an action (like showing a menu or booking a table), it appends a hidden JSON block to its response:

|||JSON:{"type":"suggestion", "buttons":[{"label":"Book Table","action":"book","value":"https://..."}]}|||
Client-parsedInvisible to User

Deep Configuration

Managing complex store logic and personalities.

Weekly Schedule Logic

We implement a Fact Precedence rule. If your Chatbot Context (PDF Menu) says you are open on Sundays, but you toggle "Closed" in the Dashboard Settings, the Settings override the PDF.

Voice & Tone

Use the Playground to test different personalities (Friendly, Formal, Energetic). This sets the system_tone parameter which instructs the LLM on style without affecting facts.

Pro Features & Limits

  • Branding Removal

    Free Tier widgets display a "Powered by SavvyMenu AI" footer. Upgrading to Pro or Business automatically removes this footer from your widget (no code change required).

  • Daily Limits

    Limits (20/day for Free, 2,000/day for Pro) reset automatically at 00:00 UTC. The dashboard shows your real-time usage for the current day.