Skip to content
megapromotingLet's talk
Products aichat

Conversations and support Platform

All questions. The right context.

An assistant connected to your business information, in the channels where your clients message you. It answers about products and services, gathers details and passes the conversation to the team so it is easy to continue.

The shop assistantDoes it fit my machine?Tell me the machine model.I check catalogue variants.Connected catalogue · verified informationThe team can take over the conversation.
How aichat works
Try it here

Message the assistant

The same assistant that responds on the site. Ask it anything about products, prices or integrations.

It only loads when you click. Until then we do not save anything in your browser.

aichat

From information to work done.

01

We connect the sources

Documents, pages, catalogue and team-approved rules.

02

We prepare the conversation

Real questions, brand tone, allowed answers and situations that require human intervention.

03

We link the operations

CRM, orders or bookings, where the system allows integration.

Where it becomes useful.

Online shops

Recommendations based on need and compatibility, information from the catalogue and ordering details.

Services and front desks

Explanation of the services and data collection before handover to the team.

Organisations

A knowledge base accessible through conversation, with routing to the appropriate responsible person.

The available channels and integrations are checked before quoting. A connected and updated catalogue is different from a manually uploaded list.

aichat in detail

What you can do with this project.

aichat is where all customer conversations come into one place and get a reply, no matter which channel they started on. Messages from Facebook Messenger, Instagram DMs, Telegram, 999.md, the website widget and WhatsApp Business all arrive in the same dashboard, with the same history and the same response rules.

The answer is not an elegant guess. The assistant has an indexed knowledge base — documents, pages, product catalogues — over which a hybrid search runs: by default five fragments per question, similarity threshold 0.70, 30% weight on word matching, the rest semantic, with `text-embedding-3-small` embeddings. When it does not find an answer, the correct path is handover to a human, and handover is something modelled in the database, not a promise: the thread has `bot` or `human` state, and the handover log knows three actions — human takeover, return to bot and automatic reactivation.

The agent can act, not just speak. Its tools are of three kinds: a webhook to the client’s system, a piece of JavaScript code run by the platform, or a built-in tool in the platform. Each has a maximum execution time, 15 seconds by default. The models are not tied to a single provider: calls go through a custom LiteLLM gateway, at `api.megapromoting.com/v1`, which speaks the OpenAI format for all back-end providers.

01

Connected channels in practice

Facebook Messenger, Instagram Direct, Telegram, 999.md, web widget and WhatsApp Business Cloud API. Each has its own code in the platform, not a tick box: for Meta there is the connection flow through Embedded Signup on Graph API v22.0, for Telegram a separate service with its own bot, and for 999.md an integration that uses your account session.

02

Hybrid search across your knowledge

Documents are split into fragments with content hash and `text-embedding-3-small` embeddings. By default, 5 fragments are used per question, with a 0.70 similarity threshold, `hybrid` search type and 0.30 weight on word matching. Source attribution is enabled by default, and each query can be logged with the returned fragments, scores and response times.

03

Product catalogue extracted from pages

In addition to documents, a knowledge source can contain structured products — title, description, price with currency, image, link, code, availability. Each product knows how it was obtained: `heuristic` (from the page structure) or `ai`, and has a confidence score to three decimals. The difference matters, because a price extracted heuristically from a poorly formatted page is shown as such.

04

Tools that execute, not just describe

An agent can have `webhook` tools (configurable method and headers), JavaScript code run by the platform, or built-in tools. By default each tool has 15 seconds available; beyond that it stops, so a slow integration does not block the conversation.

05

Handover between bot and human, with automatic return

The conversation thread has an explicit state — `bot` or `human`. The handover log distinguishes human takeover, return to bot and automatic reactivation. Threads also have SLA state: `ok`, `warning`, `breached`.

06

Voice in written conversation

Incoming voice notes are transcribed with `whisper-1`, and the response can be sent back as voice, via OpenAI `tts-1` or via ElevenLabs with stability and similarity settings per voice.

Data and operation

What enters the system. What needs to be checked.

Where the conversations are
MySQL, on the own server in Azure. The schema has over 80 tables modelled in Prisma, with separate tables for Meta threads, Telegram threads, 999.md threads, comments, labels, internal notes and the audit log.
Channel tokens are stored encrypted
The WhatsApp token is stored encrypted with Fernet, with fallback to plain text only for older records. There is token monitoring and notification when it expires — because an expired page token stops the channel silently, not with a visible error.
What the widget sees and where from
The widget has a list of allowed origins per assistant. Note the default behaviour: if the list is empty, the check passes — this is a compatibility choice with older installations, not an omission, but it means domain restriction must be configured explicitly for each deployment that needs it.
Duplicates and messages split into chunks
The Meta webhook can deliver the same message more than once: deduplication is done by message identifier, with 120 seconds of memory. And when someone writes three lines one after another, they are gathered into a 15-second buffer and replied to once, for all of them, not three times.

From exploration to implementation

How we prepare a project with aichat.

01

We choose the channel and who replies when the bot stops

One channel, one audience, one tracked outcome. In the same discussion, the person who takes over the threads marked `human` and within what time is established — because SLA status is measured from the first day, not added later.

02

We connect the sources and check what comes out of them

Documents and pages come in as knowledge sources. For catalogues, the extracted products are checked explicitly: the method (heuristic or AI) and the confidence score show where manual correction is needed before the agent gives prices.

03

We connect the tools to the real systems

Webhook to CRM or ERP, code for your own transformations, built-in tool for what already exists in the platform. Both the slow case and the error case are tested, not only the happy case, because the 15-second limit is what decides.

Questions worth clarifying.

On which channels does it actually work, today?

Facebook Messenger, Instagram Direct, Telegram, 999.md, web widget and WhatsApp Business. Each has its own code in the platform: Meta connection through Embedded Signup on Graph API v22.0, separate Telegram service, and for 999.md an integration made on your account session. Do not assume that a channel that appeared in the meantime is connected — it is checked per implementation.

Can it write first on WhatsApp to a client who has not written for a week?

No, and the reason is with Meta, not with us. Outside the 24-hour window from the client's last message, Meta rejects free text with error 131047, and the platform marks the scheduled message as failed and displays the error, instead of pretending it was sent. What can be done instead: reply within the 24-hour window, or open the discussion on another channel. Sending outside the window requires Meta-approved templates — those are not implemented.

Is the 999.md integration official?

It is not a partner integration with a public API. It works with your 999.md account session: the platform asks you for the value of the `simpalsid.sessionKey` cookie from your browser and uses it to read and reply to messages. The practical consequence, stated before, not after: if 999.md changes the session mechanism, the integration stops and must be reconnected.

How does the agent know the answer, and what does it do when it does not know it?

It searches your sources with a hybrid search — by default five fragments, similarity threshold 0.70, 30% weight on words and the rest semantic — and can attach the source to the answer. When it does not find it, the designed path is handoff to a human: the thread moves to the `human` state, and the log records who took over. There is also automatic return to the bot, likewise as a recorded action.

Can it do something in our system, not just answer?

Yes. A tool can be a webhook to your system, with method and headers of your choice, a piece of JavaScript code run by the platform, or a built-in tool. Each has a maximum time, by default 15 seconds — so an integration that responds in 40 seconds must be done asynchronously, not forced into the conversation.

Which AI model does it answer with?

It is not tied to a provider. Calls pass through a proprietary LiteLLM gateway at `api.megapromoting.com/v1`, which accepts the OpenAI format for all back-end providers; the model is chosen per assistant, and for reasoning-type models the platform changes the request format automatically. For embeddings it uses `text-embedding-3-small`.

What happens if a client sends the same message twice, or writes in bursts?

Duplicates are filtered by message identifier, with 120 seconds of memory — the Meta webhook even retries. Messages written one after another are collected into a 15-second buffer and receive a single reply, to everything the person wrote, not one by one.

Illustrative example

A price question that starts on Instagram and ends with a human

A use case, without client data or attributed commercial results.

Initial situation

Someone writes three Instagram DMs in a row: “hello”, “do you have model X?”, “how much does it cost?”.

How it works

The webhook comes in, duplicates are filtered by message ID, and the three lines are collected in the 15-second buffer and become a single question. The assistant searches the connected sources: if the product is in the extracted catalogue, it replies with the price and may attach the source. If the product is missing or has a low confidence score, it does not improvise.

Rezultatul

Either a reply with price and source, or the thread moves to `human` status and the responsible person receives the conversation with all the context. The thread SLA status shows whether the handover was made on time.

What is required:The Instagram page connected with a valid, monitored token, the knowledge sources loaded, the catalogue checked by the extraction method, and a person designated for the handed-over threads.

Collaboration possibilities

aichat, in the context of your organisation.

Access to approved information

Assistants for recurring questions, with controlled sources, explicit limits and the handover of sensitive situations to a responsible person.

Private companies

We define a pilot around a real process: users, data, integrations, costs and acceptance criteria. Expansion follows after evaluating the result.

State institutions and companies

We establish the requirements for accessibility, hosting, data protection and interoperability. Any connection to AGE or STISC services requires validation of eligibility, access and approvals.

These are adaptation scenarios, not statements about existing contracts or partnerships. The proposed functions are confirmed within the project scope.

Discuss a pilot

Part of an ecosystem.

What would you want to work better?

Tell us about your process. Together we decide what is worth building, what we can connect, and how we check the result.

Let's talk