AI inside Lagniappe

To slightly modify a proverb, Lagniappe’s approach to AI is roughly “For AI proposes, but only Users dispose.” I personally find AI very helpful in many scenarios, but I’m just not a --dangerously-skip-permissions sort of guy, and I don’t live that agentic life. The main AI tools (Organize, Ask, and Create) are all accessible inside the application itself, by email if you configure it, via API, or by using the MCP, optionally installed along with the application. You can even add it as a plugin on ChatGPT. Lots of ways to get your tokens in, and they can all be turned off.

Usage inside the application and by email use the Gemini model selected in the Admin section, while any model can be taught to use the API. The big difference is that application & email usage are billed to the site owner, and for this reason can be explicitly disabled on an individual user’s page (default off on user creation). If the site owner has enabled external AI usage, any managed user can use the API or the MCP to access these tools if they are spending their own tokens, subject to their normal site permissions. Create & Organize follow this pattern:

Not every AI feature produces a proposal, but they all require a user to specifically invoke the feature.

AI Features

General Principles

AI access is not data access. Usage of AI and what a user is allowed to see and do on the app are separate. However AI is invoked, model-facing retrieval tools cannot retrieve anything the invoking user lacks permission to read.

User permissions do not imply AI access. A user, even a user with very broad permissions, has to be separately approved in order to use the configured site model. Users are not similarly restricted when accessing the site via API/MCP, as such usage is paid for by the user and not the site owner.

Model-facing tools are read-only. There are no AI-accessible tools that can directly apply changes. Broad tools like Create & Organize are proposed first and when executed are deterministically applied after verifying the permissions of the user who requested the proposal, while more specific tools like document text generation or schema creation are invoked by users where they appear, as in the form builder or the document editor, and model output is validated and implemented by the application.

AI-generated plans are rechecked at execution time. If a user asks for an AI proposal and that user’s permissions change in between generation of the proposal and its execution, execution will be blocked. Every proposal action rechecks resource permission upon execution.

Context is page-centric. Since Lagniappe is organized around subjects, supplying useful context has natural application boundaries. Most AI capabilities begin with relatively lean prompts and retrieve details on demand through tool calls.

Context is still delivered to the model. While permissions keep information a user shouldn’t have out of the model’s context, any context sent to a model is by necessity read by that model. Built-in AI calls send permitted context to managed Gemini models, and while Google Cloud’s terms state that customer data is not used to train or fine-tune models without prior permission or instruction, separate retention paths and settings still apply. External API clients use their own provider, whose terms govern how that context is handled. Also keep in mind that all standard AI caveats apply, and there is no guarantee that your results will be free from error, so check its work! AI cannot alter any part of the workspace without your explicit consent, and everything that can be proposed by a model can also be done in the UI.