Configure AI features
What AI does for feedback (summaries, duplicate detection, suggestions) and how to point a self-hosted install at any OpenAI-compatible or local model endpoint.
Quackback uses language models and vector embeddings to summarize feedback, find duplicates, and turn incoming feedback into suggestions. 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 Quinn (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 AI features and Quinn are included from the Pro plan, and the Free plan has no AI features. Cloud meters Quinn usage and lets you buy $10 top-up packs. See Quinn usage and top-ups.
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 |
AI suggestions | Turns feedback from integrations such as Slack into suggestions: merge posts, vote on a post, or create a post |
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. A Stale badge shows next to the timestamp until the refresh finishes.
Duplicate detection
When feedback arrives, Quackback looks for existing posts on the same topic in three stages:
- Vector similarity: compares the new content with existing post embeddings.
- Full-text search: catches keyword matches that embeddings might miss.
- 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, with one-click merge.
AI suggestions
Feedback from integration sources such as Slack passes a quality check, is matched against existing posts, and becomes a suggestion to merge posts, vote on an existing post, or create a new post with an AI-written title. See Triage AI 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_MODELpowers summaries, duplicate checks, suggestions, Quinn, and help center answers.AI_EMBEDDING_MODELpowers duplicate detection and help center semantic search. It must produce 1536-dimensional vectors (for exampletext-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_KEYalone no longer turns AI on. AddOPENAI_BASE_URLand 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 checksFeature 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 (Quinn), 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:backfillThe 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.
Related articles
Was this helpful?
Your feedback shapes what we write next.
