← Back to projects

CriterionX

live

Universal decision engine for business-critical systems

open-sourcetypescriptdeveloper-tools
CriterionX

The Problem

Business logic is often scattered throughout codebases—conditionals in controllers, rules in services, validations everywhere. This makes systems hard to test, debug, and audit. When stakeholders ask "why did this decision happen?", there's no clear answer.

My Role

Creator & Maintainer — Designed and built the entire engine:

The Solution

A TypeScript-based decision engine that encodes business logic as pure, testable functions:

  1. Declarative Decisions — Define rules for risk levels, eligibility, discounts, etc.
  2. Explainable Results — Every decision includes a complete audit trail
  3. Profile-Driven — Different behaviors by region, tier, or context
  4. Framework Agnostic — Works with React, Express, Fastify, tRPC

Core Principles

PrincipleDescription
DeterministicIdentical inputs always produce identical outputs
Side-effect FreeNo I/O, database calls, or external dependencies
ExplainableDecisions include reasoning trails for compliance
TestablePure functions make unit testing trivial

Tech Stack

LayerTechnology
LanguageTypeScript (99%+)
ValidationZod schemas
ObservabilityOpenTelemetry
IntegrationsReact, Express, Fastify, tRPC
ToolingCLI, Testing utilities, MCP for LLMs

Monorepo Structure

@criterionx/core        # Core decision engine
@criterionx/server      # Server utilities
@criterionx/react       # React integration
@criterionx/express     # Express middleware
@criterionx/fastify     # Fastify plugin
@criterionx/trpc        # tRPC integration
@criterionx/cli         # Command-line tools
@criterionx/testing     # Test utilities

Use Cases

What I Learned