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.
A single decisions.log() call captures inputs, evidence, and the action — and links the outcome whenever it lands.
View developer path For risk & complianceSearch any decision by subject, actor, or evidence. Surface anomalies, drift, and false-positive hot spots before regulators do.
View operator pathModels, 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.
The answer lives across three services, two log aggregators, and one analyst's notebook. Compliance asks. The clock starts.
A new rule shipped on Tuesday. By Thursday, false positives doubled. Your dashboards measure volume, not behavior.
Twelve rules fire on every transaction. One catches fraud. Eleven add latency, friction, and false positives — and you can't tell which is which.
One append-only event store. One query layer. One observability surface across rules engines, models, services, and human reviewers — domain-agnostic by design.
Capture what happened, monitor behavior in production, understand what drives outcomes, and improve safely with simulations, approvals, and audit trails.
Decision Logging creates a complete audit trail of every automated or human decision, including subject, evidence, actors, inputs, metadata, and linked outcomes.
Decision Observability tracks volume, action rates, evidence behavior, actor behavior, latency, drift, and anomalies before they become customer or compliance issues.
Decision Intelligence connects decisions to downstream outcomes so teams can score quality, compare rules and models, and find which evidence actually improves performance.
Decision Optimization turns findings into recommendations, simulations, controlled experiments, rollout decisions, and human-approved improvement workflows.
DecisionsLayer is generic by construction. These are the workloads where teams get to value first.
"Velocity_rule fired 12k times this week. 71% true positive — but on tier-3 merchants it drops to 28%."
"Pull the full evidence chain — document, screening hit, reviewer note — for the 14 escalations from yesterday."
"v5 approves 6% more loans with no change in 90-day default rate. Promote it."
"AML escalations on cross-border wires doubled overnight. The trigger was a sanctions list refresh."
"Listings auto-removed by trust_score < 0.4 — but conversion on the recovered set was 11%."
"Show me the evidence trail and adjuster decisions on the 9 claims escalated to legal this quarter."
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.
// 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" }, });
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.