The wedge
Zapier, Make and n8n connect separate apps to each other. Odexy Automation composes the modules you already run, so a trigger or a step is a real operation with real permissions rather than a request thrown over a wall. Workflows leave the same activity trail your team does, and the AI can build and review them the same way a person would.
What ships today
- Canvas builder — drag-and-drop React-Flow node editor. Node types: trigger / condition / branch / switch / delay / set_variable / transform / create_record / update_record / log_activity / send_email / notify / assert / ai_generate / http_request / invoke_action / sub_workflow / wait_for_approval.
- Triggers = the event registry — every event any module emits (
crm.deal.won,sales.invoice.paid,hrm.leave.approved,support.ticket.replied, …) is a trigger for free. New event? New trigger. - Every operation is a step — anything a person can do in any module — update a deal, send an invoice, change an employee record — is available to a workflow without anyone wiring it up.
- Human-in-the-loop —
wait_for_approvalstep pauses the workflow, dispatches to an approver via Slack / email, resumes on their vote. Approvals inbox at/automations/approvals. - Scheduled runs — cron triggers for org-configured schedules (nightly recompute, weekly digest, month-end batch).
- Environments — dev / staging / prod scoping with per-env secrets vault (AES-256-GCM at rest).
- Version history + rollback — every publish is a version; roll back any workflow to any prior version.
- Run inspector — per-run timeline with step trace, input / output per step, retry history, failure explanation.
- Templates gallery — starter workflows per module + per use case; one-click instantiation.
- SSRF-guarded HTTP —
http_requestblocks 127/8 / 169.254 metadata / RFC 1918 / IPv6 loopback / non-http(s) schemes.
How it integrates
- Every module — automation is the "compose modules" layer. When CRM says a deal won, automation can create the Sales invoice, notify the account manager in chat, and schedule a joining-call in calendar — all in one workflow.
- AI step — put Claude, GPT or Gemini in the middle of a workflow and use the result in the next step. The output is checked against the shape you asked for.
- Notifications + Email — steps for both surface the workflow output; delivery + suppression + rate-limits inherit from the source modules.
How the AI helps
- "When a deal closes at over $100k, notify the CFO in Slack + create a Sales invoice + draft a welcome email — build me that."
- "Show me every automation that touches employee compensation."
- "This workflow's been failing on step 4 for two days — what's the pattern in the error rows?"
- "Draft a new automation that reminds employees with unused leave three months before year-end."
The AI authors workflows through the same automation.workflow.publish action a human uses. Approvals it schedules require human votes (never auto-approves). Author permissions are the ceiling: a workflow can never do what its author couldn't.
Built for scale
- Author permissions are the ceiling — automation elevates nothing. A worker whose author can't delete records can't build a workflow that deletes records.
- Publish-time cycle detection —
sub_workflowgraph walked (including nesting inside branch / switch cases) up to depth 10; cycles refused. - Per-run observability — every run stamps input hash, step-by-step outputs, execution time, retry count. Failed runs surface with a human-readable explanation + jump-to-step link.
- Realtime — run status flips live in the run inspector; approvals inbox lights up as approvers get requests.
- Environments + secrets — dev / staging / prod scoping so you can test workflows before they touch prod data. Secrets rotate per-environment.
- Failure notifications — every workflow author gets an in-app notification with a deep-link to
/automations/runs/<id>when their workflow fails.
