TALTangerine Lattice · v2.0-α
Hands-on

Playground

Run a sample dataset through the engine in your browser. No login, no database — the analysis happens entirely client-side using the same deterministic engine that powers production runs.

α

In-browser engine — coming next iteration

The engine uses a Node-specific crypto module today; we'll swap to a browser-compatible hash and ship the playground shortly. In the meantime, the engine ships as an npm package you can run anywhere Node ≥ 20 runs.

Use the engine today

// Install
npm install @blackgrid/tal-engine

// Run an analysis
import { TAL, Dataset, HierarchyTree } from '@blackgrid/tal-engine';

const dataset = Dataset.fromRecords({
  tenantId: 'standalone:acme',
  records: [
    { numericFields: { revenue: 1200, jobs: 8  }, categoricalFields: { region: 'toronto',   service: 'lawn'  } },
    { numericFields: { revenue: 1450, jobs: 9  }, categoricalFields: { region: 'toronto',   service: 'lawn'  } },
    { numericFields: { revenue: 980,  jobs: 6  }, categoricalFields: { region: 'mississauga', service: 'lawn' } },
    // ... your records here
  ],
});

const tree = HierarchyTree.fromDefinition({
  tenantId: 'standalone:acme',
  domainKey: 'landscaping',
  nodes: [
    {
      key: 'region',
      children: [
        { key: 'toronto',     rules: [{ kind: 'categoricalMatch', field: 'region', value: 'toronto'     }] },
        { key: 'mississauga', rules: [{ kind: 'categoricalMatch', field: 'region', value: 'mississauga' }] },
      ],
    },
  ],
});

const tal = new TAL();
const result = await tal.run({
  tenantId: 'standalone:acme',
  dataset,
  trees: [tree],
});

console.log(result.findings.length, 'findings');
console.log(result.audit.runHash);

Every run produces a deterministic runHash. Re-running with the same inputs and the same engine version is guaranteed to produce the same hash.