Skip to content
Muslu Yüksektepe

chatinu

A multi-tenant conversation intelligence platform that analyses customer chats with AI to help businesses win back lost customers.

chatinu is a multi-tenant customer conversation intelligence platform that analyses the conversations businesses have with their customers using AI. The questions it tries to answer are these: why did a customer buy, why did they not, why did they drop out, who is close to converting, who is about to be lost and who should be contacted again. The design is industry-independent, but I optimised it first for clinics working in health tourism.

Purpose

In many businesses, most sales happen on messaging channels such as WhatsApp. Those conversations are a valuable source of information, but they are usually read and forgotten. Which customer gave up for which reason, who was satisfied and might come back, or who quietly disappeared never ends up in front of anyone as a report.

I built chatinu to turn those conversations into a customer intelligence engine. It is not a simple chat analysis tool; its purpose is to help a business win back its past customers. For clinics, that becomes three goals. The first is reaching out again to leads who never replied or dropped out, and turning them into a first sale. The second is winning back patients who were treated but were not satisfied, and protecting the clinic's reputation. The third is offering a second or third procedure to patients who were satisfied.

How it works

The business imports its past WhatsApp conversations and its earlier customer or treatment records. The AI analyses each conversation and extracts the reason for dropping out, the sentiment, a score showing how likely the customer is to be won back, secondary reasons and a short summary. These results are listed on segment pages such as lost customers, treated customers, at-risk customers and cross-sell opportunities.

The user can pick a segment and create a campaign straight from it. Campaigns can also be described in plain language. For example, when a discount campaign is requested for customers from a certain country who came for a certain treatment in the last thirty days, the system turns that sentence into a structured filter, shows a preview of the audience and prepares a personal message for each person based on the analysis of their conversation. Messages are sent through Meta's WhatsApp Cloud API and the status of each one is tracked. Because WhatsApp only allows pre-approved template messages to people who have not written in the last twenty-four hours, the system follows that rule and targets only people who have given consent to be contacted.

Key features

  • Conversation analysis automatically extracts the reason for dropping out, the sentiment, a win-back score and a summary.
  • A natural-language campaign wizard comes with more than thirty ready-made presets.
  • Campaign messages are personalised for each recipient, drawing on that person's past conversation.
  • The panel has an automation section where the customer defines its own AI server, automatic reply rules and knowledge base.
  • Automatic replies follow a strict order. If a defined scenario matches, its exact answer is given. If not, the relevant passage is found in the knowledge base and the language model writes an answer based only on that passage. If the similarity is not high enough, the system says it does not know and offers to pass the conversation to a person.
  • The source of every reply is recorded and can be audited from the panel, so the model cannot make up prices or procedures from its own knowledge.
  • When needed, an operator can take over a conversation and write the reply by hand.
  • An unknown number writing for the first time is automatically opened as a lead, but it is not added to campaigns unless it is selected explicitly.
  • A WhatsApp API gateway is offered as a paid add-on, and the voice assistant was designed as an add-on sold with a minute quota.

Voice assistant

To add the phone channel to the platform, I built a voice assistant module. An incoming call reaches Asterisk over SIP, the speech is transcribed, the answer is prepared with the same rules and knowledge base chain as the written channels, and it is turned back into speech. By default, transcription and speech synthesis use faster-whisper and Piper running locally on the server, so audio never leaves it. Call recordings are stored encrypted, and a transcript and summary are produced for each call. WhatsApp, the voice assistant and the panel chat share the same knowledge base; the customer uploads a document once and it applies on every channel. The first version of this module is now being replaced by a more comprehensive AI call centre engine.

Security

I put the isolation of customer data at the foundation of the architecture. At the centre there is a main database that holds only the tenant catalogue, subscriptions and support records. Customers' own data is not stored centrally; it lives on data nodes assigned from a server pool through the admin panel, in a separate database created for each customer. Every tenant has its own database, its own knowledge base, its own AI endpoint and its own cache key space.

AI calls are routed to the endpoints defined for each tenant. That endpoint can be Ollama on the customer's data node or GPU servers in our own data centre. When a tenant wants its data to stay in the country, calls to external providers are blocked at the code level. Endpoint definitions are checked against SSRF attacks, and secrets are stored encrypted with Fernet. Under KVKK, Turkey's personal data protection law, the data inventory, retention periods, the right to erasure, consent records and access control were handled separately.

Technical stack

chatinu consists of three applications: a marketing and sales site, an internal admin panel and a customer panel shared by all customers. The customer panel works as a single gateway. When a user signs in, the tenant information is read from the main database, the request connects to that customer's database for its duration, and language model requests are routed to the customer's AI endpoint.

The backend is made of three separate Go services, and shared packages live in a single Go workspace. I use PostgreSQL 18 as the database and Valkey for sessions, rate limiting and caching. The interfaces are written with Vite, React and TypeScript, and the built files are embedded inside the Go binary. Nginx with HTTP/3 sits in front. Services run as systemd units without Docker, and only compiled binaries, not source code, are sent to the servers. A new data node can be prepared with a setup script that is safe to run repeatedly.

Use cases

  • Health tourism clinics reaching out again to patients who dropped out and offering new treatments to satisfied patients.
  • Businesses that sell over WhatsApp understanding why they lost customers.
  • Personalised, consent-based WhatsApp campaigns built on past customer records.
  • Answering frequent questions automatically on WhatsApp and by phone, based only on the business's own knowledge base.
  • Organisations whose customer data must not leave their premises and that want to run AI on their own servers.

Status

Conversation analysis, segment pages and the natural-language campaign flow are working, and the WhatsApp API gateway is live. On the voice side, work is under way to bring a more comprehensive AI call centre engine into the platform.

Category
AI tools
Year
2026

Technologies

  • Go
  • PostgreSQL
  • WhatsApp API
  • Ollama
  • Multitenancy
  • SIP

Back to all projects