Cairnly
Install

Built for small teams, not enterprise sales orgs.

One dashboard, eight reports, code-defined automations, and a contact timeline that is also your inbox. Scope is deliberate.

Contacts & deals

People and companies with custom fields, tags, CSV import with dedupe preview, Postgres full-text search, and Kanban + table pipeline views.

Scheduling links

Public booking pages per user — Calendly-style event types, conflict checking, automatic contact creation, and timeline events on book.

Email in context

Threaded conversations on the contact timeline, templates with {{contact.*}} variables, and optional tracking when you want it.

Forms & webhooks

Hosted forms at /f/<slug>, embed snippets, and POST /api/v1/forms/<slug> for Zapier, n8n, or your own stack.

Code-defined automations

automations.ts in your data directory with triggers like onEmailReceived and onStageChanged — assign owners, tag, send email, score, webhook.

Eight opinionated reports

Pipeline by stage, conversion funnel, win/loss, revenue by month, contacts by source, and more — each exports to CSV; PDF via background worker.


Three foundations

One-command self-hosting

A single curl brings up Postgres, the app, and Caddy with automatic TLS. Secrets are generated, backups are scheduled, and you get an admin invite link — usually in under a minute on a fresh VPS.

Unified inbox + CRM

Email, calendar events, notes, call logs, and form submissions land in one chronological timeline on the contact record. No communications tab — the contact view is the inbox.

AI-native, privacy-respecting

Smart compose, lead scoring, natural-language search, signature enrichment, and meeting summaries — each workspace picks Local (Ollama), BYO API key, or Off. Every call is logged; you can browse and purge the audit log.

Out of scope for v1: teams above ~25 users, territory management, commission tracking, dashboard builders, and plugin marketplaces.