Marvin reads data directly from NIZU's own modules, in-process, with the caller's identity already established by the session. It never calls NIZU over an external API.
Marvin can answer questions about invoices (totals, status, due dates) by fetching them live, scoped to the person asking. A client only ever sees their own invoices.
Conversations with Marvin are stored as normal message threads. Marvin is modelled as an ordinary user, so each person keeps their own history and administrators can review exchanges — all through the existing messaging system. No separate chat store is used.
Marvin uses NIZU's existing access model to decide what each user may see. Clients and leads reach Marvin through the portal; staff reach it in the main app.
Provider configuration (which engine, keys, models, environment) is stored as per-workspace settings and managed under Settings → Marvin.
Additional modules — Projects, Tasks, Expenses, Support Tickets, Uptime Monitor, Contracts, Domain Manager, WhatsApp, OrderLemon Shop, TestSuit, Documentation, TODO, and more — connect the same way: authorize and fetch the record with the existing module model, then let Marvin phrase the answer. The pattern is identical to Invoicing.