How it works

From website to AI employee in three steps

From a website address to a working AI employee, with no developer and no data export.

01
Drop your URL< 1 minute

Sign up, paste your website URL, and we auto-discover your sitemap and key pages (about, pricing, FAQ, docs). Tick the ones you want indexed and we crawl them in the background — respecting robots.txt, blocking authenticated paths, never touching internal hosts.

  • Cloudflare Browser Rendering for JS-heavy sites
  • Plain HTTP fallback for simple sites
  • Notion + Google Docs sources via OAuth
02
We index your knowledge~30 seconds for most sites

Crawled pages are extracted (Readability), chunked along semantic boundaries (~500 tokens with overlap), embedded with Cloudflare bge-base-en-v1.5 or OpenAI text-embedding-3-small, and upserted into Vectorize or Qdrant — every chunk tagged with workspace + agent so retrieval is strictly tenant-scoped.

  • Recursive splitter — paragraphs first, sentences as fallback
  • Two-stage retrieval: ANN recall + cross-encoder rerank
  • Strict workspace isolation enforced by global query scope
03
Customize the agent5 minutes of fine-tuning

Set persona, tone, language, theme colors, starter prompts, and behavior rules. Add curated answers for pricing or refunds where you can't tolerate paraphrasing. A live preview shows visitors exactly what they'll see.

  • 8 widget languages (en, es, fr, de, pt, ja, ar, zh)
  • Behavior rules: scroll-depth, idle, exit-intent, intent-keyword
  • A/B test rule variants and watch conversion deltas
04
Publish a snapshotinstant

Hit Publish — we snapshot the agent into an immutable version row. The widget runtime always reads from the published version, so editing draft settings never affects live visitors. Roll back to any prior version with one click.

  • Versioned per-publish history
  • Strict allowed-origin enforcement on /v1/widget/init
  • One-click rollback to any prior snapshot
05
Embed one script tag30 seconds

Paste a single &lt;script&gt; tag before &lt;/body&gt;. The widget bundle is &le; 50KB gzipped, async, and renders inside a Shadow DOM so it can't conflict with your site's CSS. Works on any framework — WordPress, Shopify, Next.js, plain HTML.

  • Shadow DOM isolation — no CSS leaks
  • Persistent visitor sessions across reloads
  • Optional voice mic (browser SpeechRecognition)
06
Visitor asks, AI answers< 1 second to first token

A visitor types a question. Hot path: curated short-circuit check → embed query → vector search → rerank → assemble prompt with sources tagged for prompt-injection defense → stream LLM response back over SSE. No DB writes, no synchronous webhooks — persistence is async after the stream completes.

  • Hot-path 1s p95 TTFT contract enforced
  • Citations [1] [2] linking back to your sources
  • Confidence threshold per agent — agent says "I don't know" before guessing
07
Capture leads, jump in livewhen intent is high

Behavior rules detect when a visitor shows real intent (asks about pricing, asks for a demo, hits the third turn) and offer the inline lead form. Captured leads land in your inbox immediately, fire a Slack alert, and POST to your webhook for HubSpot / Pipedrive / Mailchimp.

  • Real-time inbox via Reverb WebSocket
  • One-click human takeover — visitor sees "Human is here"
  • Outgoing webhooks with HMAC-signed payloads

What "instant" actually costs

The budget every visitor message is held to, from request to first word on screen.

Receive + auth30 ms
Curated short-circuit5 ms
Embed query120 ms
Vector search80 ms
Rerank120 ms
Prompt assembly10 ms
LLM time-to-first-token500 ms