agent · policy · human · evidence
one accord

The open-source custom CRM framework for coding agents

# Your business is different.
Your CRM should be too.

Tell your coding agent how you sell and serve customers. Accordo gives it the rules. You keep the code.

[See how it decides](#flow)

[Run the quote approval example](blog/run-a-b2b-quote-approval-workflow.html)

1. Lead

2. Qualification

3. Opportunity

4. Quote

5. Approval

6. Order

7. Contract

8. Renewal

policy gate · discount > 20%

1. Agent request −25% The agent proposes the discount through a named workflow

2. Policy check Blocked Above the threshold the transition refuses itself

3. Human decision Approved A named person decides; the agent cannot decide for them

4. Audit recorded Flow resumes The decision leaves a trace in your repository

Custom CRM Quote approval Revenue ops Service Renewals CPQ Customer data

Custom CRM Quote approval Revenue ops Service Renewals CPQ Customer data

In practice

## Describe the rule. Your agent ships it. Your team uses it.

One sentence of business intent becomes a versioned policy in your repository — and the CRM screen your team opens obeys it.

Business intent

"When a quote has more than 20% discount, a sales manager must approve it."

$ npm run crm -- app inspect --json → composition read, not guessed → plan bound to this application

→

Source · commercial/discount-policy.js

export const standardSalesDiscount = {

name: 'standard-sales-discount' , version: 1 ,

config: { autoApproveMaxBps: 2000 , ●

approvalKey: 'sales-manager' }, ●

evaluate({ maxLineDiscountBps, config }) {

if (maxLineDiscountBps <= config.autoApproveMaxBps)

return { decision: 'auto_approve' };

return { decision: 'approval_required' , ●

requiredApprovalKey: config.approvalKey };

},

};

→

Running CRM · generated admin

Opportunities / OPP-2041 ● live

Acme S.p.A. €180,000

Quote Q-1042 · discount 25% · 2500 bps

● Approval required · discount > 20%

Approver — Sarah Rossi · Sales Manager

[Approve](how-it-works.html)

[Reject](how-it-works.html)

✕ agent transition refused — standard-sales-discount v1 ✓ s.rossi approved · 14:02 ✓ audit recorded · run 4d2a91

Matching marks — the line of policy that governs the behavior.

The backend enforces it
One application — UI, domain model, services, workflows, policy and audit — composed as source in your repository. The client asks; the server decides.

accord reached · sealed

A third choice

## Stop choosing between bending a platform and rebuilding CRM foundations.

01
### Configure a CRM

Fast when your process fits. Use one when you need a hosted product now.

02 · the third choice
### Build with Accordo

Start from CRM primitives. Let the agent shape them around your process, in a repository you control.

03
### Generate from scratch

Maximum freedom, but your team must re-derive policy, audit and verification.

[Compare the three paths and their trade-offs](compare.html)

The signature moment

## A rep wants to give 25% off. Who gets to say yes?

The agent

Writes the CRM, proposes the discount, and asks — through a named workflow, never a database write.

The policy

Deterministic, versioned code — not a model’s judgement. Anything above the threshold stops and waits.

The human

The agent cannot approve on the human's behalf. A test asserts the refusal, so the boundary is a property of the system rather than a promise in a README.

✓ Every decision leaves a trace — audit and run history stay in your repository.

[See the refusal proof and its boundary](evidence.html#C-04)

One operating model

## From first signal to the next customer decision.

Model the lifecycle as connected business outcomes—not a collection of disconnected objects.

1. Customer context

2. Demand

3. Qualification

4. Opportunity

5. Quote & approval

6. Signature & order

7. Contract

8. Delivery

9. Service

10. Renewal

Agent-native development Workflow & policy Human approval Audit & trace

Product model, not a coverage claim. The lifecycle is the durable system Accordo is designed to express. [Repository evidence](evidence.html) separately shows which parts this exact tree proves.

Why it is different

## Business rules become reviewable software.

### Process before schema

Start with the job, decisions and boundaries. The data model follows the way the business works.

### Agents author; policy decides

Commercial policy is deterministic code, not a model's judgement: a renewal at or above the threshold stops and waits for a named human.

[See the proof and its boundary](evidence.html#C-03)

### Human decisions stay human

Authority is a property of the system, asserted by a test — not a promise in a README.

[See the refusal proof](evidence.html#C-04)

### Source ownership is literal

The scaffolder vendors framework source into your project. Upgrades are merges, not dependency bumps.

[Understand the ownership mechanism](concepts/code-you-own.html)

The coding-agent experience

## Intent in. Checked-in system out.

1. Describe State the business objective, constraints and decisions.

2. Inspect The agent reads the composition instead of guessing what exists.

3. Plan It binds a reviewable plan to that exact application.

4. Build It composes packages, workflows, policy and UI as owned source.

5. Prove Tests, scenarios, audit and trace show what worked—and what was not established.

[See how it works](how-it-works.html)

[Give Accordo to your coding agent](for-ai-agents.html)

Jobs, grouped for humans

## Build around the commercial job in front of you.

[ Custom CRM design Encode a non-standard sales process without forcing it into somebody else’s object model. ](solution-custom-crm.html)

[ Revenue operations Connect lead, opportunity, pricing, approval, order and the work after sale. ](solution-revenue-operations.html)

[ Quote & approval Turn commercial rules into deterministic pricing, versioned policy and human gates. ](solution-commercial-operations.html)

[ Delivery & service Carry customer context into delivery obligations, support and the next commercial decision. ](solution-service-operations.html)

Desired jobs are not implementation claims. Each solution page separates the job and target workflow from the capabilities and evidence currently available.

Product proof

## Claims travel with their tests.

Every sentence on this page resolves against a ledger bound to the test suite. Follow any claim to the test that proves it — and to the boundary that travels with it.

C-03 Commercial policy is deterministic code, not a model's judgement: a renewal at or above the threshold stops and waits for a named human. ✓ workflow evidence

C-14 One command tells an agent what an application actually is — packages, capabilities, resources, actions, policies, providers — read from checked-in source, in a single deterministic JSON report. ✓ app-inspect evidence

C-17 SQLite is Node's built-in node:sqlite. PostgreSQL requires one pinned runtime driver, pg@8.23.0. There is no ORM, no query builder, no build step and no framework underneath your framework. ✓ no build step

sealed · measured at bffb1c2 · 2026-09-19 · 2196 tests, 0 failing

Open source. Self-host framework source. Deployments require an application-supplied authentication verifier and operational configuration. Passing tests does not certify production readiness.

[See product proof](proof.html)

[Inspect the full claims ledger](evidence.html)

## Describe the system. Let your agent build it. Keep the result.

[Start with `npm create accordo`](developers.html)

[Read the source](https://github.com/khaoss85/agent-crm)

---
Canonical: https://accordo.dev/
Implementation evidence: https://accordo.dev/claims.json
Build provenance: https://accordo.dev/version.json
