0saas

Job ticket 622417 · smb · suggestion box · no subscription

Canny bills by how many customers' opinions you remember. Twenty-five, then US$79 a month.

This page is a suggestion box with a sorting table. Paste your raw feedback — support lines, call notes, churn surveys — and a free-tier model folds it into problem clusters: literal counts, verbatim quotes, and the ask behind the ask. Then paste your real capacity and get the public note: NOW, NEXT, NOT NOW and one principled WON'T, written so the people who asked can read it without wincing. Nothing here tracks a user, hosts a vote, or meters your memory.

Canny is a trademark of Canny Inc. This is an independent, unaffiliated comparison built on Canny's own pricing page, linked below and re-read every thirty days.

Sorting table — rendered in this browser

Source: noneRendered: 0Uploaded to 0saas: nothing

Sample data is illustrative, not a claim about Canny. Every Canny figure on this page comes from the linked pricing page, read 2026-09-27.

The prompt pack

Two prompts, each mapped one-to-one onto a Canny 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.

One-time unlocks only, never a subscription. If a price ever appears here it was read from Stripe in that request, not typed by hand. An unlock is client-side gating, not secure payment verification: it is stored in this browser and cannot prove payment to anyone else.

What Canny's own pricing page says

Read from canny.io/pricing on 2026-09-27. Fields we could not read are marked unconfirmed rather than filled in with a plausible number.

Canny Free vs Pro vs this page — verified 2026-09-27
The jobCanny FreePro (from US$79/mo yearly)This page + a free-tier model
PriceUS$0 — 25 tracked users, 5 managersUS$79 /month billed yearly, and up, as tracked users growUS$0 forever. A free-tier key costs nothing; the prompts are yours.
Dedup + countingAutomatic, within the tracked-user meterAutomatic, more usersPrompt 1 folds pasted lines: literal counts, verbatim quotes, ask-behind-the-ask
Roadmap communicationA portal view users checkSame, plus integrationsPrompt 2 writes the note itself — every cluster answered, mush phrases banned
User trackingThe product's core mechanicThe product's core mechanic, scaledNone. Feedback is read as text, not as identities — a feature on this desk, twice

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 Canny wins.

Replaced: the folding

Raw lines to problem clusters with counts that must sum to the paste — the intelligence layer, minus the meter on whose voice counts.

Replaced: the telling

The public note with NOW/NEXT/NOT NOW/WON'T verdicts, observable promotion conditions, and reasons that survive being read by the asker.

Replaced: the memory

Folds export as Markdown; a folder of dated folds is a feedback history no tracked-user cap can evict.

NOT a portal

No public board, no voting, no status subscriptions. Collection stays where it happens — support, sales calls, email — and honestly, that's where the good feedback already was.

NOT demand measurement

Four pasted lines is four pasted lines. The fold counts your listening, not your market — and prints that warning on itself.

NOT a changelog

Announcing what shipped is a different document with different manners; this desk writes the forward-looking note only.

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. Feedback fold · canny-feedback-fold v1.0.0 · best ally: Google Gemini API — Free usage tier · gemini-2.5-flash-lite

Replaces: Canny's dedupe-and-count core: raw requests into clusters with counts — except the counts here are literal pasted-line counts, never demand estimates.

Why this model: Folding is global reading plus strict accounting: every line lands in exactly one cluster and the counts must sum to the lines pasted. Long context sees the whole pile; JSON mode keeps the ledger honest. Fallback ally: Copy-Paste Relay.

System prompt (1703 chars):

You fold raw product feedback into deduplicated clusters. You are an accountant of asks: your counts are literal counts of pasted lines, your quotes are verbatim, and you never inflate a cluster into 'demand'.

Return ONLY one JSON object. No markdown fences, no commentary, no preamble.

{
  "kicker": string (max 8 words),
  "title": string (max 8 words),
  "subhead": string (max 20 words: total lines pasted, total clusters, stated plainly),
  "items": [
    { "title": string (max 10 words: the cluster, named as a user problem, not a feature), "tag": string ("x N" where N is the literal count of pasted lines folded in), "body": string (max 55 words: 1-2 verbatim quotes in quotation marks with source labels as pasted; then 'Ask behind the ask: ...' in one clause when the requests name a feature but describe a problem; omit that clause when they don't) }
  ],
  "notes": [ string (max 30 words each) ]
}

Hard rules:
1. Every pasted line lands in exactly one cluster; cluster counts must sum to the number of lines pasted. A final cluster 'unclassifiable (x N)' is allowed and honest.
2. Counts are literal. Never write 'many users' or 'strong demand' — write the number, and remember the number is of PASTED LINES, not of your customer base; a note must say this.
3. Quotes are verbatim substrings of the paste, attributed exactly as the paste labels them (or 'unattributed').
4. Cluster names state problems ('can't find old invoices'), not solutions ('add search'), unless every line in the cluster asks for the identical solution.
5. Order clusters by count, descending. No priority advice in this prompt — folding and deciding are different days.
6. Write in the language of the feedback.

User message template:

Fold this feedback. Raw lines — one piece of feedback per line, labeled with source if I have it: {{feedback}}

Variables:

  • {{feedback}} — The pile, one line each (max 12000 chars) sample data shipped with the tool

Output schema (the answer must match this exactly):

{ "type": "object", "required": [ "items", "notes" ], "properties": { "kicker": { "type": "string" }, "title": { "type": "string" }, "subhead": { "type": "string" }, "items": { "type": "array", "minItems": 2, "maxItems": 15 }, "notes": { "type": "array", "minItems": 1 } } }

Decoding: temperature 0.2 · max 1500 output tokens · responseMimeType application/json · budget ~2,500 in / ~800 out per fold · cost per run: 1 request per folding session — weekly at most — against Gemini's free daily allowance.

Prompt 02 — 2. Public roadmap note · canny-roadmap-note v1.0.0 · best ally: Groq Cloud — free tier · llama-3.3-70b-versatile

Replaces: The communication layer above Canny's roadmap view: the note that tells users what's NOW, NEXT, NOT NOW and WON'T — with reasons that survive being read by the people who asked.

Why this model: The note is a short, high-discipline composition where the failure mode is corporate mush; a fast instruct model at moderate temperature, fenced by banned-phrase rules, produces the plain version quickly enough to redraft until it sounds like a person. Fallback ally: Copy-Paste Relay.

System prompt (1539 chars):

You write a public roadmap note from folded feedback clusters and the team's stated capacity. Your reader is a customer who asked for something and deserves a straight answer. Respect is specificity; the enemy is mush.

Return ONLY one JSON object. No markdown fences, no commentary.

{
  "kicker": string (max 8 words),
  "title": string (max 8 words),
  "items": [
    { "title": string (max 10 words: the cluster, in the users' language), "tag": string (one of NOW | NEXT | NOT NOW | WON'T), "body": string (max 50 words: NOW — what ships and roughly when, only from stated capacity; NEXT — the condition that promotes it, observable; NOT NOW — the honest reason, usually another cluster's count; WON'T — the principled reason, stated once, kindly, without apology-spiraling) }
  ],
  "notes": [ string (max 28 words each) ]
}

Hard rules:
1. Every input cluster gets exactly one entry. No cluster is silently dropped — silence is what users already suspect of you.
2. Dates and 'roughly when' only from the team's stated capacity; never invent a quarter. If capacity wasn't stated for a NOW item, write 'in progress; no date we'd bet on yet'.
3. NEXT conditions are observable ('when the export rebuild lands', 'if this cluster passes 20 pasted asks') — never 'based on demand'.
4. Banned phrases: 'on our radar', 'we hear you', 'stay tuned', 'exciting things coming', 'at this time', 'bandwidth'.
5. At most one WON'T — the note's spine — and it must state the principle, not plead resources.
6. Write in the language of the clusters.

User message template:

Write our public roadmap note. The folded clusters (from prompt 1, or your own list with counts): {{clusters}} Our actual capacity and current commitments: {{capacity}} Anything already decided (ships/won'ts leadership has locked): {{decided}}

Variables:

  • {{clusters}} — Clusters with counts (max 4000 chars) sample data shipped with the tool
  • {{capacity}} — Capacity, honestly (max 800 chars) sample data shipped with the tool
  • {{decided}} — Already decided (max 600 chars) sample data shipped with the tool

Output schema (the answer must match this exactly):

{ "type": "object", "required": [ "items" ], "properties": { "kicker": { "type": "string" }, "title": { "type": "string" }, "items": { "type": "array", "minItems": 2, "maxItems": 12 }, "notes": { "type": "array" } } }

Decoding: temperature 0.4 · max 1100 output tokens · responseMimeType application/json · budget ~1,200 in / ~600 out per note · cost per run: 1 request per publish — monthly for most teams — a rounding error on Groq's published base.

Questions worth asking before you cancel

Does this need an API key?

No — copy either prompt into any free chat model and paste the JSON back; the box renders locally. A free Gemini or Groq key just removes the hop.

What does Canny actually cost past free?

Per the pricing page on 2026-09-27: Free covers 25 tracked users and 5 managers; Pro starts at US$79/month billed yearly for 100+ tracked users and 10 managers; Business is custom. The meter is tracked users — people whose feedback the system remembers.

Aren't votes better than pasted lines?

Votes are cheap to cast and biased toward users who found the portal; the feedback in your support queue cost customers real effort. Both are signals; only one of them was already free. The fold works on whichever you paste.

What makes the WON'T rule matter?

One principled WON'T per note is what separates a roadmap from a wishlist. Users forgive a stated principle; they never forgive 'on our radar' said four quarters running — which is why that phrase is banned by name.

Nothing is loaded from X or LinkedIn until you click, and no share is counted, logged or reported back to us — the buttons are plain links to each network's own share page.

Next on the ledger