Bowmark AIdocs

Saatva

Saatva's mattress catalogue and its own mattress-quiz recommendation logic — every mattress line Saatva currently sells with every buyable variant's size,…

Saatva's mattress catalogue and its own mattress-quiz recommendation logic — every mattress line Saatva currently sells with every buyable variant's size, comfort level, sleep-position fit, stock and price, plus a real computed recommendation from stated sleep position, weight, and firmness preference, each with the exact pre-selected-SKU product link to buy it.

Domain: saatva.com

Also known as: Saatva, saatva, SAATVA, Saatva Mattress, Saatva Company

Call it directly

bowmark.providers.saatva.listMattresses(): Promise<SaatvaMattress[]>
bowmark.providers.saatva.recommendMattress(answers: MattressQuizAnswers): Promise<SaatvaRecommendation[]>

Functions

FunctionWhat it does
listMattressesLists every mattress product line Saatva currently sells with every buyable variant — size, comfort level, sleep-position fit, stock and price — read out of the same catalogue the site's…
recommendMattressRuns Saatva's mattress-quiz goal-flow (saatva.com/mattress-quiz) for a stated sleep position and firmness preference, ranking every mattress line against the SAME live catalogue the site's…

Types

// Saatva's OWN shapes — not a capability contract.

interface MattressQuizAnswers {
  sleepPosition: "side" | "back" | "stomach";
  feel: "soft" | "medium" | "firm";
  sharesBed?: boolean;   // optional — narrows scoring further when given
}

interface SaatvaVariant {
  sku: string;
  name: string;
  size: string | null;
  comfortLevel: string | null;   // Saatva's own label, e.g. "Medium Firm"
  mattressType: string | null;   // "Standard" | "Split" | "Upper-Flex"
  price: number | null;
  inStock: boolean;
  sleepPositions: string[];      // e.g. ["Side Sleeper", "Back Sleeper"]
  url: string;                   // pre-selected-SKU product page, one click from cart
}

interface SaatvaMattress {
  productCode: string;
  name: string;
  url: string;
  variants: SaatvaVariant[];
}

interface SaatvaRecommendation {
  productCode: string;
  name: string;
  score: number;                 // higher is a better match; ties break on lower price
  matchedOn: string[];           // plain-language reasons this variant scored
  bestVariant: SaatvaVariant | null;
}

Examples

// Which Saatva mattress should a side sleeper who wants something not too
// firm buy, and where do they check out?
const recs = await bowmark.providers.saatva.recommendMattress({ sleepPosition: "side", feel: "medium" });
const top = recs[0];
return { name: top.name, why: top.matchedOn, buyUrl: top.bestVariant?.url };
// What mattresses does Saatva sell under $2,500 in stock right now?
const catalog = await bowmark.providers.saatva.listMattresses();
return catalog
  .flatMap((m) => m.variants.filter((v) => v.inStock && (v.price ?? Infinity) <= 2500).map((v) => ({ name: v.name, price: v.price, url: v.url })))
  .sort((a, b) => (a.price ?? 0) - (b.price ?? 0));