An embedded, Phoenix-native customer support automation layer for Elixir applications.
The fastest way to install Cairnloop is with the Igniter installer. First, add Igniter to your dependencies if it is not already present, then run:
mix deps.get
mix cairnloop.installThe installer adds {:cairnloop, "~> 0.1.0"} to your mix.exs deps and generates a
create_cairnloop_tables migration against your detected Ecto repo.
Add Cairnloop to your mix.exs dependencies:
def deps do
[
{:cairnloop, "~> 0.1.0"}
]
endThen run mix deps.get and generate the migration manually (see the quickstart guide for the
migration contents).
- Host-owned support truth. Conversations, drafts, governed actions, and outbound follow-ups all live in your Postgres database — no external CRM sync required.
- Safe automation by default. The AI drafts; your operators approve. Every proposed action passes through a durable approval state machine before execution.
- KB substrate built in. Hybrid pgvector + full-text retrieval keeps AI answers grounded in your published knowledge base, not hallucinated context.
- Additive, not invasive. Cairnloop is a library embedded in your existing Phoenix monolith. No separate service, no separate deploy.
- Observable without lock-in. Bounded
:telemetryspans on every meaningful operation. Export to any APM; your app stays in control.
Cairnloop turns support conversations into answers, product signals, knowledge-base improvements, and safe automated actions — all inside your existing Phoenix app. Incoming messages route through Phoenix Channels to a durable Ecto-backed conversation record. An Oban worker drafts an AI-grounded reply using your published KB and offers it to the operator for approval. Resolved conversations feed back into the KB maintenance queue through a governed review workflow, and support-triggered outbound follow-ups route durably through a configurable Notifier behaviour.
- Quickstart — Clone, install, boot the example app, and walk your first support conversation end-to-end.
- JTBD Walkthrough — A prose walkthrough of every Jobs-To-Be-Done stage in the seeded example: inbox → draft approval → governed tool proposal → resolve → outbound follow-up → bulk recovery.
- Host Integration — Wire up
ContextProvider,Notifier,AutomationPolicy, andSLAPolicyProviderin your app. Includes telemetry patterns and Oban configuration. - Troubleshooting — Common install errors, migration order, pgvector setup, and Oban worker timing.
Contributions are welcome. Open an issue or pull request on
GitHub. Please follow the existing code style and run
mix test before submitting.
MIT. See LICENSE.