Skip to content
Swingback, home
Docs / AI features

AI features

Two models read your feedback. Jev, TypeSafe AI's, tags new posts, spots duplicates and screens what the public writes. Claude, Anthropic's, translates posts and comments and drafts changelog entries. They suggest, hold and translate; what becomes of a post is your team's to decide.

Turn them on#

Owners and admins turn each feature on or off under Settings → AI. They're all off in a new workspace.

While a feature is on, the posts and comments it reads go to TypeSafe AI, which runs Jev. They go to Anthropic, which runs Claude, when Jev gives no answer and when you run one of the features over your existing posts. Translation is Claude's alone: with Translate posts and comments on, every post's title and text and every public comment go to Anthropic, private boards' included. Internal notes are never sent. Settings → AI says which company reads what on your workspace.

With every feature off, nothing goes to either, unless someone asks for a draft or for where an issue could go, or turns on Slack's AI drafts or the routing's suggestions: Claude writes those, so they go to Anthropic.

Finding similar posts, as customers type and as candidates for duplicates, uses embeddings that Swingback computes on its own servers, for every workspace. That sends nothing to either company.

What each feature does#

Tag new posts#

For a new post without tags, the model picks up to 3 of your post tags. It never removes a tag, and leaves a post that already has tags alone. A tag it chose shows a sparkle, "Chosen by AI", in the lists and on the post.

Suggest duplicates#

When a new post is close in meaning to others, the model compares it with up to 3 of them and says whether they ask for the same thing. Its suggestions wait under Review, in Duplicates:

  • Merge moves the post's votes and comments into the other one. Someone who voted for both counts once, and you can unmerge it from its page.
  • Not duplicates dismisses the pair for good.

Moderate the portal#

What customers and guests write on the portal and in the widget goes to the model after it's posted. If the model flags it as spam, abuse, sexual content, violence or personal data, it's held in Review with that reason, until your team approves or rejects it. The model never removes anything, and since it reads a text once it's posted, the text may show for a moment first.

When the model can't judge a text, because the month's reads are used up say, a guest's text is held and a signed-in customer's stays. To have nothing show before your team sees it, have posts or comments wait for approval: see Moderation.

Translate posts and comments#

Once a post shows, the model writes its title and its text in the portal's other languages (English, French, German, Spanish, Italian, Portuguese and Dutch, less the one it's written in). Each reader then has the post in their own language: a visitor in the language the portal speaks to them, and each member of your team in their browser's, in the dashboard.

The comments under a post are translated the same way, your team's answers and your customers' alike, and so is a comment a connection publishes from an issue. A reply written in English reaches a French customer in French. Internal notes are your team's own: they're never translated, and never sent to the model.

A translation never stands alone. Under a translated post a line says Automatic translation · Original: French, and Show original puts the author's own words back in its place. Each translated comment has its own line and its own Show original, which changes that comment alone. An author always reads what they wrote.

  • Which posts and comments: those that show. A post is translated once it's approved, or while it waits only because you have every post wait for approval, since that's when your reviewers need it. What a rule or the model holds isn't translated, nor is a post you rejected, merged or deleted. A comment follows the same rule.
  • After an edit: changing a post's title or text, or a comment's text, removes its translations at once, and the model writes them again. A translation is never of another text than the one on the page.
  • What it keeps: the formatting, the code and the links. A translation with a link or an image the original doesn't have, with a language missing or of quite another length is thrown away whole, and the post or the comment shows as written.
  • What the form says: where someone writes a post, the portal says whether posts are translated: to write in their own language, or that posts aren't translated, with your workspace's default language to write in.

Your switch decides whether your workspace translates. Each reader then has a switch of their own, on until they turn it off: Read posts and comments in my language. A customer finds it on the portal's Account page once they're signed in; a member of your team on their own Account page in the dashboard, where it holds for every workspace they're in. Someone who turns it off reads every post and comment as it was written, with no line and no box. Nothing changes for anyone else, and nothing is translated less.

Both switches must be on for someone to read a translation. With yours off there's none for anyone, and the portal's account page doesn't show the reader's switch. A visitor who isn't signed in has no switch: they read the translations, each with its Show original.

Some things stay as written: status notes, your boards' and tags' names and the changelog. So do the comments written before you turned translation on, and a post whose title and text together pass 4,000 bytes, or a comment that long: about that many characters in English and fewer with accents or in Japanese. Emails and announcements quote a post and a comment as their author wrote them, and search matches the original's words. Exports and the MCP server carry the original with its language; the API does too, with a translation beside it where a read asks for one (the language parameter).

Draft changelog entries#

In a draft's editor, Draft with AI writes a title, a summary and a body from the entry's linked posts and your notes. It fills the editor only when you choose Use this draft, and nothing is saved until you save. It doesn't need any of the switches. See Roadmap and changelog.

Suggest where an issue goes, and draft it#

With GitHub or Linear connected, the dialog that creates an issue from a post has two buttons. Ask AI where it could go has the model pick, among your repositories and teams, where the post's issue belongs; Draft with AI rewrites the issue's title and text for engineers. Under Settings → Integrations → Issue routing, Ask AI where the posts no rule routes could go (off by default) asks by itself, once a post. The model only suggests: a person creates the issue. See GitHub and Linear.

Draft posts from Slack#

With Slack connected, Draft posts with AI under Settings → Integrations (off by default) has the model turn a message saved as feedback into a post's title and description, which you check before creating the post. See Slack and Discord.

Backfills#

The features work on new posts. To run one on the posts that came before, owners and admins start a backfill under Settings → AI:

  • Tag the posts without tags
  • Look for duplicates among existing posts
  • Translate the posts that never were (posts alone: the comments written before translation was on stay as written)

A backfill takes the posts that never had that feature, up to 1,000 and the month's reads left. Its results arrive within 24 hours, and apply as they do for a new post. The feature must be on, and one backfill per feature runs at a time.

What counts#

Your plan counts two things each month: what the AI reads, and what it writes for you.

  • A read is a post or a comment that the AI reads. It counts once, whatever the AI does with it: a post that is tagged, compared with its possible duplicates, moderated, translated and matched to a repository or a team for its issue is one read, not five. It counts again only when the AI reads it again: after its author edits it, or when someone asks again where its issue could go. Each post of a backfill is a read, unless the AI already read it this month.
  • A draft is what you ask the AI to write: a changelog entry, an issue, the mapping of an import's columns or a post from a Slack message. Each one counts once.

A call that fails doesn't count.

PlanPosts and comments read a monthDrafts a month
Free505
Pro2,000100

The month is the calendar month, in UTC. Settings → AI shows both counts and when they start again; Settings → Billing shows them too.

Each count has its own limit, and reaching one leaves the other as it is:

  • When the reads are used up, the AI stops reading new posts and comments until next month: new posts aren't tagged, checked for duplicates or translated and, with moderation on, what guests write waits in Review. A backfill can catch up the posts it missed.
  • When the drafts are used up, drafts are refused until next month.

Swingback also caps its total AI spending per day, across workspaces: if that cap is reached, calls stop until the next day, in UTC. Translation stops first, at four fifths of the cap, so that moderation goes on.

What the AI never does#

  • It never merges, publishes, deletes or sends anything, and never creates or links an issue. It adds tags, suggests merges and where an issue could go, holds content, writes drafts and translates posts and comments: people do the rest.
  • A translation never replaces what someone wrote: it shows beside the original, marked as automatic, and it changes nothing else about the post or the comment. Nobody is notified of one.
  • It never removes a tag, and never approves or rejects content.
  • It only picks among the choices it's offered: your tags, the candidate posts, the moderation categories, your repositories and teams. An answer with anything else is thrown away whole.
  • It reads what people wrote as text to judge, never as instructions to follow.