Capture, monitor, understand, and improve decisions

Every automated decision,
recorded, observed, and explained.

DecisionsLayer gives teams a single system of record for how decisions are made, how they behave in production, which ones produce good outcomes, and where they can be improved safely.

Start free Read the SDK docs K to search docs and APIs
The problem

Your decision systems are black boxes. The cost compounds quietly.

Models, rules engines, queues, and humans all decide. None of them agree on a format, a store, or a vocabulary — so when something goes sideways, every team starts at zero.

01 / Audit

"Why did we reject this customer?"

The answer lives across three services, two log aggregators, and one analyst's notebook. Compliance asks. The clock starts.

→ reconstructed manually, ~6 hrs avg
02 / Drift

Reject rates moved 17%. Nobody noticed for nine days.

A new rule shipped on Tuesday. By Thursday, false positives doubled. Your dashboards measure volume, not behavior.

→ detected by chargebacks, not by you
03 / Outcomes

No one knows which evidence actually works.

Twelve rules fire on every transaction. One catches fraud. Eleven add latency, friction, and false positives — and you can't tell which is which.

→ effectiveness unknown, retired never
The product

A control tower for every decision your systems make.

One append-only event store. One query layer. One observability surface across rules engines, models, services, and human reviewers — domain-agnostic by design.

app.decisionslayer.com / observability

Decision Observability

last 24h tenant: meridian-prod ● live
Decisions 428,103 ↑ 4.2% vs prior
Reject rate 11.7% ↑ 38% anomaly
Outcome lag p95 2.4d — stable
Open alerts 3 2 critical
Decisions per hour · by action
1H 24H 7D 30D
anomaly · +38%
approve reject
Top evidence keys by volume
velocity_rule12,420
device_risk_high9,981
geo_mismatch7,803
amount_threshold6,221
card_age_low5,140
aml_pep_match3,202
kyc_doc_blur2,418
Recent decisions · live ● streaming
14:32:08transaction_reviewtxn_8a31c9…reject— pending
14:32:04kyc_checkcust_aa10b…approve+ verified
14:32:02aml_screeningacct_3f120…review— queued
14:31:58underwritingapp_7c9e44…approve+ funded
14:31:55transaction_reviewtxn_92f0aa…reject— chargeback
14:31:51refund_requestorder_e44c…approve+ resolved
The platform

From decision audit trail to safer optimization.

Capture what happened, monitor behavior in production, understand what drives outcomes, and improve safely with simulations, approvals, and audit trails.

Available PHASE 01

Capture every decision

Decision Logging creates a complete audit trail of every automated or human decision, including subject, evidence, actors, inputs, metadata, and linked outcomes.

  • Ingestion API + SDK
  • Subject timeline
  • Decision search
  • Multi-tenant isolation
Available PHASE 02

Monitor decision behavior

Decision Observability tracks volume, action rates, evidence behavior, actor behavior, latency, drift, and anomalies before they become customer or compliance issues.

  • Time-series monitoring
  • Anomaly detection
  • Alert rules & events
  • Latency analytics
Available PHASE 03

Understand what works

Decision Intelligence connects decisions to downstream outcomes so teams can score quality, compare rules and models, and find which evidence actually improves performance.

  • Quality scoring
  • Actor / version compare
  • Evidence correlation
  • Pattern discovery
Beta PHASE 04

Improve safely

Decision Optimization turns findings into recommendations, simulations, controlled experiments, rollout decisions, and human-approved improvement workflows.

  • Optimization opportunities
  • What-if simulations
  • Champion-challenger experiments
  • Impact tracking
Use cases

Domain-agnostic. Fintech-tested.

DecisionsLayer is generic by construction. These are the workloads where teams get to value first.

Fraud & payments

Catch the rule that's over-rejecting.

"Velocity_rule fired 12k times this week. 71% true positive — but on tier-3 merchants it drops to 28%."

FP reduction−34%
RCA time~14 min
KYC / onboarding

Prove every denial, instantly.

"Pull the full evidence chain — document, screening hit, reviewer note — for the 14 escalations from yesterday."

Audit prep8d → 1d
Coverage100%
Underwriting

Compare model v4 to v5, in production.

"v5 approves 6% more loans with no change in 90-day default rate. Promote it."

Decision lift+6.2%
Default Δ±0.1pp
AML & compliance

Watch escalation rates drift in real time.

"AML escalations on cross-border wires doubled overnight. The trigger was a sanctions list refresh."

MTTD< 12 min
SAR-readyalways
Marketplaces

Find the policy that's hurting GMV.

"Listings auto-removed by trust_score < 0.4 — but conversion on the recovered set was 11%."

GMV recovered+$2.1M/mo
Policies tuned23
Insurance

Explain every claims verdict.

"Show me the evidence trail and adjuster decisions on the 9 claims escalated to legal this quarter."

Dispute prep−72%
Defensibleend-to-end
For developers

One ingestion call. Append-only and idempotent.

The SDK is a thin integration layer: validate, serialize, send, retry. No local rules engine, no policy DSL, no surprises. The client wraps ingestion, workspace configuration, observability, intelligence, and optimization APIs.

  • Idempotency keys
  • Retries with backoff
  • Structured errors
  • Correlation IDs
  • Workspace config
  • Outcome linking
Read the docs → npm i @decisionslayer/ingestion-ts
// Log a decision the moment it happens.
import { createDecisionIngestionClient } from "@decisionslayer/ingestion-ts";

const client = createDecisionIngestionClient({
  baseUrl: "https://api.decisionslayer.com",
  apiKey: process.env.DL_KEY,
});

const decision = await client.decisions.log({
  external_decision_id: "dec-ext-001",
  decision_type: "transaction_review",
  subject: { type: "transaction", id: "txn_123" },
  decision: { action: "reject", status: "final" },
  actors:   [{ type: "rule_engine", id: "fraud-rules", version: "v12" }],
  evidence: [{ type: "rule_hit", key: "velocity_rule", value: "triggered" }],
  inputs:   { amount: 420, currency: "USD" },
  metadata: { customer_id: "cust_77" },
  occurred_at: new Date().toISOString(),
});

// Later — when the outcome lands — link it.
await client.outcomes.log(decision.id, {
  outcome_type:  "fraud_resolution",
  outcome_value: "true_positive",
  payload: { chargeback_id: "cb_001" },
});

Decision infrastructure for serious companies.

If your business runs on automated decisions, you need a single source of truth for what happened, why it happened, what worked, and what can be improved safely.

Email/password login · Workspace roles · API key auth