Modern websites feel cold, transactional, and forgettable. Chatbots reset every session. Support costs keep rising. Brand identity gets stripped away the moment a user hits a generic bot.
Vindora fixes this. Drop in a single script tag and your site gets a persistent, personality-driven AI ambassador that knows your brand, remembers your users, and proactively engages — powered by any LLM you choose.
Point Vindora at any website using the hosted proxy:
https://vindora.ai/proxy?url=https://yoursite.com
Just replace https://yoursite.com with any URL and open it in your browser — Vindora will overlay on top of that site instantly, no installation needed.
What to expect:
- Vindora automatically scrapes and understands the page content — no setup required
- Navigates users to relevant sections of your site based on the conversation
- Auto-detects brand context and selects the matching avatar personality
- Use the direction arrows (top-right of the widget) to reposition it anywhere on the page
Demo notes:
- Best experienced fullscreen on a PC in a Chromium-based browser (Chrome, Edge)
- Works on any site that supports Google Translate
- This is a rough overlay — it works significantly better when integrated directly into a site
Vindora overlays a fully customizable AI chat widget on any webpage. On load it:
- Scrapes the current page — extracts metadata, links, and visible text content
- Selects a matching AI personality — from your brand's avatar library
- Initiates a context-aware conversation — the AI already knows what the user is looking at
- Persists across sessions — conversation history survives page refreshes and return visits
The result: an AI that speaks intelligently about your actual content without any manual training or content ingestion pipelines.
| 🌐 Live Page Scraping | Automatically reads the content of whatever page it's overlaid on — no manual content setup, no training pipeline |
| 🧭 Navigation Aware | Guides users to relevant pages and sections of your site mid-conversation, based on what they're asking |
| 🎭 Smart Avatar Selection | Automatically detects brand context from page content and chooses the right persona — no manual configuration per page |
| 🧠 Persistent Memory | Conversation history survives page refreshes and return visits — no day-one resets |
| 🔌 LLM-Agnostic | Plug in OpenAI, Anthropic, Azure, or any OpenAI-compatible endpoint |
| 🔔 Proactive Engagement | AI initiates conversation after user inactivity |
| 🗣️ Voice Input | Built-in speech-to-text on supported browsers |
| 🧩 Embeddable Anywhere | Overlay on any existing site — no framework requirements |
| 🎨 Themeable | Full CSS variable system, light/dark mode, brand colors |
- Node 22+
- An Azure OpenAI endpoint (or any OpenAI-compatible API)
git clone https://github.com/bffl-ai/vindora.git
cd vindora
npm installcp .env.local.example .env.localEdit .env.local:
VITE_API_BASE_URL=http://localhost:8000
AZURE_CHAT_ENDPOINT=https://your-resource.openai.azure.com/openai/deployments/your-model/chat/completions?api-version=2024-02-01
AZURE_API_KEY=your_key_here
PORT=8000# Frontend + backend together
npm run start-all
# Or separately
npm run frontend # Vite dev server
npm run backend # Express API serverOpen http://localhost:5173 and pass any site URL as a query param:
http://localhost:5173?targetUrl=https://yoursite.com
Edit src/_app/root/modelDataCustom.ts:
{
personality: {
name: 'Your Brand Name',
characteristics: ['professional', 'friendly'],
value: 'yourBrandKey',
},
theme: { color: 'mono', mode: 'light' },
inactivity_prompt: 'Suggest something helpful.',
prompt: 'You are a helpful assistant for Acme Corp...',
domain: 'https://yourdomain.com',
defaultModelOpen: true,
}Add the avatar video to src/assets/media/ and register it in constants.ts. Done.
Browser Widget (React + Vite)
│
│ POST /ai/ask_advanced
▼
Express API Server (Node + TypeScript)
│
├── Scrapes targetUrl (Cheerio + token-limited extraction)
├── Selects personality via LLM classifier
└── Streams response from Azure OpenAI / compatible endpoint
- Frontend: React 19, Tailwind CSS v4, Radix UI, Vite
- Backend: Express, Zod validation, Cheerio scraping, rate limiting
- State: React context + localStorage with debounced persistence
- Deploy: Heroku-ready (
Procfileincluded), Vercel-compatible
Hospitality — Concierge AI that knows the current page (booking, amenities, events) and guides guests by name across visits.
Real Estate — Property listing AI that answers questions about the specific listing the user is viewing.
Sports & Events — Fan engagement ambassador with team personality, merchandising, and loyalty journey awareness.
E-Commerce — Product page AI that upsells, answers spec questions, and recovers abandoned sessions proactively.
Professional Profiles — Founders and executives deploying a personal AI that speaks in their voice.
- Streaming responses (SSE)
- HEVC alpha video for Safari avatar support
- Server-side persona config endpoint
- SDK / npm embeddable package
- Webhook support for proactive outreach triggers
- Analytics dashboard
Vindora is source-available under the Vindora Non-Commercial License.
Free for: personal use, research, education, and non-commercial experimentation.
Requires a paid license for: SaaS hosting, internal business deployments, commercial integrations, and enterprise use.
Commercial licensing: vindora.ai · licensing@vindora.ai
Bringing humanity back to digital interactions.