Build e-commerce agents with open source models
Superlinked gives your agent one API to read listings, search product images, classify catalog paths and return normalized attributes.
Your catalog agent
Turn listing copy and product images into normalized catalog fields.
Your product catalog
The listing fields and category paths the agent can compare.
from pathlib import Pathfrom sie_sdk import SIEClientclient = SIEClient( api_key="API keysk-sie-…", base_url="https://api.superlinked.com",)query = "queryProduct title: Karcher - S4 Twin sweeper
Product description: The Kärcher S 4 Twin sweeper makes light work of all your sweeping tasks, from petals in spring to autumn leaves and winter grit."documents = [ "Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Sweepers", "Home & Garden > Household Supplies > Household Cleaning Supplies > Carpet Sweepers", "Home & Garden > Lawn & Garden > Outdoor Power Equipment > Power Sweepers", "Home & Garden > Household Appliances > Floor & Steam Cleaners > Floor Scrubbers > Walk-Behind Floor Scrubbers",]image = {"data": Path(fileJPGkarcher-s4-twin-sweeper.jpgbrowse).read_bytes(), "format": "jpeg"}query_item = {"text": query, "images": [image]}items = [{"id": str(i), "text": d} for i, d in enumerate(documents)]ranked = client.score("modelQwen/Qwen3-VL-Reranker-2B", query_item, items, instruction="Rank Shopify taxonomy paths by which path should categorize the product listing for an online store. Use both the product image and listing text.")for r in ranked["scores"]: print(r["score"], documents[int(r["item_id"])])import { readFile } from 'node:fs/promises';
import { SIEClient } from '@superlinked/sie-sdk';
const client = new SIEClient('https://api.superlinked.com', {
apiKey: 'sk-sie-…',
});
const query = "Product title: Karcher - S4 Twin sweeper\nProduct description: The Kärcher S 4 Twin sweeper makes light work of all your sweeping tasks, from petals in spring to autumn leaves and winter grit.";
const documents = [
"Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Sweepers",
"Home & Garden > Household Supplies > Household Cleaning Supplies > Carpet Sweepers",
"Home & Garden > Lawn & Garden > Outdoor Power Equipment > Power Sweepers",
"Home & Garden > Household Appliances > Floor & Steam Cleaners > Floor Scrubbers > Walk-Behind Floor Scrubbers",
];
const image = await readFile("karcher-s4-twin-sweeper.jpg");
const queryItem = { text: query, images: [image] };
const items = documents.map((text, i) => ({ id: String(i), text }));
const ranked = await client.score('Qwen/Qwen3-VL-Reranker-2B', queryItem, items,
{ instruction: "Rank Shopify taxonomy paths by which path should categorize the product listing for an online store. Use both the product image and listing text." } as never);
console.log(ranked.scores.map(({ itemId, score }) => ({ document: documents[Number(itemId)], score })));query_image=$(base64 < 'karcher-s4-twin-sweeper.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\":{\"text\":\"Product title: Karcher - S4 Twin sweeper\\nProduct description: The Kärcher S 4 Twin sweeper makes light work of all your sweeping tasks, from petals in spring to autumn leaves and winter grit.\",\"images\":[{\"data\":\"$query_image\",\"format\":\"jpeg\"}]},\"items\":[{\"id\":\"0\",\"text\":\"Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Sweepers\"},{\"id\":\"1\",\"text\":\"Home & Garden > Household Supplies > Household Cleaning Supplies > Carpet Sweepers\"},{\"id\":\"2\",\"text\":\"Home & Garden > Lawn & Garden > Outdoor Power Equipment > Power Sweepers\"},{\"id\":\"3\",\"text\":\"Home & Garden > Household Appliances > Floor & Steam Cleaners > Floor Scrubbers > Walk-Behind Floor Scrubbers\"}],\"instruction\":\"Rank Shopify taxonomy paths by which path should categorize the product listing for an online store. Use both the product image and listing text.\"}"Build the "Rerank" 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: a query string plus a list of candidate documents.
- Behaviour: reorder the candidates by true relevance to the query using the cross-encoder
- 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.
import numpy as npfrom sie_sdk import SIEClientclient = SIEClient( api_key="sk-sie-…", base_url="https://api.superlinked.com",)query = "queryProduct title: Airplane Piggy Bank
Product description: The sweetest gift!"documents = [ "document 1Toys & Games > Toys > Flying Toys", "document 2Home & Garden > Decor > Piggy Banks & Money Jars", "document 3Toys & Games > Toys > Flying Toys > Model Aircrafts", "document 4Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Pottery & Sculpting Materials > Clay & Modeling Dough > Clay > Sculpting Clay", "document 5Toys & Games > Toys > Beach & Sand Toys > Sand Castle Molds", "document 6Hardware > Tools > Dollies & Hand Trucks", "document 7Home & Garden > Decor > Piggy Banks & Money Jars > Piggy Banks", "document 8Toys & Games > Toys > Play Vehicles > Toy Airplanes",]items = [{"text": query}, *({"text": d} for d in documents)]vecs = client.encode("modelBAAI/bge-m3", items)mat = np.array([v["dense"] for v in vecs])mat = mat / np.linalg.norm(mat, axis=1, keepdims=True)scores = mat[1:] @ mat[0] # cosine similarity to the queryfor i in np.argsort(scores)[::-1]: print(f"{scores[i]:.3f} {documents[i]}")import { SIEClient } from '@superlinked/sie-sdk';
const client = new SIEClient('https://api.superlinked.com', {
apiKey: 'sk-sie-…',
});
const query = "Product title: Airplane Piggy Bank\nProduct description: The sweetest gift!";
const documents = [
"Toys & Games > Toys > Flying Toys",
"Home & Garden > Decor > Piggy Banks & Money Jars",
"Toys & Games > Toys > Flying Toys > Model Aircrafts",
"Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Pottery & Sculpting Materials > Clay & Modeling Dough > Clay > Sculpting Clay",
"Toys & Games > Toys > Beach & Sand Toys > Sand Castle Molds",
"Hardware > Tools > Dollies & Hand Trucks",
"Home & Garden > Decor > Piggy Banks & Money Jars > Piggy Banks",
"Toys & Games > Toys > Play Vehicles > Toy Airplanes",
];
const items = [{ text: query }, ...documents.map((text) => ({ text }))];
const vecs = await client.encode('BAAI/bge-m3', items);
const [q, ...d] = vecs.map((v) => v.dense);
const cosine = (a: Float32Array, b: Float32Array) => {
const dot = a.reduce((s, x, i) => s + x * b[i], 0);
return dot / (Math.hypot(...a) * Math.hypot(...b));
};
const ranked = documents
.map((doc, i) => ({ doc, score: cosine(q!, d[i]!) }))
.sort((a, b) => b.score - a.score);
console.log(ranked);# Encode the query + candidates in one batch, then rank by cosine.
curl https://api.superlinked.com/v1/encode/BAAI%2Fbge-m3 \
-H "Authorization: Bearer sk-sie-…" \
-H "Content-Type: application/json" \
-d "{\"items\":[{\"text\":\"Product title: Airplane Piggy Bank\\nProduct description: The sweetest gift!\"},{\"text\":\"Toys & Games > Toys > Flying Toys\"},{\"text\":\"Home & Garden > Decor > Piggy Banks & Money Jars\"},{\"text\":\"Toys & Games > Toys > Flying Toys > Model Aircrafts\"},{\"text\":\"Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Pottery & Sculpting Materials > Clay & Modeling Dough > Clay > Sculpting Clay\"},{\"text\":\"Toys & Games > Toys > Beach & Sand Toys > Sand Castle Molds\"},{\"text\":\"Hardware > Tools > Dollies & Hand Trucks\"},{\"text\":\"Home & Garden > Decor > Piggy Banks & Money Jars > Piggy Banks\"},{\"text\":\"Toys & Games > Toys > Play Vehicles > Toy Airplanes\"}],\"params\":{\"output_types\":[\"dense\"]}}"Build the "Search" 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: BAAI/bge-m3 (SIE primitive: /encode). Keep the model id configurable.
Task
- Input: a query string plus a list of candidate documents.
- Behaviour: return the candidates ranked by semantic similarity to the query, with a score per candidate
- Encode the query and candidates in one batched /encode call, then rank by cosine similarity in the client. Do not call the API per candidate.
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.import numpy as npfrom sie_sdk import SIEClientclient = SIEClient( api_key="sk-sie-…", base_url="https://api.superlinked.com",)query = "queryclear 1 litre laboratory flask with a blue screw cap"images = [ imageairplane-piggy-bank.jpgbrowse, imageearthquake-alert.jpgbrowse, imageerlenmeyer-flask.jpgbrowse, imagenail-drill.jpgbrowse,]# Encode the text query + each catalog image in one batch.items = [{"text": query}] + [{"images": [f]} for f in images]vecs = client.encode("modelgoogle/siglip-so400m-patch14-384", items)mat = np.array([v["dense"] for v in vecs])mat = mat / np.linalg.norm(mat, axis=1, keepdims=True)scores = mat[1:] @ mat[0] # cross-modal cosine to the queryfor i in np.argsort(scores)[::-1]: print(f"{scores[i]:.3f} {images[i]}")import { readFile } from 'node:fs/promises';
import { SIEClient } from '@superlinked/sie-sdk';
const client = new SIEClient('https://api.superlinked.com', {
apiKey: 'sk-sie-…',
});
const query = "clear 1 litre laboratory flask with a blue screw cap";
const imagePaths = [
"airplane-piggy-bank.jpg",
"earthquake-alert.jpg",
"erlenmeyer-flask.jpg",
"nail-drill.jpg",
];
const images = await Promise.all(imagePaths.map((path) => readFile(path)));
// Encode the text query + each catalog image in one batch.
const items = [{ text: query }, ...images.map((image) => ({ images: [image] }))];
const vecs = await client.encode('google/siglip-so400m-patch14-384', items);
const [q, ...imgVecs] = vecs.map((v) => v.dense);
const cosine = (a: Float32Array, b: Float32Array) => {
const dot = a.reduce((s, x, i) => s + x * b[i], 0);
return dot / (Math.hypot(...a) * Math.hypot(...b));
};
const ranked = imagePaths
.map((file, i) => ({ file, score: cosine(q!, imgVecs[i]!) }))
.sort((a, b) => b.score - a.score);
console.log(ranked);image_0=$(base64 < 'airplane-piggy-bank.jpg' | tr -d '\n')
image_1=$(base64 < 'earthquake-alert.jpg' | tr -d '\n')
image_2=$(base64 < 'erlenmeyer-flask.jpg' | tr -d '\n')
image_3=$(base64 < 'nail-drill.jpg' | tr -d '\n')
curl https://api.superlinked.com/v1/encode/google%2Fsiglip-so400m-patch14-384 \
-H "Authorization: Bearer sk-sie-…" \
-H "Content-Type: application/json" \
-d "{\"items\":[{\"text\":\"clear 1 litre laboratory flask with a blue screw cap\"},{\"images\":[{\"data\":\"$image_0\",\"format\":\"jpeg\"}]},{\"images\":[{\"data\":\"$image_1\",\"format\":\"jpeg\"}]},{\"images\":[{\"data\":\"$image_2\",\"format\":\"jpeg\"}]},{\"images\":[{\"data\":\"$image_3\",\"format\":\"jpeg\"}]}],\"params\":{\"output_types\":[\"dense\"]}}"Build the "Image search" 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: google/siglip-so400m-patch14-384 (SIE primitive: /encode). Keep the model id configurable.
Task
- Input: a text query plus one or more candidate images.
- Behaviour: return the images ranked by similarity to the query
- 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 sie_sdk import SIEClientclient = SIEClient( api_key="sk-sie-…", base_url="https://api.superlinked.com",)result = client.extract( "modelfastino/gliner2-large-v1", {"text": "textMelodySusie Portable Electric Nail Drill,PC120B Compact Efile Electrical Professional Nail File Kit for Acrylic, Gel Nails, Manicure Pedicure Polishing Shape Tools Design for Home Salon Use, Gold
About This PC120B Multifunctional: Designed with 6 kinds of metal bits (also works with all kinds of 3/32" shank bits) and 6 sanding bands, which are used for grinding, carving, cutting, polishing for all nail arts as well as cuticle removal Adjustable Speed and Easy to use: 0-20,000RPM with a speed control button, which makes this electric nail file easier and safer to polish your nails. Just need to connect the power cord with it to start working. It is professional for both home and salon use. Low Noise and Low Heat: This electro file is with a powerful yet quiet motor. Also, the smart heat dissipation can avoid overheating efficiently. (no more than 20 Minutes of continuous use each time is recommended) Portable and Light: Compact and lightweight design make it easy to carry and portable to bring it out, you can do your nail art work anytime anywhere. Easy to Use: It is professional for both home and salon use. Just need to connect the power cord with it to start working. Overview Brand : MelodySusie Material : Aluminum Model Name : DR-203 Voltage : 2.4E+2 Volts Power Source : Corded Electric"}, labels=[ "entity typebrand", "entity typematerial", "entity typemodel name", "entity typevoltage", "entity typepower source", "entity typemaximum speed", "entity typebit shank size", "entity typerecommended continuous use", ],)for span in result["entities"]: print(span["label"], span["text"])import { SIEClient } from '@superlinked/sie-sdk';
const client = new SIEClient('https://api.superlinked.com', {
apiKey: 'sk-sie-…',
});
const result = await client.extract(
'fastino/gliner2-large-v1',
{ text: "MelodySusie Portable Electric Nail Drill,PC120B Compact Efile Electrical Professional Nail File Kit for Acrylic, Gel Nails, Manicure Pedicure Polishing Shape Tools Design for Home Salon Use, Gold\n\nAbout This PC120B Multifunctional: Designed with 6 kinds of metal bits (also works with all kinds of 3/32\" shank bits) and 6 sanding bands, which are used for grinding, carving, cutting, polishing for all nail arts as well as cuticle removal Adjustable Speed and Easy to use: 0-20,000RPM with a speed control button, which makes this electric nail file easier and safer to polish your nails. Just need to connect the power cord with it to start working. It is professional for both home and salon use. Low Noise and Low Heat: This electro file is with a powerful yet quiet motor. Also, the smart heat dissipation can avoid overheating efficiently. (no more than 20 Minutes of continuous use each time is recommended) Portable and Light: Compact and lightweight design make it easy to carry and portable to bring it out, you can do your nail art work anytime anywhere. Easy to Use: It is professional for both home and salon use. Just need to connect the power cord with it to start working. Overview Brand : MelodySusie Material : Aluminum Model Name : DR-203 Voltage : 2.4E+2 Volts Power Source : Corded Electric" },
{ labels: ["brand","material","model name","voltage","power source","maximum speed","bit shank size","recommended continuous use"] },
);
console.log(result.entities);curl https://api.superlinked.com/v1/extract/fastino%2Fgliner2-large-v1 \
-H "Authorization: Bearer sk-sie-…" \
-H "Content-Type: application/json" \
-d "{\"items\":[{\"text\":\"MelodySusie Portable Electric Nail Drill,PC120B Compact Efile Electrical Professional Nail File Kit for Acrylic, Gel Nails, Manicure Pedicure Polishing Shape Tools Design for Home Salon Use, Gold\\n\\nAbout This PC120B Multifunctional: Designed with 6 kinds of metal bits (also works with all kinds of 3/32\\\" shank bits) and 6 sanding bands, which are used for grinding, carving, cutting, polishing for all nail arts as well as cuticle removal Adjustable Speed and Easy to use: 0-20,000RPM with a speed control button, which makes this electric nail file easier and safer to polish your nails. Just need to connect the power cord with it to start working. It is professional for both home and salon use. Low Noise and Low Heat: This electro file is with a powerful yet quiet motor. Also, the smart heat dissipation can avoid overheating efficiently. (no more than 20 Minutes of continuous use each time is recommended) Portable and Light: Compact and lightweight design make it easy to carry and portable to bring it out, you can do your nail art work anytime anywhere. Easy to Use: It is professional for both home and salon use. Just need to connect the power cord with it to start working. Overview Brand : MelodySusie Material : Aluminum Model Name : DR-203 Voltage : 2.4E+2 Volts Power Source : Corded Electric\"}],\"params\":{\"labels\":[\"brand\",\"material\",\"model name\",\"voltage\",\"power source\",\"maximum speed\",\"bit shank size\",\"recommended continuous use\"]}}"Build the "Named entities" 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: fastino/gliner2-large-v1 (SIE primitive: /extract). Keep the model id configurable.
Task
- Input: a block of text.
- Behaviour: return the named entities found in the text with their types
- 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.- Reorders by true relevance
- Scored by meaning, keyword-free
- Ranks by meaning, not keyword overlap
- Scores every candidate against your query
1top match
2
3
4- Ranks images by pixels, not filenames or tags
- Finds matches from a plain text query
MelodySusiebrand Portable Electric Nail Drill,PC120B Compact Efile Electrical Professional Nail File Kit for Acrylic, Gel Nails, Manicure Pedicure Polishing Shape Tools Design for Home Salon Use, Gold About This PC120B Multifunctional: Designed with 6 kinds of metal bits (also works with all kinds of 3/32"bit shank size shank bits) and 6 sanding bands, which are used for grinding, carving, cutting, polishing for all nail arts as well as cuticle removal Adjustable Speed and Easy to use: 0-20,000RPMmaximum speed with a speed control button, which makes this electric nail file easier and safer to polish your nails. Just need to connect the power cord with it to start working. It is professional for both home and salon use. Low Noise and Low Heat: This electro file is with a powerful yet quiet motor. Also, the smart heat dissipation can avoid overheating efficiently. (no more than 20 Minutesrecommended continuous use of continuous use each time is recommended) Portable and Light: Compact and lightweight design make it easy to carry and portable to bring it out, you can do your nail art work anytime anywhere. Easy to Use: It is professional for both home and salon use. Just need to connect the power cord with it to start working. Overview Brand : MelodySusie Material : Aluminummaterial Model Name : DR-203model name Voltage : 2.4E+2 Voltsvoltage Power Source : Corded Electricpower source
- Pulls typed entities straight from raw text
Compare models for this task
A verifier places 12 more listings in the exact category
View on GitHubImage and listing copy separate exact paths from plausible alternatives
Open the dataset
Deploy your way
Managed Cloud
Full compute toolkit for your agents with zero ops.
- No idle GPUs, pay for what you use
- Fits your stack: SDK, API, CLI, MCP
- Zero lock-in, self-host the same stack
- SOC 2 Type 2, US or EU data residency
no credit card required
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
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 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