Skip to content

Tutorial: Camelus from first feedback to shipped

Last updated October 25, 2026

This tutorial walks through Camelus from the first sign-in to telling customers that what they asked for has shipped. It follows one example the whole way: Habits, a habit tracker for iOS, Android and the web, run by Sara.

Every screenshot comes from a real Camelus workspace. The feedback in it went through the same pipeline yours will: an AI model read each message, translated it and grouped it into themes, and Camelus ranked the themes. Titles and summaries in your workspace will read a little differently, because the AI writes them from your own feedback.

The whole tour takes about 20 minutes. You can stop after step 5 and already have a ranked list of what your users want.

What you'll do

  1. Sign in and create a product
  2. Connect your feedback sources
  3. Triage the Inbox
  4. Read the themes and their scores
  5. Fix the grouping when it's wrong
  6. Get to know the people behind the feedback
  7. Add revenue from Polar
  8. Read the daily briefing
  9. Send a theme to where work happens
  10. Tell people it shipped
  11. Let agents and code read your themes
  12. Invite your team, and keep control of your data

1. Sign in and create a product

Go to camelus.si/login and click Continue with Google. The first sign-in creates your workspace on the Free plan. No card is needed.

The Camelus sign-in page, with a single "Continue with Google" button.
Sign in with Google. Your workspace is created on the first sign-in.

Camelus then asks for your first product: one app or site you want feedback about. Sara types Habits, its domain, and one sentence about what it does.

The welcome screen with the product name "Habits", the domain "habits.app" and a short description filled in.
The description is optional, but the AI reads it when it classifies feedback, so one good sentence pays off.

Under the name, Camelus shows the product's slug (habits). The REST API uses it to know which product a message is for. It can't be changed later, so pick a name you're happy with.

Click Create product. The Inbox opens, empty, with a ready-to-run example of sending feedback by API.

The empty Inbox: "Waiting for your first feedback", with a curl example below.
An empty Inbox shows every way to get feedback in, and a curl command you can run right away.

2. Connect your feedback sources

Open Settings → Products → Habits. The Sources card lists where feedback can come from, each with an on/off switch. Below it are the setup details for the widget, email forwarding and the API.

The product settings page: the Sources list with switches, the widget's install snippet and settings, the email forwarding address and the API example.
One product, every source. Each one has a switch, and the Inbox shows which source every message came from.

You don't need all of them. Most teams start with one or two.

The feedback widget

The widget is a small Feedback button in the corner of your site or web app. It runs in its own Shadow DOM, sets no cookies and weighs under 15 KB.

  1. Copy the snippet from the Feedback widget card and paste it before the closing </body> tag.
  2. Add your site under Allowed origins, here https://habits.app. The widget refuses to send from anywhere else.
  3. Optionally change the position, the accent color, the language and the texts, then click Save widget.

This is what Habits' visitors see:

The Habits web app with the Camelus widget open in the bottom-right corner: Bug, Idea, Question and Other chips, a message box, an email field and a "Notify me when this is resolved" checkbox.
The widget on habits.app. Visitors can tag their message, and tick a box to hear back when it's resolved.

The Notify me when this is resolved box matters later: only people who tick it (or who emailed you) receive the "it shipped" email in step 10.

If your users are signed in, you can tell the widget who they are, so their messages are linked to one person and count as verified. See Identify users.

Email forwarding

Each product gets a private address like p_habits-…@in.camelus.si. Forward your support inbox to it, or set a filter that forwards only feature requests. Every email becomes feedback from its original sender. Camelus removes quoted replies and signatures, and for forwarded emails it keeps the person who first wrote, not the person who forwarded. See Email forwarding.

The REST API

Your backend, your helpdesk or an automation tool can send feedback with one request. Create a key in Settings → API & MCP → New key:

The "New API key" dialog with the name "Habits backend" and the scopes "Send feedback" and "Read" checked.
Name each key after where it's used, so you know which one to revoke later. The full key is shown once.

Then send messages from your server:

curl https://api.camelus.si/v1/feedback \
  -H "Authorization: Bearer ck_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "product": "habits",
    "text": "Reminders stopped working after the last update on my Pixel 8.",
    "person": { "id": "u_1042", "email": "ana.novak@example.com", "name": "Ana Novak" }
  }'

A person.id sent from your server counts as a verified identity. created_at lets you import older messages with their real date, and external_id makes retries safe: the same id never creates a second item. The full reference is in REST API.

CSV import

Old feedback from a spreadsheet or a helpdesk export? In the Inbox, click Import CSV and pick the file. Camelus matches the columns by name, and you can change the mapping before importing.

The CSV import dialog: "helpdesk-export.csv: 5 rows", with columns matched to Feedback text, Email, Name and Date.
Columns are matched by name. Map an External id column to skip rows you've already imported.

Added by hand

Some of the best feedback comes from a sales call or a DM. Click Add feedback in the Inbox and paste what they said, with their email if you have it.

The "Add feedback" dialog: notes from a call with a 40-person company that wants team challenges, with the title "Team challenges for companies" and the customer's email and name.
Feedback you heard elsewhere goes through the same pipeline as everything else.

Polar cancellations

If you sell through Polar, connecting it turns every cancellation reason into feedback, and puts plan and revenue on every person. That's step 7.

3. Triage the Inbox

Everything arrives in the Inbox, from every source and every product, in real time. Each row shows who sent it, the product, the source, and the AI's one-line English summary. Below the summary are the type (bug, feature request, question, complaint or praise) and the theme the message was grouped into.

The Inbox: a "Needs review (2)" section at the top, then messages from Polar, the widget, email and the API, each with a summary, a type badge and a theme.
Every message, every source, one list. The filters narrow it down by product, source, type, sentiment or theme.

Click a message to open it on the right. Sara opens one written in French:

A feedback item opened in the side panel: the original French text, its English translation, the AI summary with type, sentiment, urgency and confidence, the theme it belongs to, and the person who sent it.
The original text is never changed. The translation and the summary sit next to it.

The panel shows, from top to bottom:

  • The original message, exactly as it was sent, and an English translation when it was written in another language.
  • The AI summary, with the type, sentiment, urgency, and how sure the AI was. Summaries never contain names, emails or other personal details. A second, rule-based pass removes any that slip through.
  • The theme the message was grouped into, and why, for example "Similar to this theme" with the similarity score. Move to theme… puts it somewhere else; New theme starts a theme from it.
  • The person: their other messages, whether their identity is verified, and their plan and revenue once Polar is connected.

Keyboard shortcuts make triage fast: j and k move between messages, e archives, t jumps to the theme picker, and Esc closes the panel.

Needs review

Messages that look like spam, or that try to give instructions to the AI, don't go into themes. They wait at the top of the Inbox under Needs review.

A message flagged "Instructions to AI": the panel says "This message seems to give instructions to the AI" with the buttons "Looks fine, group it" and "Spam".
This message tried to tell the AI to rank it first. It's kept out of themes until someone decides.

Click Looks fine, group it to let it through, or Spam to move it out of the way. Feedback is never deleted on its own.

4. Read the themes and their scores

Themes is where Camelus earns its keep. Every message about the same need, in any language and from any source, ends up in one theme, and the themes are ranked by score.

The Themes list, ranked by score: dark mode first, then Android reminders, pausing streaks, an Apple Watch app and shared challenges, each with requesters, paying requesters and MRR affected.
The ranked list. Requesters counts people, not messages: someone who writes three times counts once.

Each row shows:

  • Score: how much this theme matters, explained below.
  • Requesters: how many different people asked.
  • Paying and MRR affected: how many of them pay you, and their total monthly revenue. This needs Polar (step 7); until then it shows "—".
  • Trend: New for a theme less than two weeks old, then Rising, Stable or Falling depending on the last seven days.

Click a theme to open it:

The dark mode theme: AI-written title and summary, the actions Send to…, Notify requesters, Edit, Merge and Split, the stats row (score 13.9, 8 requesters, 5 paying, $105 MRR affected), representative quotes, a 12-week chart and the people who asked.
A theme page: what people want, in their words, with the numbers behind it.

The title and summary are written by the AI from the messages' summaries, and rewritten as the theme grows. Once you edit them with Edit, the AI leaves them alone. Representative quotes are picked by code, not by the AI: the latest, the most important, then a mix of sources and people.

Why this score?

Click the score to see exactly where it comes from:

The score breakdown: a table of requesters with the weight of their source, who they are, the type of feedback, the AI's confidence, the time decay, and what each person adds.
Every point of the score is accounted for. Paying customers weigh more, and old requests fade.

The rules are simple and the same for everyone:

  • Each person counts once, with their most important message.
  • Who they are changes the weight. An anonymous message counts 0.8, a known email 1.0, a verified user 1.2. A paying customer counts 1.5 plus a little more for higher revenue, and someone who cancelled in the last 90 days counts 2.0.
  • The type changes the weight too. Bugs, feature requests and complaints count fully, questions half, and praise very little.
  • Time fades everything. A request loses half its weight every 30 days unless the person writes again.

The AI classifies and summarizes. It never computes a count, a revenue figure or a score; code does that.

5. Fix the grouping when it's wrong

The AI groups well, but you know your product better. Everything it does can be changed, and Camelus never undoes what you did:

  • Move a message to another theme from its panel in the Inbox. Camelus never moves it back.
  • Merge two themes that are really one.
  • Split a theme that mixes two needs: select messages and move them to a new theme.
  • Edit the title and summary.

In this workspace, the AI made two themes out of one Android bug: one about reminders arriving late, one about reminders stopping after an update. Sara merges the smaller one into the bigger one:

The "Merge into another theme" dialog, with the target theme picked.
Merging moves every message and requester into the theme you pick.

Every merge, split and move is recorded in the theme's History, and can be undone for 30 days:

The theme history: the merge just made with an Undo button, an earlier merge struck through because it was undone, and the theme's start.
Changed your mind? Undo it from the history. An undone change stays listed, struck through.

Camelus also suggests merges when two themes look alike, but never merges on its own.

6. Get to know the people behind the feedback

People lists everyone who sent feedback with an email or a user id, across all your products.

The People list: names, emails, number of messages, products and when they last wrote.
Everyone who wrote, across products. Search by name, email or id.

A person's page shows all their messages, the themes they're part of, and the updates they've received. With Polar connected, it also shows their plan and monthly revenue.

Tom Baker's page: verified identity, 3 messages, Premium plan, $9 MRR, his feedback and the three themes he's part of.
One customer, everything they told you, and what they pay.

Two buttons matter here:

  • Merge duplicate, for the same person with two emails. Their feedback moves to one person, and both addresses keep pointing to them.
  • Delete, for erasure requests under the GDPR. You can delete only their personal data, which keeps the anonymized summaries so theme counts don't move, or delete them and all their feedback.

7. Add revenue from Polar

Ten requests from people who pay you are worth more than ten from people who don't. If you sell through Polar, connect it in Settings → Integrations (Pro and Studio plans):

  1. In Polar, create an organization access token with the subscriptions:read scope, and paste it into Camelus.
  2. Add the webhook Camelus shows in Polar (Settings → Webhooks → Add endpoint) with every subscription.* event, and paste Polar's signing secret back into Camelus.

The Integrations page: Polar connected, 9 subscriptions and 9 paying customers, the webhook endpoint, and Polar's products mapped to Habits.
Camelus only reads subscriptions. It syncs once a day and on every webhook.

From then on:

  • Every person whose email matches a Polar customer gets their plan and MRR. Themes show how many requesters pay and how much revenue is affected, and paying customers weigh more in the score.
  • When someone cancels with a reason or a comment, it arrives in the Inbox as feedback from the Polar source, grouped like everything else. In the Inbox screenshot in step 3, the top two messages are cancellations: one customer found the price too high, another left over unreliable Android reminders.

See Polar for the details.

8. Read the daily briefing

You don't have to check Camelus every day. Every morning, at the time you choose, it emails a short digest of what changed, and the same digest lives under Briefing:

The Briefing page: today's digest with a short opening paragraph, counts by source, top themes, new themes, urgent items and feedback from paying customers, and an Alerts panel.
Today's digest, live. Past digests are listed below it.

All the numbers come from the database. The AI only writes the two-sentence opening, and Camelus checks it against the numbers before using it. On a quiet day, no email is sent.

The digest email: "Today's feedback digest" with the opening, top themes, new themes, urgent items, feedback from paying customers, cancellations and what shipped.
The morning email. Every line links to the theme or the message.

Set it up in Settings → Notifications: the time, which products, and who receives it. On Pro and Studio there's also a weekly digest on Mondays, and alerts: an email right away for urgent feedback from paying customers, a theme that suddenly spikes, or a run of cancellations. Alerts never exceed 3 a day and respect your quiet hours; the rest wait for the next digest.

The Notifications settings: digest time and products, alert quiet hours, and recipients.
Pick the time, the products and the people. Alerts stay quiet at night.

9. Send a theme to where work happens

A theme is only useful if someone acts on it. Destinations send themes to the tools where your team works: Vicunia, n8n, Zapier, Make, Slack, Discord, or your own endpoint.

In Settings → Destinations → Add destination, pick a preset. Sara sends themes to an n8n workflow that creates GitHub issues:

The "Add a destination" form for the n8n preset: name "n8n: roadmap", the workflow's webhook URL, when to send, and the payload format.
Start from a preset. You choose whether themes go out only when you click, or also automatically.

Every request is signed. Camelus shows the signing secret once, so your workflow can check that requests really come from Camelus:

The "Destination created" dialog with the signing secret, shown once, and the callback instructions.
Copy the secret now: it won't be shown again. You can rotate it later.

Then, on any theme, click Send to… and pick the destination:

The "Send to…" dialog listing the n8n destination with a Send button.
One click sends the theme: title, summary, counts, quotes and score. No personal data unless you turn it on.

The workflow can report back. Each payload carries a callback URL, and when the workflow posts a status to it (planned, in progress, shipped), the theme shows it under Linked work:

The "Linked work" card on the theme: the n8n destination, issue #482 and the status "planned".
The issue n8n created, and its status, right on the theme.

The Settings → Destinations page shows each destination's last delivery, a delivery log you can open, and buttons to test, pause or rotate the secret. Failed deliveries are retried for a day.

The Destinations page with "n8n: roadmap": active, last delivery just now, HTTP 200.
Every delivery is logged. A Test button sends a sample event.

See Destinations and Status callbacks. With Vicunia, the agent can build the change itself and report "shipped" when it's deployed.

10. Tell people it shipped

This is the part most teams skip, and the part customers remember. When a theme is marked shipped, either by you or by a destination reporting back, Camelus drafts an email to everyone who asked and wanted to hear back:

The "Loop messages" card on the theme, with a shipped message ready for review.
When the theme shipped, the draft was ready.

Open it to read and edit the draft:

The "Shipped message" editor: the subject "Dark mode is here", a short AI-written message that starts with "Hi {name}," and includes the release link, and the button "Send to 2".
The AI drafts, you decide. {name} becomes each person's first name.

The AI writes the draft from the theme, never invents features or dates, and includes the release link your workflow reported. You can rewrite it freely. Click Send and it goes out, one email per person:

The email Olivia receives: "Hi Olivia," the news that dark mode is live with the link, the "Habits team" signature, and an unsubscribe line at the bottom.
What a requester receives. Every message explains why they're getting it and has a one-click unsubscribe.

The email only goes to people who asked to hear back: they ticked the box in the widget, or wrote by email. It's never sent to people who unsubscribed or whose address bounced. You can also use Notify requesters at any time to announce that something is planned, shipped, or won't be built, and Reply on a single message to answer one person.

In Settings → Loop messages you can set the sender name and reply-to address, edit the templates the AI starts from, and choose to acknowledge new feedback automatically.

11. Let agents and code read your themes

On Pro and Studio, the same data is available to your code and your AI tools. Settings → API & MCP lists your keys and shows how to connect an agent:

The API & MCP page: the "Habits backend" key with its scopes, and the MCP server URL with setup snippets for Claude Code and other clients.
Keys for your servers, and an MCP server for agents.

  • The REST API reads themes and items, and can change a theme's status (PATCH /v1/themes/:id).
  • The MCP server lets Claude or any agent ask "what are the top requests this month?" or "is anyone complaining about exports?".

Only PII-free summaries and counts leave Camelus through the API and MCP, never original messages or emails.

12. Invite your team, and keep control of your data

In Settings → Team, invite a teammate by email. They open the link, sign in with that Google account, and join the workspace.

The Team page: Sara as owner, and an invite form for marta@habits.app with a role picker.
Invite links expire after 7 days.

  • Owners and admins manage products, sources, destinations, notifications, API keys and members.
  • Members read and triage the Inbox and themes, and can send themes and loop messages.

Settings → Workspace holds the workspace name, its time zone (used for digests), and your data:

The Workspace settings: name and time zone, Export, the Activity log of changes to members, keys and integrations, and Delete this workspace.
Export everything, see who changed what, or delete the workspace.

  • Export prepares everything in the workspace as JSON lines: products, feedback, people, themes, history, messages and the activity log, without secrets. The files are deleted after 24 hours.
  • Activity lists changes to members, keys, integrations, destinations, billing and data.
  • Delete this workspace removes everything, for everyone, right away. Export first if you want a copy.

Plans and limits are on the pricing page. The Free plan includes 1 product, 100 feedback items a month and 1 member; upgrade in Settings → Billing. Feedback that arrives over a limit is still stored and shown, and processed as soon as you upgrade or the month resets. Camelus never drops feedback.

Where to go next