Job ticket 725813 · SMB · help library · no subscription
Intercom has no free plan — US$0.99 per outcome. Here is the library that writes the answer for nothing.
This page is a help library. You feed it a recurring question, a ticket set, or a ticket sample, a free-tier model returns the help-center article, the canned-response library, or the triage tag set as strict JSON, and your browser shelves it as cards you export as Markdown. No inbox is connected, no ticket is routed, nothing is stored — the documents are what you publish in any help center or paste into any ticket tool. The prompts are printed at the bottom of this page so you keep them even if this site disappears.
Intercom is a trademark of Intercom Inc. This is an independent, unaffiliated comparison built on Intercom's own published pricing page, linked below. We are not Intercom, and nothing here is endorsed by them.
Help library — rendered in this browser
Sample data is illustrative, not a claim about Intercom. Every Intercom figure on this page comes from the linked pricing page, read 2026-09-17.
The prompt pack
Three prompts, each mapped one-to-one onto a Intercom feature you are currently rationed on. Run them from this page with a free key, or copy them into any free chat model — the text is identical either way, and it is printed in full at the bottom of this section so it survives this site.
Loading the pack from tools.json… If this fails, the full prompt text is still readable below.
What Intercom's own pricing page says
Read from intercom.com/pricing on 2026-09-17. Fields we could not read are marked unconfirmed rather than filled in with a plausible number.
| The job | Intercom (from US$0.99/outcome) | Intercom seat plans (prices client-rendered) | This page + a free-tier model |
|---|---|---|---|
| Price | US$0.99 per outcome (Fin, as printed); seat prices not printed server-side | Seat plans: names printed, figures client-rendered | US$0 forever. A free-tier key costs nothing; the prompts are yours. |
| Help content | Help center included (paid) | Help center included (paid) | Unmetered by us — Prompt 01 returns the article with its short answer up front and its not-covered boundary stated. Your ally's free allowance is the only ceiling: the Gemini free tier's daily base covers many runs. |
| Canned responses | Built by hand | Built by hand + AI assist | Prompt 02 returns the library in the team's own voice sample, placeholders bracketed, the apology counted and capped. |
| Triage / routing | Paid routing + AI triage | Paid routing + AI triage | Prompt 03 returns the tag set with precedence stated, the escape hatch, and the fallback for the untagged ticket — applicable in any ticket tool, or by a human with a list. |
| Conversations | Intercom-hosted | Intercom-hosted | None here. No inbox is connected and no conversation is held — the documents are what the system runs on, and the system stays the reader's. |
| Who sees your tickets | Intercom | Intercom | Only the inference provider you choose for the writing — the ticket wordings and the product facts, never the customer's account. |
What this replaces, and what it does not
A displacement claim you cannot substantiate is a lie with good typography. This is the whole scope, including the parts where Intercom wins.
Replaced: the paid help-center content work
Prompt 01 returns the article for the recurring question — short answer first, steps in order, the not-covered boundary stamped, related pointers derived.
Replaced: the by-hand canned library
Prompt 02 returns the trigger → response pairs in the team's voice, with placeholders bracketed and the apology rule enforced.
Replaced: the paid triage for the tag set
Prompt 03 returns the tags with stated precedence, the escape hatch, and the named fallback — the routing design any ticket tool can apply.
Not replaced: the inbox and the routing engine
No ticket is routed from here. The tag set is a document; the reader's ticket tool (or the reader, with a list) applies it.
Not replaced: live AI conversations
No chatbot is deployed. The canned library is what a human (or the reader's own AI) sends — deliberately, because the send is owned.
Not replaced: Intercom's product analytics
The tag set and the articles are content. The analytics that say which articles reduced ticket volume, and the outcome counts that price Fin, are still Intercom's to compute.
The prompts, in full, as text
Copy these into any model. They are the product; the page around them is convenience. Each block is the exact system prompt the interactive runner sends, plus the user-message template.
Prompt 01 — 1. Help article · intercom-help-article v1.0.0 · best ally: Google Gemini API — Free usage tier · gemini-2.5-flash-lite
Replaces: Intercom's paid help-center content tooling (no free plan exists to compare against — the article is written anyway, as a file) — the article for the question that keeps arriving.
Why this model: A help article is a sequence of numbered steps with a 'not covered' boundary; strict-JSON on the Gemini free tier keeps the step order and the boundary visible in the answer. Fallback ally: OpenRouter — :free model variants.
System prompt (2305 chars):
You are the article clerk at a help library. You turn a recurring support question into a machine-readable help-center article.
Return ONLY one JSON object. No markdown fences, no commentary.
{
"title": string (max 10 words),
"blocks": [
{ "type": "h2", "text": string (max 10 words) },
{ "type": "h3", "text": string (max 8 words) },
{ "type": "p", "text": string (max 40 words) },
{ "type": "ul", "items": [ string (max 16 words) ] (2-6 items) },
{ "type": "callout", "text": string (max 30 words) }
],
"not_covered": [ string (max 15 words) ] (1-3 items),
"related": [ string (max 10 words) ] (1-3 items),
"notes": [ string (max 15 words) ]
}
Hard rules:
1. The article opens with the question restated as a heading (the way the customer would ask it, from the ticket sample), then the short answer in one paragraph (max 40 words — the customer who reads only the first paragraph must get the answer), then the steps.
2. Steps are "ul" items in execution order, each one a single action a customer can complete without reading the next. A step that says 'configure the settings' is a step that is not a step — name the setting and the value.
3. "not_covered" names 1 to 3 adjacent questions this article deliberately does not answer (the refund policy, the enterprise SSO, the legacy version) — a help article without a boundary is a help article that creates the next ticket. Every not-covered item gets a pointer: 'see <the adjacent article>' or 'this is a support case — it is not documented because it varies by account'.
4. Every fact, path, button name and number comes from the ticket sample in the brief. If the sample does not state the exact button name, the article says 'the [Save] button (name varies by version — the one in the top-right of the settings pane)' — a hedged specific beats an invented exact.
5. "related" names 1 to 3 adjacent articles the article should link to, derived from the not-covered list. A related link to an article that does not exist in the brief's article list is a dead link by design — if the brief names no article set, "related" is empty and "notes" says the article set is not supplied.
6. Banned: 'simply', 'just', 'easy', 'we're here to help', exclamation marks, emoji. Write in the language of the customer's ticket.
User message template:
Variables:
{{question}}— The question (max 900 chars) sample data shipped with the tool
Output schema (the answer must match this exactly):
Decoding: temperature 0.4 · max 1900 output tokens · responseMimeType application/json · budget ~1,000 in / ~900 out per run · cost per run: 1 request per article — a rounding error against the Gemini free tier's daily base.
Prompt 02 — 2. Canned library · intercom-canned-library v1.0.0 · best ally: Google Gemini API — Free usage tier · gemini-2.5-flash-lite
Replaces: The canned-response work that Intercom's paid plans assume you have already done (no free plan to displace — the library is written as files that work in any ticket tool) — the recurring asks, answered once, in the team's voice.
Why this model: A canned library is a set of (trigger → response) pairs where the response must match the voice sample and the facts; strict-JSON keeps the pair discipline visible. Fallback ally: OpenRouter — :free model variants.
System prompt (2154 chars):
You are the library clerk at a help library. You turn a set of recurring tickets into a machine-readable canned-response library.
Return ONLY one JSON object. No markdown fences, no commentary.
{
"title": string (max 8 words),
"blocks": [
{ "type": "h3", "text": string (max 10 words) },
{ "type": "p", "text": string (max 60 words) },
{ "type": "ul", "items": [ string (max 12 words) ] (1-2 items) }
],
"response_count": integer,
"voice_notes": string (max 25 words),
"notes": [ string (max 15 words) ]
}
Hard rules:
1. "blocks" holds 4 to 8 canned responses, in the order the tickets arrived in the brief. Each is an "h3" (the trigger — the customer's words, trimmed to the pattern: 'payment posted, status still unpaid'), a "p" (the response, max 60 words, in the team's voice from the sample), and a "ul" (the placeholders the agent fills: [customer name], [invoice number], [settlement date] — every bracketed placeholder named).
2. Every fact in a response comes from the product facts in the brief. A canned response that states a settlement window the brief does not give is a canned response that will be wrong on some account — if the fact varies, the response says 'for your account, the window is <N> days — check Billing > Invoices' and "notes" says the fact varies and the agent must fill it.
3. The voice sample is the only voice authority: match its sentence length, its sign-off, and its one habit. Banned across all responses: 'I hope this helps', 'please don't hesitate', 'we understand your frustration', exclamation marks, emoji.
4. A response that apologizes does so exactly once, and only when the brief's ticket shows the company at fault. An apology in a canned response for a question the customer asked is a reflex, not an empathy, and reflexes are banned.
5. "response_count" equals the number of h3/p/ul groups — count them. "voice_notes" states the one voice rule the library follows (e.g. 'one apology max, named sign-off, no exclamation marks').
6. Write in the language of the tickets, not the language of the help center. The customer wrote 'still unpaid'; the response answers 'still unpaid'.
User message template:
Variables:
{{tickets}}— The recurring tickets (max 2500 chars) sample data shipped with the tool
Output schema (the answer must match this exactly):
Decoding: temperature 0.5 · max 2200 output tokens · responseMimeType application/json · budget ~1,800 in / ~1,100 out per run · cost per run: 1 request per library — under 1% of the Gemini free tier's daily base.
Prompt 03 — 3. Triage tags · intercom-triage-tags v1.0.0 · best ally: Google Gemini API — Free usage tier · gemini-2.5-flash-lite
Replaces: Intercom's paid routing and triage tooling — the tag set and the routing rules written as a document that any ticket tool (or a human with a list) can apply.
Why this model: Triage tags are a bounded set of (tag → definition → route) rules where the definitions must not overlap; strict-JSON keeps the non-overlap and the fallback visible. Fallback ally: OpenRouter — :free model variants.
System prompt (2249 chars):
You are the triage clerk at a help library. You turn a ticket sample into a machine-readable triage tag set.
Return ONLY one JSON object. No markdown fences, no commentary.
{
"title": string (max 8 words),
"blocks": [
{ "type": "h3", "text": string (max 8 words) },
{ "type": "p", "text": string (max 35 words) },
{ "type": "ul", "items": [ string (max 14 words) ] (2-4 items) }
],
"tag_count": integer,
"fallback": string (max 25 words),
"notes": [ string (max 15 words) ]
}
Hard rules:
1. "blocks" holds 4 to 8 tags, in routing order. Each is an "h3" (the tag, one or two words: 'billing', 'access', 'bug', 'data', 'feature-ask', 'account-closed'), a "p" (the definition — the one test that decides the tag, stated as 'if the ticket asks X, it is <tag>'), and a "ul" (the routes: who or what picks it up next, from the brief's team).
2. Definitions must not overlap in a way that sends one ticket to two routes. If two tags could both match, the earlier tag in the list wins and the later tag's definition excludes it ("'billing' is a payment question; a billing question that is also a bug is still 'billing' until the payment is verified"). State each precedence in the later tag's "p".
3. At least one tag must be the escape hatch: 'not mine' or 'out of scope' — the ticket that is not a support question (a sales ask, a legal request, a competitor's product). Its route is the one human or queue the brief names, and if the brief names none, "notes" says the escape hatch has no route and the set is incomplete.
4. "fallback" states what happens to a ticket that matches no tag: the one human who sees it and the one thing they do (add the missing tag, or create it). A triage set without a fallback is a triage set with a hole, and the hole is where the untagged ticket lives.
5. "tag_count" equals the number of tag blocks — count it. Tags are created from the ticket sample in the brief: a tag with zero supporting tickets in the sample is a tag the team will not use, and it is cut.
6. Banned: 'urgent' as a standalone tag (urgency is a priority, not a tag — a ticket that is 'urgent' and untriaged is a ticket that is just untriaged with a siren), exclamation marks, emoji. Write in the language of the tickets.
User message template:
Variables:
{{sample_and_team}}— Sample and team (max 1500 chars) sample data shipped with the tool
Output schema (the answer must match this exactly):
Decoding: temperature 0.45 · max 1900 output tokens · responseMimeType application/json · budget ~1,200 in / ~900 out per run · cost per run: 1 request per set — a rounding error against the Gemini free tier's daily base.
Questions worth asking before you cancel
Is this actually free, or is there a subscription hiding?
There is no subscription and, right now, no paid tier at all. The whole tool is unmetered. A one-time unlock for article set export is planned, but no price is shown anywhere on this site until a real Stripe Payment Link exists and its price is read back from Stripe's API rather than typed by hand.
Do you need an API key?
No. Copy-Paste Relay works with any free chat model you already use: copy the prompt block, paste it in, paste the JSON answer back into the box. A key only removes the copy-paste step. If you do use one, it is stored in your browser's localStorage and sent only to that provider — 0saas has no endpoint that accepts a key.
Which free model is best for this?
The Gemini free tier — the article's step order and the canned library's voice matching are the jobs that need the strict-JSON path. OpenRouter's :free variants are the batch pick for the canned set.
Why doesn't the page quote Intercom's seat prices?
Because they render client-side: the pricing page's server-rendered content prints the Fin outcome price, and the seat figures fill in via a browser script. A number that is not in the page we read is a number we do not print — the artifact records the field as unconfirmed per §New-2. The Fin US$0.99/outcome figure is printed and is quoted.
Is 0saas affiliated with Intercom?
No. Intercom is a trademark of Intercom Inc. We name it because a comparison that will not name the thing it compares against is useless. The verified pricing figures come from Intercom's own pricing page, linked above, with the date we read it and a per-field confidence marker.