Fig. 01 — Feedback analysis pipeline

Your customers are already telling you what to build.

Rereflect reads every review, ticket and chat you receive and returns structured signal: sentiment, pain points, ranked feature requests and churn risk. Self-hosted, MIT licensed, every feature unlocked.

analysis · 48,2130.4s

“The new billing page is confusing — I was charged twice and couldn’t find my invoices anywhere. If this happens again next month we’re switching.”

source
intercom
customer
maya.chen@acme.io
sentiment
negative · −0.82
pain_point
billing · conf 0.94
feature_req
invoice_export
churn_risk
high · 92%
playbook
save_the_customer
LicenseMITFork it, ship it, sell it.
Feature gates0No tiers, no seats, no SSO tax.
Integrations0Slack, Intercom, Zendesk, Jira…
Data leaving your boxNONEVADER runs fully offline.
Fig. 02 — Processing stages

Four stages, from raw text to something you can act on.

Every item takes the same path. Nothing is sampled, nothing is thrown away, and each stage writes back to the record so you can audit exactly how a conclusion was reached.

01in: raw text

Ingest

Slack, Intercom, Zendesk, email, CSV or webhook. Everything lands in one queue with its source, customer and timestamp intact.

02out: scored record

Analyse

VADER scores sentiment locally at zero cost. Add an LLM key and the same pass extracts pain points, requests and urgency.

03out: topics

Cluster

Records are deduplicated and grouped by topic, so five hundred tickets about billing become one ranked pain point.

04out: side effects

Act

Automation rules fire on thresholds: assign an owner, open a Jira issue, alert Slack, or run a churn playbook.

Fig. 03 — Prior art

For years, teams had two ways to understand their customers. Both cost you something.

Manual triage

Control, at the cost of coverage

Someone reads tickets on Friday afternoon and writes a summary nobody trusts

The same complaint gets counted twice, or not at all

Feedback lives in six tools and gets reconciled in a spreadsheet

By the time a churn signal is spotted, the renewal has already lapsed

Hosted feedback SaaS

Coverage, at the cost of control

Per-seat pricing, so the people closest to customers never get a login

Your customers’ words sitting on a vendor’s infrastructure, indefinitely

SSO, audit logs and the API held back for the enterprise tier

Export is a support ticket, and the model behind the scores is a black box

Rereflect

Both, on hardware you own

Runs on your own Postgres and Redis. The feedback never leaves your network unless you point it at an LLM yourself.

MIT licensed with no plan checks in the code path — SSO, the API, automations and churn prediction are all simply on.

Bring your own key, or run entirely offline on VADER for free. Swap the model whenever you like; the scores stay in your database either way.

Fig. 04 — Extracted signals

Four signals. No guesswork.

Every piece of feedback comes out the far end as structured data — scored, categorised, deduplicated and ranked — in your own database, queryable over the API.

01 / Sentiment

Every word, scored.

Reviews, chats and tickets are scored positive, neutral or negative with a confidence value attached — not a vibe. VADER runs locally for free; an LLM key sharpens the edge cases without changing the schema.

0%Positive
0%Neutral
0%Negative

n = 1,284 · last 30 days · conf ≥ 0.7

02 / Pain points

The top complaints, surfaced.

Pain points are extracted and bucketed automatically, then clustered across every channel. Five hundred tickets about billing collapse into one row with a count you can take to a planning meeting.

CategoryMentions
Billing & invoicing214
Onboarding flow96
Dashboard performance41
Mobile app23
Integrations17
03 / Feature requests

What to build next, ranked.

Requests are pulled out of the noise, deduplicated across phrasings, and ranked by how many distinct customers actually asked. The roadmap argument stops being a matter of who spoke loudest.

Requests · last 90 daysShare
#01Invoice export412
#02Team workspaces267
#03SAML / SSO189
#04API rate alerts121
04 / Urgent & churn

Save the account first.

When sentiment sours or someone mentions leaving, the account is flagged and a playbook is suggested. Predictions are calibrated against outcomes you labelled yourself, and each one carries a confidence interval rather than a single number.

alert · churn_riskHigh
account
Acme Inc.
probability
0.92 · CI [0.86, 0.96]
drivers
billing · 3 negatives · 14d
playbook
save_the_customer
owner
unassigned → CSM
Fig. 05 — Connected channels
Fig. 06 — Rereflect console

Everything the model concluded, in one table you can argue with.

No score is a black box. Every row links back to the original message, the confidence the model assigned, and the rule that fired because of it.

feedback / all
IDCustomerSourceSentimentPain pointChurn
fb_9f21c4Acme Inc.intercom−0.82billing92%
fb_9f21c1Northwindzendesk−0.41onboarding48%
fb_9f21beGlobexslack+0.66reporting07%
fb_9f21bbInitechemail−0.12performance31%
fb_9f21b7Umbrellacsv+0.88support04%
fb_9f21b2Soylentwebhook−0.74billing77%
fb_9f21aeHooliintercom+0.23integrations12%
Analysed today1,284
Open pain points17
At-risk accounts4
Median latency0.4s
Fig. 07 — Common questions

Questions, answered.

Fig. 08 — Deployment

Stop guessing. Run it yourself.

Three commands and roughly thirty minutes. No account, no trial, no sales call — the whole thing is MIT licensed and runs on infrastructure you already have.

01git clonePull the monorepo and copy .env.example.
02docker compose upPostgres, Redis, API, worker and web.
03alembic upgrade headSchema applied; the console is live on :3000.