Bowmark AIdocs

Borsheims

Reads Borsheims' live product catalog and composes a setting + diamond into a priced ring, straight off borsheims.com's own embedded product data — no…

Reads Borsheims' live product catalog and composes a setting + diamond into a priced ring, straight off borsheims.com's own embedded product data — no key, no browser.

Domain: borsheims.com

Also known as: Borsheims, borsheims.com

Call it directly

bowmark.providers.borsheims.searchProducts(query: string): Promise<BorsheimsSearchResult[]>
bowmark.providers.borsheims.getProduct(url: string): Promise<BorsheimsProduct>
bowmark.providers.borsheims.configureRing(args: ConfigureRingArgs): Promise<BorsheimsRingConfiguration>

Functions

FunctionWhat it does
searchProductsTurns a free-text query into real borsheims.com product page URLs — the LOCATOR getProduct and configureRing need — by matching every query token against the site's own sitemap.xml (~16,000…
getProductReads one product's real, live price straight off its product page's own embedded data (mivaJS.product) — the same JSON the page's own components render from, including any active discount.
configureRingComposes a setting product page and a diamond/center-stone product page into a priced ring — setting.price + diamond.price — the same arithmetic the site's own ring builder performs, plus…

Types

interface BorsheimsSearchResult {
  name: string;                  // derived from the URL slug, title-cased
  url: string;                   // pass to getProduct / configureRing
  lastmod: string | null;
}
interface BorsheimsProduct {
  code: string;
  name: string;
  basePrice: number;             // dollars, before any discount
  price: number;                 // dollars, the real selling price
  discount: number | null;
  inventoryAvailable: number;
  imageUrl: string | null;
  url: string;                   // pass to getProduct / configureRing
}
interface BorsheimsRingConfiguration {
  setting: BorsheimsProduct;
  diamond: BorsheimsProduct;
  totalPrice: number;             // dollars, setting.price + diamond.price
  builderUrl: string;             // the handoff — open this to configure/buy
}
interface ConfigureRingArgs {
  settingUrl: string;
  diamondUrl: string;
}