From URL to a live agent in under 5 minutes.

ConvTag reads your website, builds an AI agent grounded in your own content, and embeds it on any page with one line of HTML. Here's exactly what happens.

From paste to live

Ship a working assistant in three steps.

Most teams go live before lunch — no engineering required.

101 · Under a minute

Point the crawler at your site

Sign up, paste a URL, and the crawler follows your sitemap and the obvious hub pages (about, pricing, FAQ, docs). Tick the ones you want indexed, and the jobs run in the background — they honour robots.txt, skip authenticated paths, and never wander into internal hosts.

  • Cloudflare Browser Rendering for JavaScript-heavy pages
  • Plain HTTP fetcher as a fast fallback
  • OAuth-backed Notion and Google Docs sources
202 · About half a minute

Your content goes into a vector index

Crawled pages are extracted with Readability, chunked along semantic boundaries (about 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 is tagged with workspace and agent so retrieval is strictly tenant-scoped.

  • Recursive splitter — paragraphs first, sentences as fallback
  • Two-stage retrieval: ANN recall, then a cross-encoder rerank
  • Workspace isolation enforced by a global query scope
303 · A short tuning pass

Shape the persona and the rules

Set the persona, tone, default language, theme colours, starter prompts, and the behaviour rules. Pin curated answers for the questions you want answered in your exact words (refunds, pricing caveats, disqualification rules). A live preview shows what the visitor will actually see.

  • Eight shipped widget languages (en, es, fr, de, pt, ja, ar, zh)
  • Behaviour rules: scroll depth, idle, exit intent, intent keyword
  • A/B test rule variants and read the conversion delta in the gap report
404 · One click

Snapshot, then publish

Hitting Publish writes the agent into an immutable version row. The widget runtime always reads the published version, so edits to a draft never leak to live visitors. Any prior version is one click away if you need to roll back.

  • Versioned per-publish history with timestamps
  • Strict allowed-origin enforcement on the widget init endpoint
  • One-click rollback to any prior snapshot
505 · Half a minute

Drop a single script tag

Paste a single <script> tag before </body>. The widget bundle is under 50 KB gzipped, loads asynchronously, and renders inside a Shadow DOM so it cannot fight your site's CSS. It works on any framework — WordPress, Shopify, Next.js, plain HTML, Webflow.

  • Shadow DOM isolation — no CSS bleed in either direction
  • Persistent visitor sessions across reloads
  • Optional voice input via the browser SpeechRecognition API
606 · Sub-second to the first character

A visitor asks, the agent answers

A visitor types a question. The hot path: curated short-circuit check, embed the query, vector search, rerank, assemble the prompt with sources tagged for prompt-injection defence, stream the LLM response back over SSE. No DB writes, no synchronous webhooks — persistence and analytics fire asynchronously after the stream finishes.

  • Hot-path budget: 1 second p95 to the first character
  • Inline citations [1] [2] that link back to your source pages
  • Per-agent confidence threshold — the agent declines before it guesses
707 · When the intent is real

Capture the lead, hand it to a human

Behaviour rules fire when a visitor signals real intent — asks about pricing, requests a demo, or reaches the third turn — and offer the inline lead form. Captured leads land in your inbox, fire a Slack alert, and POST to your webhook for HubSpot, Pipedrive, or Mailchimp. A human can take over mid-conversation without the visitor noticing the swap.

  • Realtime inbox over a Reverb WebSocket
  • One-click human takeover — visitor sees a "human is here" tag
  • Outgoing webhooks with HMAC-signed payloads for replay
Hot path contract

1 second to first token. Every time.

The visitor-message → first-token path has a hard p95 budget.

No DB writes, no synchronous webhooks, no retries. Persistence and analytics are dispatched async after the stream completes. OpenTelemetry spans wrap every phase, so when the budget breaks, the span heatmap points right at the offender.

P95 LATENCY BUDGET
/ hot path
Receive + auth
Phase 1
30 ms
Curated short-circuit
Phase 2
5 ms
Embed query
Phase 3
120 ms
Vector search
Phase 4
80 ms
Rerank
Phase 5
120 ms
Prompt assembly
Phase 6
10 ms
LLM time-to-first-token
Phase 7
500 ms
Total to first token
P95 BUDGET
~ 865 ms
Start now

Try it on your own site.

Free to start. No card required. Live in 5 minutes.