Skip to content

samesake

Search built for shoppers who don't know the product name — screenshots, vague intent, budgets, occasion, and availability. You declare the catalog and retrieval in TypeScript; samesake compiles it into a Postgres-backed search layer you run inside your app.

Hybrid retrieval, typed

Keyword full-text, vector similarity, and structured filters combine through reciprocal-rank fusion. You declare the channels in TypeScript; the schema and SQL are generated per project at runtime.

Hard filters stay hard

“Under 20,000” and “available now” compile to typed constraint predicates pushed into SQL — not soft semantic vibes. Every search carries an auditable constraint trace.

Image and intent together

Image similarity, text intent, price, freshness, and availability are separate, query-time-weighted signals. Tune visual vs intent vs price without reindexing.

Two containers in production

Postgres (pgvector + pg_trgm) and your app process. Bring your own embedding and generation models. No Redis, no Elasticsearch, no hosted vector DB.

Already know what you want?

Quickstart — collection to push to index to search in about fifteen minutes, no LLM required.