Field notes / Teardowns
BK Beauty teardown: 75 results for foundation brush, and a one-sentence bestseller
I searched foundation brush on bkbeauty.com and got 75 results. Filters are Availability and Price. The 101 Contoured Foundation, with 3,955 reviews, still has a one-sentence description.
I searched "foundation brush" on bkbeauty.com on November 3, 2026 and the page said 75 results. The same day, products.json returned 77 products. That search is not a shortlist. It is almost the whole store, and the only filters on the page are Availability and Price.
The cost is simple. A shopper who already named the job still has to sort blush, powder, shaders, and eye sets out of a foundation query, and the bestseller waiting at the top of that list still explains itself in one sentence.
What BK Beauty does well
The homepage sells a set, not a lecture. The hero I captured is the Nikki La Rose Pro Artist Series travel kit, with Now Available on the image, and Byrdie, ELLE, InStyle, and marie claire in a row under it (screenshot taken Nov 3, 2026). Shop, Brush Care, and Our Story sit in the main nav. For a catalog of similar-looking brushes, leading with one kit is the right default.

The reviews are not a rumor. A homepage block is labeled 30,000+ 5-star reviews, with a button that reads "See all 30,000+ reviews" (screenshot taken Nov 3, 2026). That button goes to the customer reviews page, which showed 31,450 product reviews at 4.87 the same day.


The product page already has the money facts in one column. On the 101 Contoured Foundation, the live page showed $34, 3,955 reviews, Add to cart, Shop Pay, a Happiness Guaranteed accordion, a Shipping & Returns accordion, cruelty-free and vegan badges, and a Pairs Well With row that starts with the 109 Mini Contoured Foundation at $32 (screenshot taken Nov 3, 2026). That is the right pile of commerce UI. The sentence under the press logos is the whole product description: "The ultimate streak free foundation brush to provide natural looking flawless coverage from your favorite liquid or cream foundations."
The catalog is already typed. The same products.json feed lists 49 products with type Brush and 15 with type Brush Set. The theme nav has Face Brushes and Eye Brushes. Face Brushes listed 26 products when I opened it. Someone on this team already split the catalog. Search is just not using that split.
Help content exists, even if it is not an FAQ. Shipping & Returns states free shipping over $65, delivery in 2-5 business days, same-day shipping before 2PM CST Monday through Friday, a free prepaid return label, and a full refund. The brush care guide is a 4-step wash routine plus a Brush Care FAQ on that page. The our story page says the brand launched in 2019 as a digitally-native cosmetics line, and that a donation from each purchase goes to The Kindness Campaign.
What BK Beauty does badly
Search treats "foundation brush" as "show me the store." The results page I captured said "75 results for foundation brush." The first row is the four brushes whose titles actually name foundation: 101, 115, 109, and 106. Scroll a little and the same query is 107 Flat Blush, 203 Shader, 108 Precision Powder, and a Brush Set for Hooded or Smaller Eyes (screenshots taken Nov 3, 2026). The left rail is Availability and Price. There is no Face, Eye, or "this is a foundation brush" chip.


The bestseller has 3,955 reviews and a one-sentence page. The 101 page I captured puts that one liquid-or-cream sentence next to Add to cart. Happiness Guaranteed and Shipping & Returns are closed. Further down, Junip shows 4.93 from 3,955 reviews, photo thumbnails, and a verified review from Christy P: the brush picks up cream foundation and tinted moisturizer (screenshots taken Nov 3, 2026). That sentence is the useful one. It is not next to the button.


There is no FAQ page. https://www.bkbeauty.com/pages/faq returned HTTP 404 with the theme's "We could not find the page you were looking for" message (screenshot taken Nov 3, 2026). The contact page is a Name, E-mail, and Message form. help@bkbeauty.com is in the accessibility line at the bottom of that page, and again on Shipping & Returns. I did not see a chat transcript on the pages I captured.


I looked for a which-brush finder, a quiz, and a chat composer on the homepage, search, and the 101 page. I did not find one.
3 quick wins
1. Make "foundation brush" return foundation brushes, then add a short "which brush for what" finder.
What I saw: the live search at https://www.bkbeauty.com/search?q=foundation+brush&type=product said 75 results, with Availability and Price as the only filters, then mixed blush, shader, powder, and an eye set into the same grid (screenshots above, Nov 3, 2026).
The fix: map the query to product type and title. The four products whose names include "Foundation" should stay first. Face vs Eye vs Set should be chips on that page, using the types Shopify already stores. A three-tap finder on top of search can ask what the shopper is applying (foundation, concealer, powder, eyes) and which finish, then hide the rest.
Why it matters: this catalog is 49 brushes and 15 sets that look alike in a grid. The shopper already typed the job. Search should finish that sentence, not hand them the store.
2. Turn the 3,955 reviews on 101 into a "best for / pairs with" block next to Add to cart.
What I saw: the 101 page has one sentence of copy at the button, and the useful review text further down: cream foundation, tinted moisturizer, 4.93 from 3,955 reviews. Pairs Well With already exists as a row. The live description does not use the reviews (screenshots above, Nov 3, 2026). The homepage already invites people to "See all 30,000+ reviews."
The fix: a product-content job reads Junip reviews plus the current body HTML, drafts a short Best for line and a Pairs with line, and a person approves every change before it publishes. Start with 101. Do not invent a second description. Use sentences already on the page.
Why it matters: the expensive part, the reviews, is paid for. The cheap part, putting one of those sentences next to the button, is not done.
3. Stand up a support draft queue from Shipping & Returns and the Brush Care Guide, because /pages/faq is a 404.
What I saw: the FAQ URL 404s. Contact is a form. Shipping & Returns already answers free shipping over $65, the 2PM CST cutoff, and the prepaid return label, and prints help@bkbeauty.com. The brush care guide already answers how often to wash, whether to use hot water, and how to dry a brush. Those two pages are the FAQ. They are just not wired to the inbox.
The fix: a support job reads those two pages, plus the 101 review themes, and drafts a reply. A person hits send. No public chatbot on day one.
Why it matters: the answers are already written. The form is making a person hunt for them on every ticket.
Managed AI agents
These are jobs I would actually run on this catalog. Each one reads store data, drafts something, and stops for a person.
Customer support and product questions. Reads Shipping & Returns, the Brush Care Guide, the 101 description, and Junip review text. Drafts answers to "does this work with cream," "how do I wash this," "where is my order," and "how do I return it." A person approves every outbound reply. I would not let it email a customer on its own.
Merchandising. Reads product titles, product types from products.json, the Face Brushes and Eye Brushes collections, and queries like "foundation brush." Proposes search synonyms, collection rules, and which four SKUs belong in a foundation-brush result. A merchandiser approves the rule before it goes live on search.
Product content. Reads each brush's reviews and the current body HTML. Drafts a Best for line, a Pairs with line, and alt text that is more than the product title. A person approves the draft in a queue. Nothing publishes without that click. I checked the live 101 gallery: the brush photos used alt "101 Contoured Foundation." That is better than an empty alt. It is still the title, not "angled foundation brush for liquid and cream."
Ops, returns, and inventory notes. Reads the prepaid-return policy, sold-out badges (the homepage showed Nikki La Rose N20 Ultimate Diffuser as sold out), and return-label requests that arrive on the contact form. Drafts the label reply and a sold-out note for the PDP. A person sends the email and publishes the note.
Build options I actually opened, not a vendor bake-off:
- Claude Agent SDK is a library that runs the agent loop in a process you operate, with tools, sessions, and MCP. Its permissions docs describe
askrules and acanUseToolcallback so a publish or send can wait for a person. - Claude Managed Agents is the hosted version: Anthropic runs the harness in a cloud sandbox or a sandbox you host. The same overview says you can steer or interrupt a session while it runs. It is in beta, and the page says sessions are not eligible for zero data retention, which matters if review text or ticket text cannot leave your store.
- OpenAI's agent tooling splits the work: Agents API for a managed Codex harness, Agents SDK when your app owns the loop, storage, and approvals, and the Responses API when you want to call the model directly. The SDK row is the one that says approvals stay in your application.
- Gemini Enterprise Agent Platform, described there as an evolution of Vertex AI, is the Google side: Agent Studio for low-code design, Agent Development Kit for code, and Agent Gateway plus Agent Identity for runtime policy. I would use that if the brand already lives on Google Cloud, not because the page asked me to.
I would start on the Agent SDK path for this store: Shopify Admin API and Junip as read tools, a draft table, and canUseTool (or the OpenAI SDK equivalent) on anything that writes. The hosted options are there if they do not want to run a process.
One before / after
The strongest quick win is the search. Left is the live 75-result page. Right is a mockup: Foundation is selected, four named foundation brushes are on the grid, and the blush and eye SKUs are off the page. The mockup is labeled Mockup. Names and prices on the right come from the November 3, 2026 screenshot. It is not a BK Beauty page.

Technology detected
I fetched bkbeauty.com on November 3, 2026, including the homepage, the 101 product URL, search, contact, /pages/faq, Shipping & Returns, the brush care guide, customer reviews, /cart.js, and /products.json?limit=250. I listed only vendors I could see in response headers, loaded script URLs, window.Shopify, or the page payload. A Shopify app-block comment was not enough unless a script also loaded.
BK Beauty storefront stack, checked Nov 3, 2026
| Piece | What I found | Evidence |
|---|---|---|
| Ecommerce | Shopify, Prestige theme | The HTML response sends powered-by: Shopify. /cart.js returns Shopify cart JSON. window.Shopify.shop is bkbeauty.myshopify.com. Shopify.theme is named Prestige 11.1.0 - Variants Collection, schema_name Prestige, schema_version 11.1.0, theme_store_id 855, id 151004774562. Theme assets load from /cdn/shop/t/45/. |
| CDN / hosting | Cloudflare in front of Shopify | The response includes server: cloudflare, a cf-ray, and x-dc: gcp-us-east1. Shopify cookies include _shopify_essential, _shopify_analytics, and _shopify_marketing. |
| Catalog | 77 products in the public JSON, 49 typed Brush, 15 typed Brush Set | GET /products.json?limit=250 returned 77 products, all vendor BK Beauty. product_type counts were Brush 49, Brush Set 15, Brush Collection 4, Accessory 4, Bundle 2, Makeup 1, and two blank. The same payload listed 355 product images. |
| Search | Shopify storefront search, not a third-party search app I could see | The search URL is /search?q=foundation+brush&type=product. The live page said 75 results. Filters rendered as Availability and Price. I did not load Constructor, Algolia, or Searchspring scripts on the pages I captured. |
| Reviews | Junip | widgets.juniphq.com/v1/junip_shopify.js loaded, plus junip chunks. The 101 page showed 4.93 from 3,955 reviews. The customer reviews page showed 31,450 reviews at 4.87. Review images also loaded from a Cloudfront host used by the widget. |
| Klaviyo | static.klaviyo.com/onsite/js/PW6vt8/klaviyo.js?company_id=PW6vt8 loaded, plus a.klaviyo.com and static-tracking.klaviyo.com. The footer has an email subscribe field. | |
| Payments | Shop Pay and Afterpay | The 101 screenshot from Nov 3, 2026 shows Buy with Shop and Afterpay for orders over $35. static.afterpay.com/shopify-afterpay-javascript.js loaded. shop.app checkout scripts loaded. |
| Analytics / ads | gtag, Google Ads, Facebook, Axon, Lantern | www.googletagmanager.com/gtag/js loaded for G-TTNMP349V0, AW-646468896, and GT-MQX6ZHQ4. connect.facebook.net/en_US/fbevents.js loaded. s.axon.ai/s/pixel.js loaded. lantern.roeyecdn.com/lantern_global_91511.min.js loaded. www.dwin1.com loaded (affiliate tracking). |
| Other loaded Shopify apps | Aftersell, AppLovin | cdn.shopify.com/extensions/.../aftersell-1253/assets/aftersell-utm-triggers.js loaded. cdn.shopify.com/extensions/.../applovin-shop-integration-100/assets/app-embed.js loaded. I did not find an on-page AI shopping assistant. |
Engineer's take
Prestige on Shopify is why this page can have a quantity stepper, Shop Pay, closed accordions, and a Pairs Well With row without a custom app. Junip is already summarizing 3,955 reviews on 101. Klaviyo is already on the domain. Native search is the weak joint: the query string is there, product_type is in the JSON, and the UI still offers Availability and Price.
The friction is that the useful data is already on the page and the UI is not using it together. Search already ranked 101 first. The title already says Contoured Foundation. Junip already has "cream foundation and tinted moisturizer." Wiring those into one finder and one Best for line is theme work plus a draft queue.
What I would watch: this page already loads gtag (three IDs), Facebook, Axon, Lantern, Aftersell, AppLovin, Afterpay, and Klaviyo in the same viewport as a 10% off badge and a one-sentence description. I would keep new embeds off the product page until the Best for line is sitting next to Add to cart.
Architect's take
I would not replatform this. The structural move is to treat "what this brush is for" as one record the product page and search can both read. Shopify already holds product_type. Prestige already renders the grid. Junip already holds the reviews. The missing piece is a single path from "foundation brush" or "does this work with cream" into that record, instead of 75 results, a closed accordion, and a contact form.
That is an AI layer on top of a store that already knows how to sell brushes. The question is not whether BK Beauty has reviews. It is whether the assistant can see the same facts the theme already has, at the search box and the add button, before the shopper gives up and emails help@.
If your catalog looks like this, a lot of similar tools and a search box that returns almost everything, this is the review I would run on your store. My AI Opportunity Teardown is $2,000. I spend a week on the public site and a short intake, and you get a written one-pager plus a 15-minute Loom of what is worth building and what to skip.
From the idea to the work
Make the workflow useful in a real product.
Bring a product idea, an internal tool, or an AI-assisted workflow that needs a working implementation.