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

Catch damaged pieces with labels your inspectors already use

Superlinked gives your agent one API to score product photos against your own grade labels, so damaged pieces go to review before they ship.

Get started
VisA photo of a chewing gum pellet, labelled no defect
whole undamaged gum pellet
0.593
broken or damaged gum pellet
0.484

Passed VisA: normal

VisA photo of a chewing gum pellet, labelled chunk of gum missing
whole undamaged gum pellet
0.547
broken or damaged gum pellet
0.651

Flagged for review VisA: chunk of gum missing

Qwen/Qwen3-VL-Reranker-2B VisA photos, Amazon Science, CC BY 4.0

No broken piece got through, and no whole piece was flagged

View evidence
VisA photo of a cashew, labelled no defect
VisA: normal
whole undamaged cashew
0.577
broken or damaged cashew
0.531

Passed

VisA photo of a cashew, labelled corner or edge breakage
VisA: corner or edge breakage
whole undamaged cashew
0.547
broken or damaged cashew
0.637

Flagged

VisA photo of a fryum wheel, labelled no defect
VisA: normal
whole undamaged fryum wheel
0.562
broken or damaged fryum wheel
0.562

Tie

VisA photo of a fryum wheel, labelled corner or edge breakage
VisA: corner or edge breakage
whole undamaged fryum wheel
0.593
broken or damaged fryum wheel
0.719

Flagged

VisA photo of a pipe fryum snack tube, labelled no defect
VisA: normal
whole undamaged snack tube
0.500
broken or damaged snack tube
0.453

Passed

VisA photo of a pipe fryum snack tube, labelled corner and edge breakage
VisA: corner and edge breakage
whole undamaged snack tube
0.516
broken or damaged snack tube
0.547

Flagged

VisA photo of a chewing gum pellet, labelled no defect
VisA: normal
whole undamaged gum pellet
0.593
broken or damaged gum pellet
0.484

Passed

VisA photo of a chewing gum pellet, labelled chunk of gum missing
VisA: chunk of gum missing
whole undamaged gum pellet
0.547
broken or damaged gum pellet
0.651

Flagged

The board shows one pair per product. Across all 16 recorded photos the reranker flagged 8 of 8 damaged pieces and passed 7 of 8 whole ones, scoring 0.562 on both labels for the fryum wheel it tied on. SigLIP 2 base, the cheaper model, sorted 12 of 16: it passed 2 damaged pieces and flagged 2 whole ones.

Grade your own photos with your own labels, no training set

View on GitHub
from pathlib import Path
from sie_sdk import SIEClient
client = SIEClient(
api_key="API keysk-sie-…",
base_url="https://api.superlinked.com",
)
labels = [
"labelwhole undamaged cashew",
"labelbroken or damaged cashew",
]
image = {"data": Path(imagecashew-damaged-014.jpgbrowse).read_bytes(), "format": "jpeg"}
items = [{"id": str(i), "text": label} for i, label in enumerate(labels)]
ranked = client.score("modelQwen/Qwen3-VL-Reranker-2B", {"images": [image]}, items)
print([(labels[int(row["item_id"])], row["score"]) for row in ranked["scores"]])
import { readFile } from 'node:fs/promises';
import { SIEClient } from '@superlinked/sie-sdk';

const client = new SIEClient('https://api.superlinked.com', {
  apiKey: 'sk-sie-…',
});

const labels = [
  "whole undamaged cashew",
  "broken or damaged cashew",
];
const image = await readFile("cashew-damaged-014.jpg");
const items = labels.map((text, i) => ({ id: String(i), text }));
const ranked = await client.score('Qwen/Qwen3-VL-Reranker-2B', { images: [image] }, items);
console.log(ranked.scores.map(({ itemId, score }) => ({ label: labels[Number(itemId)], score })));
image_bytes=$(base64 < 'cashew-damaged-014.jpg' | tr -d '\n')
curl https://api.superlinked.com/v1/score/Qwen%2FQwen3-VL-Reranker-2B \
  -H "Authorization: Bearer sk-sie-…" \
  -H "Content-Type: application/json" \
  -d "{\"query\":{\"images\":[{\"data\":\"$image_bytes\",\"format\":\"jpeg\"}]},\"items\":[{\"id\":\"0\",\"text\":\"whole undamaged cashew\"},{\"id\":\"1\",\"text\":\"broken or damaged cashew\"}]}"
Build the "Image classify" capability into my app using the Superlinked Inference Engine (SIE).

Context
- SIE is an OpenAI-style inference API. Python SDK: `from sie_sdk import SIEClient`; TypeScript: `@superlinked/sie-sdk`.
- Base URL: https://api.superlinked.com (or my regional endpoint). Auth: Bearer key from env `SIE_API_KEY` (never hard-code it).
- Model: Qwen/Qwen3-VL-Reranker-2B (SIE primitive: /score). Keep the model id configurable.

Task
- Input: an uploaded image plus candidate labels.
- Behaviour: return the candidate image labels ranked by similarity
- Score the image against the candidate-label items, then rank labels by score.

Deliverables
- A typed client wrapper, an application-level function for this task, error handling for timeouts/empty input, and unit tests with a stubbed client.
- Wire it into my existing stack (ask me which framework if unclear) and add a short usage example.
Output
Source cashew-damaged-014.jpg
source · cashew-damaged-014.jpg
broken or damaged cashew0.637
whole undamaged cashew0.547
Top label broken or damaged cashew at 0.637 across 2 candidates
  • No image-specific training data needed

Image classification quality and latency

PRICE
$ / 1k images $ / 1M input tokens $ / 1M pairs
$0.0143 SIE SigLIP2 Base
$0.149 SIE Qwen3 VL Reranker 2B
AWS Rekognition $1
Google Vision Labels $1.5
Google Vision Objects $2.25
$0.023 SIE SigLIP2 Base
OpenAI GPT-5.4 mini $0.75
SIE Qwen3 VL Reranker 2B $222.79
QUALITY
Accuracy
SIE Qwen3 VL Reranker 2B 0.91
0.89
0.88
SIE SigLIP2 Base 0.86
0.83
0.82
LATENCY
p50 ms
35ms SIE Qwen3 VL Reranker 2B
45ms
55ms
SIE SigLIP2 Base 99ms
120ms
135ms

Deploy your way

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/deploymentDeploy SIE to our GCP project with the superlinked/sie/google Terraform module. Docs: superlinked.com/docs/deploymentDeploy SIE to our Azure AKS cluster via helm install. Requirements: superlinked.com/docs/deployment
Deploy guide

Run locally

Run the same models on your own machine.

  • Runs on NVIDIA GPU or Apple Silicon
  • One command, no Docker or cluster
  • All 100+ Cloud models, fully offline
  • Same SDK and IDs, no code changes
pip install "sie-server[local]" && sie-server servepip install "sie-server[local]" && sie-server serve --device cuda
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.