moinAI and the EU AI Act: does your chat widget tell people it's AI?
moinAI is a Hamburg-based customer-communication platform whose widget loads from widget.moin.ai through a script tag carrying id="moinloader". It renders as four separate frames: a teaser, a launcher button, an input bar and the chat window itself. The teaser is the one that matters for Article 50(1), because it can open the conversation before the visitor has clicked anything.
The rule itself is short. Article 50(1) of the EU AI Act requires AI systems that interact directly with people to be designed so users know they're dealing with AI, no later than the first interaction, in a clear and distinguishable way. The exception for cases where it's "obvious" is narrow: a natural-language customer-service bot doesn't qualify just because it has a robot icon. A line in your terms of service doesn't satisfy it either. And it's easy to enforce, because a regulator can open your site and start a chat.
Where the disclosure lives in moinAI
- The teaser bubble, which can address the visitor before any click
- The launcher button and the chat window's header and avatar, set in the Widget Editor
- The AI indicator, a 'generated' label shown beneath chatbot messages, which is a setting rather than a default
- The handover point where a human agent takes over, where the agent profile name is what distinguishes them from the bot
Your moinAI disclosure checklist
- Open your site in a private window as an EU visitor and wait without clicking: if the teaser speaks first, that message is the first interaction and needs to read as AI
- Turn on the AI indicator so the 'generated' label appears beneath chatbot messages, and check it survives in the teaser and the input bar, not only in the chat window
- Write the AI statement into the bot's own first message rather than relying on the indicator alone, since a label beneath a message is easy to miss on mobile
- Check the avatar and display name in the Widget Editor: a photo-style avatar with a human first name is what makes the AI nature non-obvious
- Name human agents distinctly on handover (the docs suggest a form like "Advisor [Name]") so a visitor can tell when the bot stopped answering
- Screenshot the teaser and the opened chat window, and keep a dated export of the widget settings
Watch out for
moinAI ships an AI indicator, the 'generated' label beneath chatbot messages, and it is a setting an admin can leave off. The teaser compounds it: it can start the conversation on its own, so the first thing a visitor reads may be a bot message shown outside the chat window, where the indicator is least visible.
Common questions
The 'generated' label is on. Is that the disclosure?
Article 50(1) asks whether a visitor is informed they are interacting with an AI system. A label under a message arrives smaller and later than a sentence inside the message, and on a phone it often sits below the fold of the chat window. Keep the label and put the statement in the bot's first message.
Our teaser only says hello and links to a page, it does not answer questions. Does it count?
A fixed greeting that leads to a human channel is a weaker case than a bot that answers freely. If clicking the teaser starts an automated conversation, treat the teaser as the first interaction and disclose there.