Why did we open-source our inference engine? Read the post

Give every workflow decision its own scored answer

SIE answers your named questions together, with a score for each choice or yes-or-no check. Run the open model beside your data; your application decides what happens next.

Invoice review · INV-2026-6576
Vendor
Kestrel Supply
Invoice total
$11,087
Purchase order
$11,087
Delivery
100 units, accepted
Prior invoice IDs
INV-2026-6576INV-2026-5581INV-2026-5526
Recorded SIE answers
Matches the order and deliveryYes 99.8% model score
Previously submitted invoiceYes 94.6% model score
Your application rule
duplicate = yesReview before paying
Name the checks your workflow needs

One request, several answers

Keep the next action in your app

Read each named score, then apply your review and action rules.

Check the conditions behind a single label

Archived source · CVE-2023-6826

The E2Pdf plugin for WordPress is vulnerable to arbitrary file uploads due to insufficient file type validation on the 'import_action' function in versions up to, and including, 1.20.25. This makes it possible for authenticated attackers with a role that the administrator previously granted access to the plugin, to upload arbitrary files on the affected site's server which may make remote code execution possible.

Read the NVD record
Separate named answers
Attack vector
✓ remotely over the network
Can the attacker exploit it without a login?
✓ No

Recorded GLiClass Large answers. Network reachability and account access are independent checks.

See accuracy for each named check

Correct answers on 160 CVE records
% higher is better
Attack vector
Attack vector 91.9%
Weakness class
Weakness class 88.8%
Attacker needs no login
Attacker needs no login 71.9%
Every check on one record
Every check on one record 60.0%
160 held-out records

Recorded 24–25 September 2026. GLiClass Large v1.0, three named questions per December 2023 CVE record. Each record ran once.

Every check was right on 60.0% of complete records. The 2026 invoice is a separate workflow illustration.

Name the checks, read each answer

Record + named question groups
result = client.extract(
    "knowledgator/gliclass-large-v1.0",
    {"text": json.dumps({
        "invoice": {"id": "INV-2026-6576",
            "total_usd": 11087, ...},
        "purchase_order": {"total_usd": 11087, ...},
        "vendor_history": {"prior_invoice_ids": [
            "INV-2026-6576", ...]},
        ...
    })},
    options={"label_groups": {
        "matches_order": [...],
        "duplicate": [...],
        ...
    }, "group_encoding": "separate"},
)

Abbreviated saved request. The complete request includes every invoice field and all five question groups.

View complete request
import json
from sie_sdk import SIEClient

record = "{\"delivery\": {\"condition\": \"accepted\", \"date\": \"2026-03-07\", \"received_qty\": 100}, \"invoice\": {\"currency\": \"USD\", \"id\": \"INV-2026-6576\", \"lines\": [{\"qty\": 100, \"sku\": \"SKU-286\", \"total_usd\": 11087.0, \"unit_usd\": 110.87}], \"total_usd\": 11087.0, \"vendor\": \"Kestrel Supply\"}, \"payment\": {\"days_until_due\": 44, \"discount_expires_in_days\": null, \"early_payment_discount_pct\": null, \"status\": \"scheduled\", \"terms\": \"net 30\"}, \"purchase_order\": {\"freight_terms\": \"freight prepaid by vendor, not separately billable\", \"id\": \"PO-8988\", \"lines\": [{\"qty\": 100, \"unit_usd\": 110.87}], \"total_usd\": 11087.0}, \"vendor_history\": {\"disputes_12m\": 0, \"invoices_12m\": 52, \"prior_invoice_ids\": [\"INV-2026-6576\", \"INV-2026-5581\", \"INV-2026-5526\"]}}"
questions = json.loads("{\"discrepancy_severity\":[\"None: everything reconciles.\",\"Trivial: rounding or a cosmetic difference.\",\"Moderate: a real difference worth confirming.\",\"Material: a large or unexplained difference.\"],\"disposition\":[\"approve: Matches the order and delivery; approve for payment.\",\"hold: Something needs confirming before payment; hold pending clarification.\",\"manual review: A human in finance must review the discrepancy.\",\"reject: Should not be paid: duplicate, unauthorised or materially wrong.\"],\"duplicate\":[\"This invoice appears to duplicate an invoice already submitted.\",\"Not the case: this invoice appears to duplicate an invoice already submitted.\"],\"matches_order\":[\"Line items, quantities and amounts reconcile.\",\"There is a discrepancy against the order or the delivery.\"],\"urgency\":[\"No time pressure; can wait indefinitely.\",\"Routine; handle within the normal queue.\",\"Elevated; should be handled within the same week.\",\"Critical; requires action within the same day.\"]}")
with SIEClient("http://localhost:8080") as client:
    result = client.extract(
        "knowledgator/gliclass-large-v1.0", {"text": record},
        options={
            "label_groups": questions,
            "group_encoding": "separate",
            "overflow_policy": "truncate_text",
        },
    )
print(result["data"])
Output
{
  "matches_order": {
    "answer": true,
    "model_score": 0.9976
  },
  "duplicate": {
    "answer": true,
    "model_score": 0.9462
  }
}
  • Two shown answers from the recorded five-question request
  • Your app applies its own review and action rules

Switch to SIE in 5 minutes

reply = anthropic.messages.create(
    model="claude-sonnet-5", max_tokens=400,
    system="Answer each named question about the record.",
    messages=[{"role": "user", "content":
        json.dumps({"record": record, "questions": questions})}],
)
answers = json.loads(reply.content[0].text)
SIE
# Keep the same record and named question groups.
result = client.extract(
    "knowledgator/gliclass-large-v1.0",
    {"text": record},
    options={
        "label_groups": questions,
        "group_encoding": "separate",
        "overflow_policy": "truncate_text",
    },
)
answers = result["data"]
Source attribution and license

This product uses data from the NVD API but is not endorsed or certified by the NVD.

Copyright (c) 1999-2026, The MITRE Corporation. CVE is a trademark and the CVE logo is a registered trademark of The MITRE Corporation.

MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. (CVE Program Terms of Use, https://www.cve.org/Legal/TermsOfUse)

Keep your records and decisions in your cloud

Self-host with K8s

Easy & scalable deployment in your own cloud.

  • Terraform to your cloud in minutes
  • Apache-2.0, same engine as Cloud
  • Scales to zero, no bill between jobs
  • Per-tenant pools, no noisy neighbors
Agent prompt
Deploy SIE to our AWS account with the superlinked/sie/aws Terraform module. Docs: superlinked.com/docs/deployment Serve knowledgator/gliclass-large-v1.0 using the public model configurations.Deploy SIE to our GCP project with the superlinked/sie/google Terraform module. Docs: superlinked.com/docs/deployment Serve knowledgator/gliclass-large-v1.0 using the public model configurations.Deploy SIE to our Azure AKS cluster via helm install. Requirements: superlinked.com/docs/deployment Serve knowledgator/gliclass-large-v1.0 using the public model configurations.
Deploy guide

Run locally

Score named checks on your NVIDIA GPU.

  • NVIDIA GPU
  • One container, no cluster
  • GLiClass Large v1.0, fully offline
  • Same SDK and IDs, no code changes
docker run --gpus all -p 8080:8080 \ ghcr.io/superlinked/sie-server:v0.9.0-cuda12-default \ serve --host 0.0.0.0 --port 8080 \ --models knowledgator/gliclass-large-v1.0
Quickstart

Contact us

Tell us about your use case and we'll get back to you shortly.

Apply for an inference grant

Free capacity on our hosted cluster for selected projects. Tell us what you run and we reply by email.