Skip to content

BFFL-AI/Vindora

Repository files navigation

Vindora.ai

AI Brand Ambassadors for Every Digital Touchpoint

License: Vindora NCL Node TypeScript PRs Welcome

Try It on Your Site · Commercial Licensing · Report a Bug


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.


Try It on Your Own Site

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

What It Does

Vindora overlays a fully customizable AI chat widget on any webpage. On load it:

  1. Scrapes the current page — extracts metadata, links, and visible text content
  2. Selects a matching AI personality — from your brand's avatar library
  3. Initiates a context-aware conversation — the AI already knows what the user is looking at
  4. 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.


Features

🌐 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

Getting Started

Prerequisites

  • Node 22+
  • An Azure OpenAI endpoint (or any OpenAI-compatible API)

Install

git clone https://github.com/bffl-ai/vindora.git
cd vindora
npm install

Configure

cp .env.local.example .env.local

Edit .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

Run

# Frontend + backend together
npm run start-all

# Or separately
npm run frontend   # Vite dev server
npm run backend    # Express API server

Open http://localhost:5173 and pass any site URL as a query param:

http://localhost:5173?targetUrl=https://yoursite.com

Adding Your Own AI Persona

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.


Architecture

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 (Procfile included), Vercel-compatible

Use Cases

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.


Roadmap

  • 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

License

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.

vindora.ai · bffl.ai

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages