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.