A filter box that reads
plain English.
A 182 KB model that runs in the browser. No API calls.
overdueStatus = overdue and balance over 1kBalance > 1000 , top 5First 5 by balanceSort: Balance ↓
| Invoice | Client | ↓ Balance | Days late | Status |
|---|---|---|---|---|
| INV-1048 | Northstar Studio | 2400 | 18 | overdue |
| INV-1051 | Fieldwork Co | 1750 | 12 | overdue |
2 of 8 rows
0.79 ms
0.99
What it reads
- balance over 1kBalance > 1000
- days late between 10 and 40Days late ≥ 10, Days late ≤ 40
- overdue or paidStatus = overdue or paid
- clients except fieldworkClient ≠ Fieldwork Co
- top 3First 3by balanceSort: Balance ↓
The whole model
- 182 KB184k parameters
- 0.39 msper parse, 28 ms at 50,000 rows
- 0network calls
- Apache-2.0code and weights
When it is unsure
northwind or lateInvoice contains northwind?
8 of 8 rows
0.00
- 83%scored 0.8 or higherScored 0.8 or higher
- 98.2%of those rightOf those right
- 92.8%right on 870 test queriesRight on 870 test queries
Use it
import { load } from "seula"; const seula = await load(); const invoices = seula.table(rows); const result = invoices.parse( "overdue and balance over 1k, top 5 by balance" ); invoices.apply(result); // the 2 rows that pass
import { load } from "seula"; const seula = await load(); const invoices = seula.table(rows); const result = invoices.parse( "overdue and balance over 1k, " + "top 5 by balance" ); // the 2 rows that pass invoices.apply(result);
result
{
conditions: [
{ column: "status", type: "text", op: "=", value: "overdue" },
{ column: "balance", type: "number", op: ">", value: 1000 }
],
sort: { column: "balance", dir: "desc" },
limit: 5,
confidence: 0.99
}
{
conditions: [
{ column: "status",
type: "text", op: "=",
value: "overdue" },
{ column: "balance",
type: "number", op: ">",
value: 1000 }
],
sort: { column: "balance",
dir: "desc" },
limit: 5,
confidence: 0.99
}What it does not do
- English only
- One table
- No totals
- No nested logic