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

Your shelf-replenishment agent

Review the shelf, identify the facing and return evidence.

Shelf photo Photo 042 · pharmacy aisle
Stock check Check Panadol Children 5–12 Years Elixir, 100 mL

Your store context

The product and inventory records your agent checks before it acts.

PLAN Planogram Expected facings
LABEL Shelf labels SKU and price
CATALOG Product catalog Pack and variant
STOCK Inventory feed Store and backroom
Browse all tasks
from pathlib import Path
from sie_sdk import SIEClient
​
client = SIEClient(api_key="API keysk-sie-…")
​
image = {"data": Path(imagepharmacy-shelf.jpgbrowse).read_bytes(), "format": "jpeg"}
result = client.extract(
"modelIDEA-Research/grounding-dino-base",
{"images": [image]},
labels=[
"labelempty shelf space",
"labelout of stock sign",
"labelprice tag",
],
)
for obj in result["objects"]:
print(obj["label"], obj["score"], obj["bbox"])
import { readFile } from 'node:fs/promises';
import { SIEClient } from '@superlinked/sie-sdk';

const client = new SIEClient(undefined, { apiKey: 'sk-sie-…' });

const image = await readFile("pharmacy-shelf.jpg");
const result = await client.extract(
  'IDEA-Research/grounding-dino-base',
  { images: [image] },
  { labels: ["empty shelf space","out of stock sign","price tag"] },
);
console.log(result.objects);
images_bytes=$(base64 < 'pharmacy-shelf.jpg' | tr -d '\n')
curl https://api.superlinked.com/v1/extract/IDEA-Research%2Fgrounding-dino-base \
  -H "Authorization: Bearer sk-sie-…" \
  -H "Content-Type: application/json" \
  -d "{\"items\":[{\"images\":[{\"data\":\"$images_bytes\",\"format\":\"jpeg\"}]}],\"params\":{\"labels\":[\"empty shelf space\",\"out of stock sign\",\"price tag\"]}}"
Build the "Detect" 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: IDEA-Research/grounding-dino-base (SIE primitive: /extract). Keep the model id configurable.

Task
- Input: an uploaded image plus the object labels to find.
- Behaviour: return the named objects with confidence scores and bounding boxes
- Call the selected SIE primitive once per request and map the response into your domain type.

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.
from pathlib import Path
from sie_sdk import SIEClient
​
client = SIEClient(api_key="API keysk-sie-…")
​
image = {"data": Path(imagepharmacy-oos-sign.jpgbrowse).read_bytes(), "format": "jpeg"}
result = client.extract(
"modellightonai/LightOnOCR-2-1B",
{"images": [image]},
)
print(result["entities"][0]["text"])
import { readFile } from 'node:fs/promises';
import { SIEClient } from '@superlinked/sie-sdk';

const client = new SIEClient(undefined, { apiKey: 'sk-sie-…' });

const image = await readFile("pharmacy-oos-sign.jpg");
const result = await client.extract(
  'lightonai/LightOnOCR-2-1B',
  { images: [image] },
  { labels: [] },
);
console.log(result.entities[0].text);
images_bytes=$(base64 < 'pharmacy-oos-sign.jpg' | tr -d '\n')
curl https://api.superlinked.com/v1/extract/lightonai%2FLightOnOCR-2-1B \
  -H "Authorization: Bearer sk-sie-…" \
  -H "Content-Type: application/json" \
  -d "{\"items\":[{\"images\":[{\"data\":\"$images_bytes\",\"format\":\"jpeg\"}]}]}"
Build the "OCR" 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: lightonai/LightOnOCR-2-1B (SIE primitive: /extract). Keep the model id configurable.

Task
- Input: an uploaded image containing text.
- Behaviour: return the text visible in the image
- Call the selected SIE primitive once per request and map the response into your domain type.

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
pharmacy-shelf.jpg
empty shelf space0.26[2043, 2137, 2666, 2540]
1 objects with bounding boxes
  • Finds the objects you name
  • Returns a confidence score for each match
Output
Source pharmacy-oos-sign.jpg
source · pharmacy-oos-sign.jpg

I am temporarily

out-of-stock

from our supplier

Please ask our friendly staff

for a substitute.

[name redacted]

  • Reads text directly from images and photos

Compare models for this task

PRICE
$ / 1,000 photos ↓
$0.25 SIE SAM 3
$0.76 Anthropic Claude Haiku 5.5 $0.76 Claude Haiku 5.5
$2.95 OpenAI GPT-6 Luna high $2.95 GPT-6 Luna high
$13.27 Anthropic Claude Sonnet 5.5 $13.27 Claude Sonnet 5.5
OpenAI GPT-6.1 Sol high $59.98 GPT-6.1 Sol high $59.98
QUALITY
Objects boxed correctly · F1 ↑
SIE SAM 3 0.62
GPT-6.1 Sol high 0.60
Claude Sonnet 5.5 0.39 Claude Sonnet 5.5 0.39
GPT-6 Luna high 0.36 0.36 GPT-6 Luna high GPT-6 Luna high 0.36
Claude Haiku 5.5 0.31 0.31 Claude Haiku 5.5
LATENCY
median ↓
83ms SIE SAM 3
4.1s Anthropic Claude Haiku 5.5 4.1s Claude Haiku 5.5
5.6s Anthropic Claude Sonnet 5.5 5.6s Claude Sonnet 5.5
35.3s OpenAI GPT-6 Luna high 35.3s GPT-6 Luna high
OpenAI GPT-6.1 Sol high 80.7s GPT-6.1 Sol high 80.7s
PRICE
$ / 1,000 photos ↓
$0.25 SIE GLM-OCR
$0.31 Claude Haiku 5.5
$2.39 GPT-6 Luna (max reasoning) GPT-6 Luna (max reasoning) $2.39
Mistral OCR 4.1 $4.00 Mistral OCR 4.1 $4.00
Claude Sonnet 5.5 $6.40
GPT-6.1 Sol (low reasoning) $6.64
QUALITY
Read correctly · 372 photos ↑
OpenAI GPT-6.1 Sol (low reasoning) 0.782 GPT-6.1 Sol (low reasoning) 0.782
Anthropic Claude Sonnet 5.5 0.780 Claude Sonnet 5.5 0.780
Anthropic Claude Haiku 5.5 0.723 Claude Haiku 5.5 0.723
SIE GLM-OCR 0.710
OpenAI GPT-6 Luna (max reasoning) 0.661 OpenAI GPT-6 Luna (max reasoning) 0.661 GPT-6 Luna (max reasoning) 0.661
Mistral OCR 4.1 0.621

Your agent identifies the SKU behind the shelf gap

View on GitHub
Localize the empty facing Grounding DINO base
Pharmacy shelf with an empty Panadol facing, an out-of-stock sign and a shelf label
Read the sign and label LightOnOCR-2-1B
Close crop of the pharmacy out-of-stock sign
I am temporarily out-of-stock from our supplier
Close crop of the Panadol shelf label below the empty facing
Panadol Child · 5-12Yrs Elixir 100ml · 101760 · 10⁹⁹
Your agent returns the stock check
Product
Panadol Children 5–12 Years Elixir, 100 mL
SKU
101760
State
Supplier stockout
Evidence
Detection box + OCR crops
Next check
Verify on-hand stock and replenishment ETA

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 Serverless
  • 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.Deploy SIE to our GCP project with the superlinked/sie/google Terraform module. Docs: superlinked.com/docs/deployment.Deploy SIE to our Azure subscription with the superlinked/sie/azure Terraform module. Docs: 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+ Serverless 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.