Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.vorel.ai/llms.txt

Use this file to discover all available pages before exploring further.

n8n is the operator-editable visual studio for around-the-brain workflows — post-booking confirmations, lead-nurture cadences, weekly QA digests. The synchronous AI brain (router → sub-agent → tools) runs in-code; n8n handles the asynchronous, cross-conversation, operator-editable layer.
n8n service status: not yet deployed on Railway. The template files ship in the repo (handoff/n8n-workflows/*.template.json) and the operator-side discoverability page lists them, but n8n itself is not running yet. Deployment runbook: handoff/docs/runbooks/n8n-setup.md (~30 min). Once deployed, per-tenant templates are imported during onboarding.

The 3 v1 templates

Post-booking confirmation

Trigger: Vorel webhook on booking.created. What it does: When the agent books an appointment, fan out — Slack notify the assigned user, push to the tenant’s CRM, schedule a 24-hour-before reminder via Vorel’s outbound conversation send. Appointment data comes from the webhook payload — no extra GET needed. Vorel API surface:
  • POST /v1/crm/create-record (create the CRM record)
  • POST /v1/conversations/:id/send (send the 24h-before reminder)
Status: Ready to import. Source: handoff/n8n-workflows/post-booking-confirmation.template.json.

Lead nurture (3-day)

Trigger: n8n schedule trigger, daily 09:00 cron (0 9 * * *). What it does: Daily — find leads stale-qualified for 3+ days, send a re-engagement WhatsApp template via Vorel’s outbound conversation send; escalate to human handoff after 7 days. Vorel API surface:
  • GET /v1/leads?stale_for_days=3 (the canonical cohort filter)
  • POST /v1/conversations/:id/send (re-engagement message)
  • POST /v1/leads/:id/handoff (escalate after 7 days)
  • PATCH /v1/leads/:id (mark the nurture state)
Status: Ready to import. Source: handoff/n8n-workflows/lead-nurture-3-day.template.json.

Weekly QA rollup

Trigger: n8n schedule trigger, Monday 09:00 cron (0 9 * * 1). What it does: Aggregate QA scores + hallucination flags + handoff reasons from the prior 7 days; format the rollup; email or Slack the digest to the operator. Vorel API surface:
  • GET /v1/analytics/weekly-rollup (the single-snapshot endpoint that returns the entire digest payload)
Status: Ready to import. Source: handoff/n8n-workflows/weekly-qa-rollup.template.json.

Validity guarantee

Every shipped template’s httpRequest URLs are CI-validated against the live OpenAPI spec — the test (apps/web/src/app/admin/automation/templates-validity.test.ts) cross-references each URL against lib/openapi-spec.ts paths and fails the build on any mismatch. A renamed or removed Vorel endpoint catches at template-test time, not at operator-import time.

How operator deployment works

When n8n is stood up on Railway, the operator runs through this on each new tenant:
1

Stand up n8n on Railway

Per handoff/docs/runbooks/n8n-setup.md. n8n runs as a 5th Railway service alongside web, workers, Postgres, and Redis. Provisioning cost added: ~$5/month idle.
2

Cloudflare Access in front of n8n

Configure Cloudflare Access on the n8n custom domain so only the operator team (Vorel employees) can reach it. n8n is not customer-facing.
3

Issue a per-tenant Vorel API key

From /(dashboard)/settings/integrations/api-keys (or operator-console issuance for tenants who haven’t set up their team yet). Pick the minimum scope set the workflows need:
  • Post-booking confirmation: crm:write + conversations:write
  • Lead nurture: read + leads:write + conversations:write
  • Weekly QA rollup: read
4

Import the template files

Each .template.json file in handoff/n8n-workflows/ imports cleanly into n8n. Configure credentials (the API key) + the cron timezone (per the tenant’s local time).
5

Wire webhook subscriptions

For webhook-triggered workflows (post-booking-confirmation), wire the Vorel-side webhook subscription at /admin/tenants/[id]/integrations/webhooks so the right event types POST into the right n8n webhook URL.
6

Test end-to-end

Trigger the workflow live (book a test appointment for the post-booking-confirmation flow; cron-fire manually for the others). Verify the Slack notification + the CRM record + the follow-up message lands as expected.

Customising templates per tenant

Each template is deliberately small (1–4 nodes) so operators can fork them per-tenant:
  • Per-vertical messaging — clinic-pack tenants may want a different post-booking copy than real-estate tenants. Fork the template, swap the message body, keep the API call shape.
  • Per-tenant escalation channels — Slack vs. Teams vs. email. Replace the notification node, leave the rest.
  • Per-tenant SLAs — change the cron schedule (daily 09:00 → daily 17:00) per the tenant’s business rhythm.
The template files are starting points, not the limit.

Building custom workflows beyond the v1 set

Tenants can request bespoke workflows during onboarding. Common patterns:
  • CRM-side triggers. Subscribe to lead.qualified and pre-populate a downstream system.
  • VIP routing. Subscribe to conversation.created and route VIPs to a specific human channel via the customer’s regular_status lead attribute.
  • Cancellation-recovery. Subscribe to booking.cancelled, wait 1h, send a re-book offer.
  • Capacity alerts. Cron — count booking.created events in the last hour against a threshold; alert ops when capacity exceeds expected.
Built against the same /v1/* API. Delivered the same way: operator-imported per-tenant.

Why n8n vs. building it ourselves

We considered three alternatives:
  • In-app workflow editor — too much surface area for too little payoff at this stage. We’d be reinventing what n8n already does well.
  • Pure code (TS workers) — fastest for one-off integrations, but not editable per-tenant without a code deploy. Defeats the operator-centric model.
  • Zapier / Make — strong consumer brands; weaker self-host story; price model gets ugly at per-tenant volumes.
n8n landed because it’s open-source, self-hostable, has a solid HTTP node, and the workflow editor is exactly the right abstraction for operators tuning per-tenant flows.

What’s NOT supported

  • Customer-facing workflow editing. n8n is operator-team-only behind Cloudflare Access.
  • Vorel-managed scheduling. Crons live in n8n; we don’t run a cron service today.
  • Auto-deployment of templates. Operators import per-tenant manually. Templated provisioning is a roadmap item if customer count outgrows the manual flow.