Now in early access

The AI support assistant that lives on your website.

Bruno highlights the right element, explains it in chat, and - with the visitor's consent - clicks, fills forms, and navigates for them. One script tag. Knowledge comes from PDFs and text files you upload.

5 minutes to install One script tag SOC-friendly defaults
A web dashboard with a green Export button highlighted; a Bruno chat widget in the bottom-right is explaining where to click.

Built for product, support, and growth teams who answer the same question every day

Helpscout-style desks SaaS dashboards Docs portals Storefronts EdTech platforms
How it works

Three steps from "We need help docs" to "Bruno is helping".

Bruno is shipped as a tiny embeddable widget. You point it at your knowledge files and it does the rest.

A code-editor card with a single highlighted script tag flowing into a website tab where the Bruno chat widget appears in the bottom-right.

Drop in a script tag

Paste one line in your site's <head>. Bruno renders inside a Shadow DOM, so it cannot leak styles into your app.

PDF and TXT documents flowing into a stack of indexed knowledge layers next to the Bruno mascot.

Upload your knowledge

Drag in PDFs, runbooks, help-center exports, or plain text. Bruno chunks, embeds, and indexes them per-website. No retraining, no data leaving your tenant.

The Bruno mascot pointing at a highlighted Connect button on a webpage, with a chat panel showing the conversation.

Bruno helps your visitors

It highlights the right element, explains it, and - with consent - performs the next step. If it can't, it teaches the visitor how to do it themselves.

Install in 60 seconds

One script. Zero build step.

The widget loads asynchronously, isolates itself in a Shadow DOM, and respects your Content-Security-Policy. It works on any stack: Next.js, Rails, Webflow, Shopify, static HTML, you name it.

  • Zero impact on your bundle - widget code lives on Bruno's CDN.
  • Works on single-page apps; tracks pushState and hash routes.
  • Respects prefers-reduced-motion and dark mode.
  • Can be hidden on specific URLs via your dashboard.
Embed snippet
<!-- Add to your <head>. Replace YOUR_KEY with your embedKey. -->
<script
  src="https://app.bruno.support/v1/site/YOUR_KEY.js"
  async
  defer></script>
What it does

Hybrid help: explain, point, or do.

Most chatbots can only talk. Bruno talks, points, and does - and it asks before it does.

Highlight

Bruno draws a soft outline around the exact element a visitor is asking about, with a one-line teaching hint that follows the cursor.

Explain

Answers come from your uploaded PDFs and text, ranked by semantic similarity, then grounded against the live page the visitor is on.

Act, with consent

Bruno proposes an action ("Click 'Save' for you?"), shows a 3-second preview, and only proceeds if the visitor allows it.

Multi-page tasks

If completing a task means navigating to another page, Bruno carries the original request across the navigation and finishes the job on the new page.

Knowledge ingest

Drag PDFs, markdown, plain text, or runbooks. Bruno chunks, embeds, and re-indexes in the background. Re-uploads are deduped at the chunk level.

Per-site isolation

Each website is its own tenant: knowledge, conversations, billing, and AI prompts are all scoped, with row-level checks on every query.

Consent-first by design

Bruno asks before it does anything.

When Bruno wants to click, fill, or submit on the visitor's behalf, the chat shows an explicit consent card. The element gets a 3-second preview highlight first, and the visitor can say "No, I'll do it" at any point. Bruno will then guide them with a hint instead.

  • Cross-origin navigations are always declined automatically.
  • Password fields are explicitly off-limits.
  • "Allow all this session" is opt-in - never the default.
  • Every action is logged in your dashboard for audit.
I can fill the discount code SUMMER25 for you.
Bruno wants to fill in a field for you
Apply the discount code to your cart.
Value: SUMMER25
Outcomes

Less noise in support, fewer drop-offs in product.

Numbers are illustrative ranges from teams using Bruno's hybrid actions on top of their existing help center.

~40%
deflection on repetitive how-to tickets
3x
faster onboarding completion
5 min
to install and ingest your first PDF
Pricing

Simple monthly plans for every site size.

Start free, then scale from a single small site to a national brand. Each plan includes a set number of human agents for live chat handoff; top up usage when you need more.

Free
Try Bruno on a side-project.
$0 / month
  • 0 human agents (no live handoff)
  • 1 concurrent visitor
  • 1M AI tokens (lifetime demo)
  • 25 MB of knowledge
  • "Powered by Bruno" footer shown
Start free
Starter
For small business & local service sites.
$99 / month
  • 2 human agents (live handoff)
  • 25 concurrent visitors
  • 10M AI tokens / month
  • 100 MB of knowledge
  • Custom brand & accent color
Start Starter
Growth
For growing SaaS, ecommerce & B2B.
$599 / month
  • 10 human agents (live handoff)
  • 250 concurrent visitors
  • 100M AI tokens / month
  • 1 GB of knowledge
  • Custom brand & priority email support
Start Growth
Corporate
For large brands & high-traffic sites.
$9,999 / month
  • 100 human agents (live handoff)
  • 2,500 concurrent visitors
  • 2B AI tokens / month
  • 10 GB of knowledge
  • Per-website system prompt override
Start Corporate

Need more? Top up usage any time, or contact us for limits beyond Corporate.

FAQ

Frequently asked questions.

How long does it take to install Bruno?

Paste a single script tag in your site's <head>. Most teams are live in under five minutes. Knowledge ingestion (PDFs / text) runs in the background and is searchable within minutes of upload.

What knowledge does Bruno use to answer questions?

Bruno reads PDFs, markdown, and text files you upload in your dashboard, plus the live page the visitor is on (its title, headings, visible interactive elements, and same-origin links).

Bruno never trains models on your data. We use OpenRouter for inference and embeddings, and your content stays in your tenant.

Can Bruno click buttons and fill forms for visitors?

Yes - but only after the visitor explicitly consents to each action. Bruno shows a preview of the target element for three seconds before performing it. The visitor can always say "No, I'll do it" and Bruno will guide them with a hint instead.

Password fields are blocked. Cross-origin navigations are blocked.

Does Bruno work on single-page apps?

Yes. Bruno hooks into pushState, popstate, and hashchange, so the assistant always knows what page the visitor is on - including in React, Vue, Svelte, Solid, or vanilla SPAs.

How is billing structured?

A simple monthly subscription with a fixed allowance of AI tokens included. Need more? Top up your wallet any time and Bruno will keep helping. You can change or cancel any time from the dashboard. See Pricing for the breakdown.

What is an AI token? Why count tokens?

Tokens are the unit of work the language model consumes. Roughly, 1 token = ~4 characters of text. Both visitor messages and Bruno's replies count. We meter in tokens because they map directly to how much it costs us to run the model, so you only pay for what Bruno actually thinks about.

Where is data stored?

Uploaded knowledge files live in managed object storage. Conversations, messages, and embeddings live in our managed encrypted database, scoped per website. Everything is encrypted at rest and in transit. See our Privacy Policy and Subprocessors for the full list of vendors and regions.

Bruno helps your visitors. You ship the rest.

Start free. Add a script tag. Upload your help docs. We'll do the highlighting.