SOLUTIONS — HEADLESS STORES
Bring your own frontend.
The widget is optional. Everything it does goes through the same public API, wrapped in a typed SDK. Build the search experience you want and keep the same results.

One typed SDK
@ribban/cerno gives you search, suggest, and click tracking with full TypeScript types. It calls the same API the widget uses, so results are identical.
Ranking stays server-side
Tier routing, merchandising rules, and analytics live in the API. A frontend redesign never changes search quality.
Analytics stay complete
click() reports through sendBeacon so navigation is never delayed, and CTR data keeps flowing no matter whose UI is on top.
Regional endpoints
Point the client at your region and keep latency close to your customers. Facets, pagination, and filters come along in the same call.
THE WHOLE INTEGRATION
@ribban/cerno
import { CernoClient } from "@ribban/cerno";
const cerno = new CernoClient({ apiKey: "pk_…" });
const { hits, tier, totalMs } = await cerno.search(
"waterproof shoes for running",
{ perPage: 24 },
);Wire it up in an afternoon.
Cerno indexes your public catalog in about a minute. No signup, nothing installed. Then search it the way your customers do: vague, misspelled, in their own words.
Paste your store URL