Salt & Stone
Salt & Stone's own Scent Quiz, reimplemented over its real six named scent families: list every family's real fragrance notes, compute a real ranked match…
Salt & Stone's own Scent Quiz, reimplemented over its real six named scent families: list every family's real fragrance notes, compute a real ranked match against a free-text preference, and shop the real core products (body wash, mist, lotion, deodorant, hand cream, candle) in the matched scent with real price and availability.
Domain: saltandstone.com
Also known as: Salt & Stone, Salt and Stone, saltandstone, saltandstone.com
Call it directly
bowmark.providers.saltandstone.listScentFamilies(): Promise<ScentFamily[]>
bowmark.providers.saltandstone.matchScent(preferences: string): Promise<ScentMatch[]>
bowmark.providers.saltandstone.getScentProducts(familyName: string): Promise<ScentProduct[]>Functions
| Function | What it does |
|---|---|
listScentFamilies | Lists Salt & Stone's real six named scent families, each with its own real top/heart/base fragrance notes and mood description, read off the site's own collection pages. |
matchScent | Salt & Stone's own Scent Quiz, reimplemented: computes a real ranked match across all six scent families by scoring the preference's terms against each family's own published fragrance… |
getScentProducts | Lists the real core products (body wash, body mist, body lotion, deodorant, hand cream, candle) available in one named scent family, with each one's real price, availability and product… |
Types
// Salt & Stone's OWN shapes — not a capability contract.
interface ScentFamily {
handle: string;
name: string; // e.g. "Santal & Vetiver"
description: string; // the site's own mood copy
notes: { top: string[]; heart: string[]; base: string[] }; // real fragrance notes
url: string;
}
interface ScentMatch {
handle: string;
name: string;
score: number; // 0-1 — how much of the caller's preference matched this family's real notes/copy
matchedTerms: string[]; // which of the caller's own words matched, and why
url: string;
}
interface ScentProduct {
handle: string; // "body-wash" | "body-mist" | "body-lotion" | "natural-deodorant" | "hand-cream" | "candle"
title: string;
productType: string;
variantId: string;
variantTitle: string;
price: number; // dollars, real Shopify variant price
compareAtPrice: number | null;
available: boolean; // real live stock flag
url: string; // real product page, this exact variant preselected
}Examples
// Salt & Stone's own quiz, run for a stated preference
const matches = await bowmark.providers.saltandstone.matchScent("woodsy, warm, a bit of spice");
const top = matches[0];
const products = await bowmark.providers.saltandstone.getScentProducts(top.name);
return { recommendation: top.name, score: top.score, shop: products.map((p) => p.title) };// Which core products are in stock in Black Rose & Oud, and what do they cost?
const products = await bowmark.providers.saltandstone.getScentProducts("Black Rose & Oud");
return products.filter((p) => p.available).map((p) => `${p.title}: $${p.price}`);