Enterprise AI integration patterns
Enterprise AI integration is identity, the system of record, and a logged path for every model call. A chat UI that makes people copy-paste is not a pattern. It is a workaround.

Most failed AI programs fail at the join. The model works in a notebook. The ticket system, the CRM, and the warehouse never see it. People paste. That is not integration. That is a workaround with extra steps.
Enterprise AI integration patterns are the few ways a model is allowed to meet a system of record: who is calling, what it may read, what it may write, and how you log it. We implement those joins as custom AI development in your cloud. When the join is a multi-step write, that slice is an agent, still in your repos. This post names the patterns. It does not invent a customer architecture.
Do not start with an integration platform. Start with one workflow and one system you already trust.
Pattern: read through the same identity the user has
The assistant inherits access, or it becomes a bypass. A shared bot identity that can see every contract is how you get a leak that looks like a feature.
Hold this line:
- Retrieval and tool calls run as the user, or as a narrower role, not as a god-mode indexer.
- A revoked user loses model access the same day they lose source access.
- Logs of prompts inherit the data class of the contents.
If you cannot do this, do not connect the corpus. A search box in the source system is safer than a fluent leak.
Pattern: write only through a gated API, never through the UI scrape
Copy-paste into a ticket is not an integration. A browser bot that clicks the official UI is not an integration. The write is an API call you can dry-run, attribute, and reverse.
Writes that belong behind a gate:
- Creating or updating a record in CRM, ITSM, claims, or billing.
- Sending a customer message.
- Changing an entitlement or a refund.
The agent looks up, decides against a playbook, acts, confirms. Sensitive acts wait for a human. Shadow mode on real traffic before the write is unsupervised. If you do not have an API, the first build might be the API, not the model.
Pattern: one logged path for every model call
Every sanctioned completion should pass a path you operate: a gateway or an equivalent proxy with logging, redaction, and cost limits. App-by-app keys in laptops are how shadow AI comes back wearing a company domain.
The path should give you:
- Who called, which model, which app.
- Whether redaction fired.
- Whether a tool write was proposed or committed.
- Enough text for an incident, stored at the right data class.
If security cannot pull last Tuesday without a vendor favor, you are not integrated. You are rented.
Pattern: events in, projections out, the model is not the bus
Do not make the model your enterprise service bus. When a claim is updated, an event can enqueue work. The model may draft. A deterministic consumer writes the field. Chat history is not allowed to become a second source of record.
Useful shapes:
- Inbound: a ticket created event starts a draft or an agent shadow run.
- Outbound: an approved action emits the same event your other systems already understand.
- Idempotency: a retry does not file two refunds.
If the only way two systems meet is a human pasting the model's paragraph, you have not integrated them. You have staffed the join.
Pattern: embed in the screen people already open
The worst pattern is a new portal. The best pattern is a panel on the ticket, the claim, or the PR. Custom apps still sit on your identity and your APIs. RAG sits on the corpus behind that screen. A decision model scores inside the same form.
Yes/no before you add a new UI:
- Can the user finish the job without leaving the system of record?
- Does the suggestion show its source or its proposed diff?
- Can they dismiss it and still work?
A beautiful chat that makes them retype the answer is a failed join.
Pick one join and productionize it
Do not draw a target architecture with twelve systems. Pick the workflow, the system of record, and the pattern (read, gated write, event, embed). Scope a thin slice in staging. Eval the join. Hand over the repo.
Fixed scope after discovery. You own the code. No lock-in. We do not publish a package price. Count hours on that join before you staff a platform team.
If the model cannot see or write the system you already pay for, you do not have enterprise AI. You have a side tool. See custom AI development.
