Area: Admin plane (audit p12) · Surface: mobieusHelp (embeddable widget for tenant sites) · Dimension: competitor-gap · Severity: major
Intercom is built around the embeddable Messenger; Zendesk and Help Scout both ship a Beacon/Web Widget that drops onto any site for live or async chat plus self-service article search. It is the default way modern support is initiated. mobieusHelp reserved the 'widget' source value but never built the widget, so a tenant cannot put a help button on their own marketing site or app — requesters must navigate to the portal. The deflection + KB-suggestion infrastructure already exists (PortalController deflectionConsumed); a widget would be the surface that drives those deflections at the point of need.
Evidence
helpdesk_tickets.source enum includes 'widget' (2026-06-01-helpdesk-phase1.sql:214) but grep for any widget ticket-creation path ('widget' in src/Controllers/Helpdesk or Models/Helpdesk) returns nothing. No widget route in routes.php (the only 'widget' hit is the community FB-style messenger, routes.php:1108). messenger.js is the community DM widget ('FB-style desktop messenger', messenger.js header), not a helpdesk chat widget. No public/*widget* asset exists for helpdesk.
Suggested fix. Ship a small embeddable JS snippet that renders a launcher + panel, searches mobieusKnow for deflection, and falls back to creating a ticket with source='widget' (the enum is already there). Start async (ticket-backed) to avoid building real-time presence; add live chat later. Reuse the existing portal submit + deflection endpoints.
Filed by the automated tenant-app audit and adversarially evidence-verified. Status: verified. Open — not yet actioned.
Patrick Bass
@mobieus