Odexy Sign in
New 14 modules on one action layer

The Work OS your AI can actually run.

Projects, CRM, HRM, Payroll, Sales, Chat — one platform, fully integrated. Your AI agent operates the real UI, not a sidecar chatbot.

free for 3 seats · every module included · no credit card

app.odexy.app/crm/deals
Deals 4 open
+ New deal
14 modules Projects Chat Calendar Forms CRM Sales Support HR Recruitment Payroll Expenses Accounting Email Inventory

The action contract

One file. Any caller. One row.

Every user-performable operation is one action — one Zod schema, one policy, one handler. The UI imports it. The HTTP gateway auto-exposes it. The MCP server publishes it to your AI agents. No second authorization, no second backlog, no chatbot.

modules/crm/src/actions/deal.create.ts action
import { defineAction, ok } from '@odexy/actions';
import { z } from 'zod';
import { dealsPolicy } from '../policies';
import { deals } from '../db/schema';

export const createDeal = defineAction({
  name:        'crm.deal.create',
  description: 'Create a new CRM deal in the given org.',
  input: z.object({
    accountId:  z.string().uuid(),
    title:      z.string().min(1),
    valueCents: z.number().int().nonnegative(),
    currency:   z.string().length(3),
  }),
  policy: dealsPolicy.canCreate,
  handler: async (input, ctx) => {
    const [deal] = await ctx.db.insert(deals)
      .values({ ...input, orgId: ctx.orgId, createdBy: ctx.actor.userId })
      .returning();
    await ctx.events.emit('crm.deal.created', { id: deal.id });
    return ok(deal);
  },
});
That one file, called two ways
Your UI TS
// apps/web/src/routes/crm/new-deal.tsx const deal = await callAction(createDeal, { accountId: account.id, title: 'Acme · renewal', valueCents: 4_800_000, currency: 'USD', });
Your AI agent MCP
# claude · mcp tool call tool: crm.deal.create args: accountId: "acct_7q2..." title: "Acme · renewal" valueCents: 4800000 currency: "USD"
audit_log action: crm.deal.create rows: 1 actor: ui or ai → one row, either way

Pricing

Per organisation. Never per seat.

A 12-person team and a 49-person team pay the same. Every tier has every module. The price reflects the depth of AI workload, not the size of your team.

Free $0 / mo

For solo founders and trial drives.

  • Up to 3 seats
  • Every module included
  • 50 AI actions / day
Business $79 / mo

For organisations standardising their stack.

  • Unlimited seats
  • Every module included
  • Unlimited AI actions
Enterprise Custom

For HIPAA, regulated, multi-region deployments.

  • Unlimited seats
  • Every module included
  • Unlimited AI actions

per organisation · cancel any time · export your data on the way out

Run one platform. Free to start.

No credit card. Every module included. Cancel and we delete your data 30 days later — keep your full export forever.