Skip to content

szTheory/cairnloop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

745 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cairnloop 🏔️

Hex.pm Version HexDocs GitHub Actions CI

An embedded, Phoenix-native customer support automation layer for Elixir applications.

Installation

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.install

The installer adds {:cairnloop, "~> 0.1.0"} to your mix.exs deps and generates a create_cairnloop_tables migration against your detected Ecto repo.

Manual install (without Igniter)

Add Cairnloop to your mix.exs dependencies:

def deps do
  [
    {:cairnloop, "~> 0.1.0"}
  ]
end

Then run mix deps.get and generate the migration manually (see the quickstart guide for the migration contents).

Why Cairnloop?

  • 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 :telemetry spans on every meaningful operation. Export to any APM; your app stays in control.

What it does

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.

Explore the guides

  • 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, and SLAPolicyProvider in your app. Includes telemetry patterns and Oban configuration.
  • Troubleshooting — Common install errors, migration order, pgvector setup, and Oban worker timing.

Contributing

Contributions are welcome. Open an issue or pull request on GitHub. Please follow the existing code style and run mix test before submitting.

License

MIT. See LICENSE.

About

An embedded, Phoenix-native customer support automation layer for Elixir applications.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors