Bowmark AIdocs

Tatcha

Runs Tatcha's real "Ritual Finder" skincare quiz — the site's own product-matching backend, not a generic routine.

Domain: tatcha.com

Also known as: Tatcha, tatcha, Tatcha Beauty, tatcha.com

Call it directly

bowmark.providers.tatcha.getRitualQuizOptions(): Promise<TatchaRitualQuizOptions>
bowmark.providers.tatcha.getPersonalizedRitual(skinType: string, benefits: string[], eyeConcerns?: string[], sensitive?: boolean, owned?: string[]): Promise<TatchaRitual>

Functions

FunctionWhat it does
getRitualQuizOptionsReads the live Ritual Finder quiz's real skin-type, benefit and eye-concern menus.
getPersonalizedRitualRuns real quiz answers through Tatcha's own personalization backend and returns the real AM/PM product ritual it recommends.

Types

interface TatchaQuizOption {
  value: string;
  label: string;
}

interface TatchaRitualQuizOptions {
  skinTypes: TatchaQuizOption[];
  benefits: TatchaQuizOption[];
  eyeConcerns: TatchaQuizOption[];
}

interface TatchaRitualProduct {
  step: string;
  sku: string;
  name: string;
  secondaryName: string;
  price: string;
  handle: string;
  url: string;
  image: string;
  usageTime: "AM" | "PM" | "both";
  description: string;
  inStock: boolean;
}

interface TatchaRitual {
  summary: string;
  products: TatchaRitualProduct[];
  handoffUrl: string;
}

Examples

// What ritual does Tatcha's own quiz recommend for combo-to-dry, brightening + hydrating skin?
const options = await bowmark.providers.tatcha.getRitualQuizOptions();
const ritual = await bowmark.providers.tatcha.getPersonalizedRitual(
  "combo_to_dry",
  ["brightening", "hydrating"],
  ["Eye_Hydrating"],
  false,
  [],
);
return { summary: ritual.summary, steps: ritual.products.map((p) => `${p.step}: ${p.name} (${p.price})`) };