Skip to the playground
Kernel

Make every result
explain itself.

A typed request. Visible rules. A result you can inspect before you connect anything.

Run a local example
Request playground
Local sample runtime
InputJSON

Triage a support note

const result = kernel.classify(input);
ResultTyped output
Sample result ready
{
  "category": "billing",
  "priority": "high",
  "owner": "payments",
  "reference": "1042",
  "nextAction": "Review duplicate charges before replying."
}

Edit the input to change the result. This example runs entirely in your browser.

An error should explain
what to fix.

The request contract has an answer for missing data, wrong types, and valid input.

Request
{
  "subject": "Need a receipt"
}
Field validation

Name the missing field.

A generic failure leaves people guessing. The contract names the exact field and the smallest change that makes this request valid.

{
  "field": "message",
  "error": "Required",
  "recovery": "Add a non-empty message field."
}

The correction preserves the rest of the request.

Follow the request.
Understand the result.

One support note, four inspectable steps.

Return a small, inspectable result.

The final object includes category, priority, owner, reference, and a next action. No hidden account change or external request takes place.

Typed sample result ready
{
  "category": "billing",
  "priority": "high",
  "owner": "payments",
  "nextAction": "Review duplicate charges"
}
Timing values are illustrative.Complete. Select a step to inspect its intermediate state.

One contract.
Different work.

Choose a realistic input, inspect the useful result, then run it yourself.

A billing handoff

Turn a duplicate-charge note into an owned billing task.

Input
{
  "subject": "Checkout charged me twice",
  "message": "Urgent: two charges appeared for order 1042.",
  "customer": "Mina"
}
Result
{
  "category": "billing",
  "priority": "high",
  "owner": "payments",
  "reference": "1042",
  "nextAction": "Review duplicate charges before replying."
}

Examples use the same local rules as the playground.

A contract you can read.

Small methods. Explicit inputs. Predictable return shapes.

kernel.classify(input)

Route a support note using visible rules.

Parameters
FieldTypeDescription
subjectstringRequired. A concise support subject.
messagestringRequired. The complete support message.
customerstringOptional. A display name for context.

Returns Classification

Example
const result = kernel.classify({
  subject: "Checkout charged me twice",
  message: "Urgent: two charges for order 1042."
});

// result.owner === "payments"

Select a method to inspect its contract.

Know what happens
between input and output.

What changes when I edit an input?

The support example evaluates billing and urgency rules, retains an order reference, and chooses an owner. The invoice example extracts a reference, amount, currency, and date. The response and execution trace update from those actual values.

Are these results generated by an AI service?

No. The examples use deterministic local rules so you can inspect every state without an API key. The SDK is a design concept; replace its example rules with your own runtime when integrating the template.

How does the interface handle invalid data?

Invalid JSON and missing or incorrectly typed required fields name the issue beside the input. The most recent valid result is preserved. On a narrow screen, a validation error switches the bench to its Input view.

Can I inspect or stop the execution animation?

Yes. Select any trace step, pause the replay, or turn motion off. A reduced-motion preference shows the complete result directly. The displayed durations are illustrative, not measured service latency.

Start with one request.

Inspect the playground