Configure AI features

What AI does for feedback (summaries and duplicate detection) and how to point a self-hosted install at any OpenAI-compatible or local model endpoint.

JM
James Morton
Written By James MortonLast updated 8 days ago

Quackback uses language models and vector embeddings to summarize feedback and find duplicates. This article explains what each feature does and how to set up the AI endpoint on a self-hosted install.

Note: This article covers AI for feedback. For Quackback AI (the AI agent and Copilot) and workflows, see the AI & Automation overview.

Quackback Cloud

On Cloud there is nothing to configure: AI runs on a model Quackback provides. The Free plan includes Basic AI usage for Copilot drafts. From the Pro plan, every AI feature is included, including the AI agent, with more usage on higher plans. Cloud meters AI usage, which resets each month. See AI usage on Cloud.

What AI does for feedback

Feature

What it does

Post summaries

Summarizes the comments on a post

Duplicate detection

Finds existing posts that match new feedback, using vector similarity, full-text search and a model check

Embeddings

Vector representations of posts and help center articles, used for similarity and semantic search

Post summaries

Posts with comments show an AI summary on the post detail page:

  • Overview: one to three sentences on the core user need
  • Key quotes: notable comments from users (not team replies)
  • Next steps: suggested actions such as "Investigate..." or "Respond to..."

Summaries refresh automatically in the background when new comments arrive. The summary card shows when it was last updated.

Duplicate detection

When feedback arrives, Quackback looks for existing posts on the same topic in three stages:

  1. Vector similarity: compares the new content with existing post embeddings.
  2. Full-text search: catches keyword matches that embeddings might miss.
  3. Model check: asks the model to confirm each candidate pair and filter out false matches.

Strong matches appear as merge suggestions. You also see similar posts in the Merge section of any post. Choosing one opens a confirmation dialog before anything is merged. See Review AI duplicate suggestions.

Configure AI (self-hosted)

Note: Self-hosted only. Cloud workspaces skip this section.

All AI features are off until you set an endpoint and models. Without them, AI features stay inactive and their buttons don't appear.

Set four environment variables: an API key, an endpoint, and a model for each of the two roles.

OPENAI_API_KEY="sk-..."
OPENAI_BASE_URL="https://api.openai.com/v1"
AI_CHAT_MODEL="gpt-4o-mini"
AI_EMBEDDING_MODEL="text-embedding-3-small"

Quackback works with any OpenAI-compatible endpoint and never assumes one. Point OPENAI_BASE_URL at a model provider, a gateway such as OpenRouter or Cloudflare AI Gateway, or a model server you run yourself. Use model ids your endpoint accepts. Gateways usually want provider-prefixed ids such as google/gemini-3.1-flash-lite-preview.

  • AI_CHAT_MODEL powers summaries, duplicate checks, the AI agent and Copilot, and help center answers.
  • AI_EMBEDDING_MODEL powers duplicate detection and help center semantic search. It must produce 1536-dimensional vectors (for example text-embedding-3-small).

Add the variables to your environment and restart Quackback. If the configuration is incomplete (for example, a key without an endpoint), AI stays off and a warning is logged at startup.

Warning: Upgrading from a version before 0.12.0? OPENAI_API_KEY alone no longer turns AI on. Add OPENAI_BASE_URL and both model variables.

Local model servers

Local and self-run model servers work if they expose an OpenAI-compatible API. Set OPENAI_BASE_URL to the server's /v1 address and use its model names. OPENAI_API_KEY must still be set: use any non-empty value if your server doesn't check keys. Your embedding model must return 1536-dimensional vectors.

Per-feature models

Give one feature its own model, or switch one feature off while keeping the rest:

AI_SUMMARY_MODEL="off"     # turn off post summaries only
AI_MERGE_MODEL="gpt-4o"    # use a stronger model for duplicate checks

Feature overrides: AI_SUMMARY_MODEL, AI_SENTIMENT_MODEL, AI_EXTRACTION_MODEL, AI_QUALITY_GATE_MODEL, AI_INTERPRETATION_MODEL, AI_MERGE_MODEL, AI_HELP_CENTER_MODEL, AI_HELP_CENTER_TRANSLATE_MODEL, AI_ASSISTANT_MODEL (the AI agent and Copilot), AI_INBOX_TRANSLATION_MODEL, and AI_CLASSIFICATION_MODEL. Each falls back to AI_CHAT_MODEL when unset. A value of off, none or false turns off just that feature.

Backfill embeddings

Posts created before AI was turned on have no embeddings. From a source install, generate them with:

bun run ai:backfill

The command skips posts that already have embeddings, so it is safe to run more than once. It makes one model call per post, so a large workspace can take several minutes and use API credit.

Where your data goes

On a self-hosted install, every AI request goes to the endpoint you set in OPENAI_BASE_URL, and nowhere else. Quackback never sends data to an endpoint you didn't configure. For the feedback features it sends:

  • Post titles and descriptions, for embeddings and duplicate detection
  • Comment text from users (not team replies), for summaries
  • Candidate post pairs, for the duplicate check

Warning: If you have data residency requirements, choose an endpoint or proxy that meets them, and review your model provider's data retention policy before turning AI on.

To turn AI off entirely, see FAQ: Turn AI features off.

Was this helpful?

Your feedback shapes what we write next.