BACK TO DIRECTORY

Curio AI Chat

by TechNerdXp

0.0
(0 ratings)

Most AI chat plugins have the same problem, and it is not a small one: given a question they cannot answer, they answer anyway. Ask one what a wedding shoot costs and it will produce a confident, plausible, completely invented figure — and a customer will believe it, because it is on your website in your brand colours.

Curio will not do that. It answers only from a knowledge base you control. When a question is not covered, it says so plainly and hands the visitor to you. That is not a setting you can accidentally turn off; it is how the plugin is built.

How it actually works

  1. A visitor asks a question.
  2. Your site — not the AI — searches your knowledge base for passages that match it.
  3. If nothing matches, no request is sent to the AI at all. The decline is written by the plugin. There is no model in the loop to be creative with.
  4. If something does match, those passages and only those passages are sent to your chosen AI, along with instructions it cannot edit away: never estimate a price, a date, availability, a turnaround time, a phone number or an email address; if it is not in the passages, you do not have it.
  5. The answer comes back with a link to the page it came from, so the visitor can check it.

What happens when it says no

A grounded assistant declines more often than a guessing one. That is the trade, and it makes the moment straight after a decline the most valuable screen in the widget — so the plugin treats it as a feature rather than a failure.

  • A hand-off line in the assistant’s own words: your email, your phone number, whatever you want said.
  • A button beside it. Point it at your contact page, an email address, a help desk or a booking link, and it appears the first time the assistant cannot answer. A sentence is easy to read past; a button is one press, and it is in front of the customer at the exact moment they are deciding whether to bother.
  • Every decline is logged as a question your site does not answer yet, with an “Answer this” button on the Insights tab.

And it does not decline the easy one: somebody who opens with “hello” gets your greeting back, not “I do not have that detail”, and it costs no API call to do it.

Where its knowledge comes from

  • Your existing content. Tick which post types it may read — pages, posts, any custom post type — and it indexes them, splitting each one into passages so a question can be matched against a paragraph rather than a whole page. Edits are picked up the moment you save.
  • Your WooCommerce products. Descriptions, price, SKU, stock status, categories. Prices are written out as sentences the assistant can quote, and refresh whenever a product changes.
  • Answers you write. The things that are not on your site anywhere: what you charge, your opening hours, your cancellation policy, how long delivery takes. Type them in, or paste a JSON array to load an FAQ export in one go.

Bring your own AI

Choose Anthropic (Claude), OpenAI (ChatGPT) or Google Gemini, paste your own API key, and pay the provider directly. Nothing is resold, nothing routes through the developer, and there is no subscription to this plugin.

The model dropdown is filled from your provider’s live API, so it never offers you a model that has been retired — press “Refresh model list” and it asks your key what it can actually reach.

Demo mode, so you can try before you spend

The plugin ships in demo mode. It answers from your knowledge base with no API key, no API call and no cost, and it declines in exactly the places the real thing will decline. It is an honest rehearsal, not a scripted one — and there is no sample data, so on a fresh install it correctly knows nothing at all.

It looks like your site, not like a plugin

Colour scheme (light, dark, follow the visitor’s system setting, or fully custom), accent colour with a live contrast check against WCAG AA, corner style, three sizes, either bottom corner, launcher as an icon or a labelled pill, your own avatar, your theme’s font, and a custom CSS box for anything else. If you use a block theme, one click reads the palette straight out of it.

Everything is emitted as CSS variables scoped to the widget, so a skin can never leak into your theme.

Built so it cannot run up a bill

The chat endpoint is public and sits in front of a metered API, which without limits is an unbounded charge on your card. So:

  • A per-visitor rate limit, on by default.
  • A monthly ceiling on total API calls, which you set.
  • Repeat questions answered from cache, free, and cleared automatically the moment your knowledge or settings change.
  • A hard cap on question length.
  • Token counts reported by the provider itself, shown per month, so you always know what you are spending.

The screen that makes it better every week

Because the assistant declines what it has not been told, every decline is a real customer asking something your site does not answer yet. The Insights tab lists those questions, grouped and counted, with an “Answer this” button beside each one. Work down the list and the assistant improves without anyone tuning a model.

Privacy, taken seriously

  • No IP addresses are ever stored, for anyone. Rate limiting uses a salted hash.
  • No cookies. The conversation is held in the browser tab’s own session storage so it survives a reload, never reaches the server, and is discarded when the tab closes.
  • Conversation logging is off by default, with automatic retention enforced by a scheduled task rather than by you remembering.
  • Wired into WordPress’s own privacy tools: data export and erasure requests for registered users are handled automatically, and suggested privacy-policy text is offered to your policy page.
  • No analytics, no tracking, no phone-home. The plugin sends nothing to its developer, ever.

Manageable from the command line

Everything the settings screen does is available through WP-CLI, because the
deployments that matter are the unattended ones — a provisioning script, a
staging refresh, a client site being set up for the fifth time:

wp curio status · `wp curio import faq.json` · `wp curio reindex` · `wp curio set business_name "..."` · `wp curio key anthropic --test` · `wp curio ask "do you deliver on Saturdays?"`

wp curio ask puts a question through exactly the path a visitor's would take

and tells you whether the answer was grounded or declined — the quickest way to
confirm a deployment works, and the only quick way to confirm it still refuses
what it should.

It keeps its place

Reload the page, follow a link and come back, get bounced through a payment gateway — the conversation is still there, still open, still scrolled where you left it. It is held in the browser tab and nowhere else, so it costs no database rows, needs no cookie banner and is gone when the tab closes. There is a “clear this conversation” button in the chat header for anyone who would rather start again.

Also

  • No jQuery on the front end. One stylesheet and one deferred script, loaded only on pages the widget appears on.
  • Keyboard accessible, screen-reader labelled, respects prefers-reduced-motion, works in Windows high-contrast mode.
  • Full-screen on phones, the way every chat product people already use behaves.
  • Translation ready.
  • Ten filters for developers, including one to add your own AI provider without forking anything.

External services

This plugin can send data to a third-party AI provider in order to generate replies. No data is sent anywhere until you save an API key and select that provider — in demo mode there is no outbound request of any kind, and only one provider is ever contacted: the one you selected.

What is sent, in every case: the visitor’s message, the recent turns of that same conversation, and the knowledge passages your site retrieved for that question. What is never sent: IP addresses, visitor identities, email addresses, WordPress credentials, or any information about your site beyond the content you chose to index.

Requests are made when a visitor sends a chat message, when you press “Test” on the Connection tab, and when you press “Refresh model list”.

Anthropic (Claude)

Used when Anthropic is the selected provider. Requests go to api.anthropic.com.

  • Terms of service: https://www.anthropic.com/legal/commercial-terms
  • Privacy policy: https://www.anthropic.com/legal/privacy

OpenAI (ChatGPT)

Used when OpenAI is the selected provider. Requests go to api.openai.com.

  • Terms of service: https://openai.com/policies/business-terms/
  • Privacy policy: https://openai.com/policies/privacy-policy/

Google Gemini

Used when Google Gemini is the selected provider. Requests go to generativelanguage.googleapis.com.

  • Terms of service: https://ai.google.dev/gemini-api/terms
  • Privacy policy: https://policies.google.com/privacy

You are responsible for your own account with whichever provider you choose, and for telling your visitors that a chat message is processed by a third party. The plugin offers suggested wording for your privacy policy under Settings Privacy Privacy Policy Guide.

Screenshots

Answering from indexed site content, with a link to the page the answer came from.

Answering from indexed site content, with a link to the page the answer came from.

Both layers of the guarantee in one exchange: the first decline is written by the plugin because nothing matched, with no AI request made at all; the second comes from the model, which is instructed never to estimate a figure it has not been given. Then it offers a person.

Both layers of the guarantee in one exchange: the first decline is written by the plugin because nothing matched, with no AI request made at all; the second comes from the model, which is instructed never to estimate a figure it has not been given. Then it offers a person.

The same widget re-skinned: dark scheme, custom accent, rounded corners. Every skin is CSS variables scoped to the widget, so nothing can leak into your theme.

The same widget re-skinned: dark scheme, custom accent, rounded corners. Every skin is CSS variables scoped to the widget, so nothing can leak into your theme.

Plugin Details

Active Installs
0
Total Downloads
0
Version
1.0.0
Requires WP
6.5
Requires PHP
7.4
Tested Up To
7.1
Added
2026-09-17
Last Updated
2026-09-17 4:18pm GMT

Ratings

5
0
4
0
3
0
2
0
1
0