# Answer hard Zendesk tickets with your best past replies

> A console where reps open a tough ticket, see the three closest past resolutions, and send an approved reply drafted from them.

- Workflow type: app
- Services: Zendesk, Fireworks AI
- Categories: Customer Support
- Published: 2026-08-21

## What it does

- Puts your open ticket queue on the left. Pick a ticket and the full customer conversation opens beside it.
- Digs through past solved tickets on the same problem and ranks them by how closely they actually match, then shows the top three with the reply that resolved each one.
- Drafts a reply on request using only those three precedents, with the past ticket numbers cited so you can check the answer before it goes anywhere.
- Sends only after you approve, as a public reply to the customer or a private internal note, and shows a clear no good precedent banner when nothing close enough exists.

## What you'll need

- A Zendesk account with agent access to the tickets your team works
- A Fireworks AI account, used for both the ranking and the drafting
- A backlog of solved tickets to learn from. A few hundred is plenty, and no separate search index or setup is needed

## Prompt

Build me a console my support reps work out of when a hard Zendesk ticket lands, so they can see how we answered the same thing before instead of rewriting it from scratch. It is one main screen with three panes: the rep's ticket queue on the left, the selected ticket's conversation in the middle, and precedents plus a draft reply on the right.

The left pane is the open ticket queue, loaded with Zendesk List Tickets. Default it to tickets assigned to the signed-in rep with a status of new, open, or pending, sorted by most recently updated, and give it a toggle to switch to the whole team's open queue. Each row shows the ticket number, subject, requester, priority, and how long it has been waiting. Selecting a row loads everything else on the screen.

The middle pane shows the selected ticket's full conversation using Zendesk List Ticket Comments, oldest first, clearly separating what the customer wrote from what agents wrote and marking internal notes as internal. Show the ticket subject, status, priority, and tags above the thread.

When a ticket is selected, find precedents in two steps. First, build a query from the ticket's subject and the customer's opening comment and call Zendesk Search Tickets restricted to solved and closed tickets, excluding the current ticket, to pull roughly 25 to 50 candidates. Second, send those candidates to Fireworks AI Rerank Documents with the Qwen3 reranker: the query is the current ticket's problem statement, and each document is a candidate's subject plus description. Use the returned relevance scores to pick the top three. Only fetch List Ticket Comments for those top three, not for every candidate, so the app stays fast and stays well inside Zendesk's rate limits.

Show the top three precedents in the right pane as cards. Each card gives the past ticket number and subject, its relevance score, and the resolution text that actually closed it, which is the last public agent comment on that ticket. Let the rep expand a card to read the full past conversation and open the original ticket in Zendesk in a new tab.

Apply a confidence threshold to the reranker's top score. If the best precedent scores below it, do not show a draft at all. Show a clear no good precedent banner explaining that nothing in the archive is close enough, still list whatever weak matches came back so the rep can judge for themselves, and disable the draft button. A confident wrong answer is worse than no answer here. Make the threshold a setting rather than hardcoding it, with a sensible default.

Above the threshold, a Draft reply button calls Fireworks AI Create Chat Completion. Ground it strictly in the three precedent tickets and the current ticket's conversation, and instruct the model to use only those precedents, to cite the past ticket numbers it drew each part of the answer from, and to say plainly that it lacks a precedent rather than inventing policy, prices, or promises. The draft lands in an editable text box beside the ticket, fully rewritable, with the cited ticket numbers visible so the rep can check it against the cards.

Nothing is sent until the rep approves. A toggle next to the send button chooses public reply or internal note, and pressing approve calls Zendesk Update Ticket to post the edited text as that kind of comment, optionally setting the ticket status at the same time. After a successful send, refresh the conversation pane and the queue so the rep sees the posted comment immediately, and surface a clear error in place if Zendesk rejects the update.

Persist a small amount of state per rep: the confidence threshold, how many precedents to show, how far back to search, the default queue, and whether the send toggle starts on public reply or internal note. Also log each approved send with the ticket, the precedents that were shown, and whether the draft was edited before sending, and surface that as a simple count somewhere in the app so a support lead can see how often precedents are actually helping.

## How to customize

- The confidence bar for showing a draft. Raise it so drafts appear only on near identical tickets, lower it to see more suggestions.
- How many precedents to show and how far back in your ticket history to look.
- Whether the send toggle starts on public reply or internal note, and whether the queue opens on your own tickets or the whole team's.

## FAQ

### Can it reply to a customer without me seeing it first?

No. The draft appears in an editable box next to the ticket and nothing is posted to Zendesk until you press approve. You can rewrite as much of it as you like first, or throw it away and type your own.

### Do I need a search index or a special database set up first?

No. It searches your existing Zendesk ticket history directly and re-ranks the results for relevance, so there is nothing to build up front and nothing to keep in sync as new tickets get solved.

### What happens when there is no good past answer?

You get a no good precedent banner instead of a draft. That is deliberate. A confident wrong answer costs your team more than no answer, so the console stays quiet rather than guessing, and you handle the ticket yourself.

### How do I know the draft is not making things up?

Each draft is written only from the three precedent tickets shown on screen and cites their ticket numbers. The resolution text that closed each one sits right there, so checking the answer takes seconds.

### Will this work if our old tickets are messy or inconsistent?

Ranking by relevance handles a lot of the noise, since it reads the meaning of a ticket rather than matching keywords. The confidence bar is your safety net. If your archive has nothing close, you see the banner instead of a weak draft.

### Can it post an internal note instead of replying to the customer?

Yes. A toggle on the send button switches between a public reply and an internal note, which is useful when you want a second pair of eyes on the answer before the customer sees it.

Use this prompt in General Input: https://www.generalinput.com/prompts/answer-hard-zendesk-tickets-with-your-best-past-replies