Rereflect - Self-hosted AI feedback analysis. MIT, BYOK, zero telemetry

by
Rereflect turns customer feedback into sentiment, pain points, feature requests and churn risk. 100% open source (MIT), self-hosted, zero telemetry. Bring your own LLM key, or run the free local pipeline with no API key and no cost. Nothing is locked.

Add a comment

Replies

Best
Maker
📌
I launched Rereflect here six months ago as a hosted product. Today it's something different: 1.0.0 is fully open source under MIT, and you self-host it. What that means concretely: - Your data never leaves your box. Docker Compose, three commands, done. - Zero telemetry. No usage analytics, no crash reporting, no phone-home. A default install makes no outbound calls of its own only the endpoints you configure. - Bring your own LLM key (OpenAI, Anthropic, Google), encrypted at rest. There's no vendor key and nothing is proxied. - Free by default it runs end-to-end on a local VADER + keyword pipeline with no API key and zero cost. Add a key only when you want LLM-grade analysis. Point it at Ollama and even the Cmd+K copilot runs fully offline. - No tiers. Advanced churn, cohorts, analytics, integrations and the API are all just included. No open-core bait. It ingests feedback from CSV, email, webhooks and Slack, then classifies sentiment, pain points, feature requests and urgency, scores churn risk per customer, and routes it through a kanban workflow. 1.0 was mostly about earning the version number: CI on every PR, a green suite across all three services, and deleting the last of the payment scaffolding. Repo's here → github.com/haqaliz/rereflect. Issues and PRs very welcome, and I'll be around all day for questions.

love that it's self-hosted and mit licensed, no telemetry is a huge plus. spun it up locally with the free pipeline and the sentiment breakdown was surprisingly clean for something without an api key.

 Thanks, that's great to hear. The keyless path was the part we were most nervous about VADER plus the keyword pipeline does the whole thing locally, so "no API key" is a real mode, not a crippled demo. If you ever want a step up without giving up offline, there's an opt-in local transformer sentiment model (CPU, per-org) with an accuracy card that compares it against VADER on a labeled set, so you can see whether it's actually better on your data before switching. Still no key, still nothing leaving your box.

Honestly the bring your own key setup is really nice, but it would be great if you could plug in a Slack or Discord webhook to get pinged whenever a batch of new feedback crosses a certain sentiment threshold. Would make triaging way faster for our team.

 Thanks, glad the BYO-key part landed well.

Half of this already ships in 1.0.0, so let me split it:

Slack is supported today. Settings > Integrations, paste an incoming

webhook URL (...) or connect via OAuth, and

there's a Test button to confirm it before you rely on it.

Generic outbound webhooks are in Settings > Webhooks. You subscribe to

feedback.created, feedback.analyzed, feedback.urgent,

feedback.status_changed or feedback.category_match, optionally filter by

category, add custom headers, and sign with an HMAC secret. HTTPS only.

Sentiment-based triggering lives in Settings > Automations. The "Negative

Sentiment Alert" template fires when one customer sends 3+ negative

feedbacks in 7 days, and the count/window/sentiment are all editable.

What you're describing is a bit different, though, and we don't have it:

a threshold across a whole incoming batch rather than per customer. That's

a fair gap and a good fit for the automations trigger model, I'll open an

issue for a batch-level sentiment trigger, plus routing automation alerts

to Slack directly.

Discord isn't supported yet. Its webhook API wants {content} or {embeds}

and we post our own JSON envelope, so pointing our webhook straight at a

Discord URL will just 400, you'd need a small relay in between today. A

native Discord formatter is worth doing; I'll track it alongside the above.

If you open an issue with what "a batch crosses the threshold" means for

your team (percentage negative? absolute count? per import or per hour?),

that'll shape the trigger config directly.

the bring your own key setup is genuinely thoughtful, basically lets teams keep control of their data without locking anyone into a specific model. love that it's fully open source too, that's the kind of execution this space really needs right now.

 Appreciate that. Not locking anyone to a model was deliberate the key is yours, encrypted at rest, nothing proxied through us, and you can point it at OpenAI, Anthropic, Google, or a fully local Ollama endpoint including the Copilot embeddings. Same reasoning behind MIT rather than open-core: a feature you can't reach isn't really shipped.

Love the BYOK setup and self-hosted angle, feels rare these days. One thing that would make it way more useful for me is integrating directly with Intercom or Zendesk so feedback flows in automatically instead of pasting tickets manually. Would save a ton of time on weekly reviews.

 Thanks — and good news on the first half: Zendesk is already in, you don't have to paste anything. Settings → Integrations → Zendesk, connect with your subdomain, an agent email and an API token, and Rereflect polls for new tickets on a schedule (optional webhook if you want them the moment they're created). It auto-creates the feedback source on connect, maps the requester to a customer in Customer 360, and can optionally sync the feedback item's status back as the ticket moves to Solved. Setup is in docs/SELF_HOSTING.md under "Connecting Zendesk".

Intercom I'll be straight about. Connecting works over OAuth and conversations flow in via webhooks, but you currently have to create your own Intercom app and set INTERCOM_CLIENT_ID / INTERCOM_CLIENT_SECRET / INTERCOM_REDIRECT_URI and that isn't documented anywhere yet, so clicking "Connect to Intercom" on a fresh self-host just errors. That's our gap, not yours. There's also no polling fallback for Intercom yet, so it's webhook-driven only. I'm writing those setup docs now, and looking at adding a token-paste option like the one Zendesk/Jira/Asana use so it doesn't need OAuth on a self-host at all.

Also fair criticism that you had to ask: the README only lists CSV, email, webhooks and Slack, and never mentions Zendesk, Intercom, Jira, Linear or Asana. Fixing that too.

So, if Zendesk is your main channel, you're covered today. If it's Intercom, give me a few days.

finally tried a self-hosted tool that actually respects my data, and the local pipeline worked without me hunting for an api key. the pain point breakdown on a small batch of feedback was surprisingly sharp.

 Thank you. that's exactly the bar I was aiming for. The local pipeline

working with no key is deliberate: you should be able to clone it and get

real output before deciding whether you want an LLM in the loop at all.

Worth knowing when you're ready for it: adding your own key doesn't change

where the data lives, it just improves categorization nuance and unlocks

the drafted-response features. The local path stays fully supported either

way, it isn't a crippled demo mode.

If the pain point breakdown starts drifting on larger batches, please open

an issue small-batch accuracy and large-batch accuracy are different

problems and I'd rather hear about the second one early.

honestly the no-telemetry self-hosted setup is what caught my eye, and bringing my own LLM key feels pretty refreshing these days. parsed a batch of support tickets in like two minutes and the pain point grouping was more accurate than i expected.

 Really appreciate this. No telemetry and BYO key were the two things I

wasn't willing to compromise on in the OSS pivot. your feedback is your

data, and if it goes to a model provider it should be one you chose and

pay directly.

The pain point grouping is the part I'd most like feedback on as your

volume grows. If you ever see it splitting one real complaint into two

clusters or merging two distinct ones, an issue with a couple of the

example texts (redacted is fine) is genuinely useful, that's the fastest

way for me to tune it.

the bring your own LLM key approach is genuinely smart, especially since not everyone wants their customer feedback flying off to some third party. one thing i'd love to see is a built in trend view over time, so you can actually watch how sentiment and recurring pain points shift week to week rather than just looking at a snapshot. that would honestly make it way more useful for product teams trying to catch issues before they snowball

 Thanks. and good news, this one already exists. It's just not obvious

enough from the landing page, which is on me.

The Analytics page (/analytics) is exactly the week-over-week view you're

describing. It gives you 7/30/90 day ranges with daily or weekly buckets,

and plots average sentiment, volume, urgent count, pain points and feature

requests over time rather than as a snapshot. Below the charts, top pain

points and top feature requests each carry an up/down/stable arrow so you

can see which themes are actually accelerating versus just being loud. It

also does source breakdown, CSV export, saved views, and read-only share

links if you want to hand a view to someone without an account.

Honest limits: 90 days is the current maximum window, and it's bucketed

counts rather than statistical change detection, it'll show you a pain

point climbing, it won't tell you the climb is significant.

If you try it and it still doesn't answer "is this getting worse," tell me

what's missing. Longer retention windows and anomaly flagging are the two

obvious next steps and I'd rather build the one you'd actually use.