Application project · Shopify Ecommerce Specialist (Contract) · Independent, not affiliated
Before I applied, I QA'd your store

Clean coffee. Cleaner builds.

The posting asks for someone who builds cleanly and QAs every component before launch. So I ran that pass on bulletproof.com: all 127 products and 110 collections in the public Shopify feed, every product page, the promo FAQ, the WordPress sitemaps and the new agentic storefront, on September 27. Ten findings, five working tools and a plan for the five months.

French Kick ground coffee bag
Collagen Protein 14.3 oz tub
Enhanced Pumpkin Spice Creamer tub
Brain Octane C8 MCT Oil bottle
Greens powder jar
404 · in stock
Noindex · 491 reviews
Alt text 0/5

What one QA pass turned up

bulletproof.com, public data, September 27, 2026

    How I checked

    The way a crawler, a feed or an agent reads the store.

    From an ordinary browser session in Michigan, with no logins, I read Shopify's public product and collection feeds, then opened every product page and recorded what search engines and shopping agents see. Anything I couldn't see from outside is labeled as a question for the team.

    • All 127 products and 110 collections from /products.json and /collections.json
    • Every product page: status, robots, canonical, JSON-LD, images and alt text
    • The 13 XML sitemaps, Shopify's and WordPress's
    • The promo pages, the Coupon Restrictions FAQ and the live homepage banner
    launch-qa · bulletproof.com/products0 / 127
    127product pages
    —high severity
    484images checked
    Your posting, answered in kind

    Six areas of work. A real sample of each.

    The job description lists six areas. Instead of claiming I can do them, this page does a small, real piece of each on your store.

    Findings

    Ten things I'd fix, worst first.

    Each one comes with what I saw, why it matters to the business, and what I'd ship. Where the cause lives in admin settings I can't see, I say so.

    bulletproof.com/products/collagen-protein-14-3-oz
    bulletproof.com product URL for Collagen Protein 14.3 oz showing the store's 404 page
    HTTP 404 · in stock · $36.99
    Highpriority

    Sept 27, 2026 · one of four live products that 404

    01
    Build & configHigh

    Four in-stock products lead to a 404 page.

    What I saw

    The product feed lists Collagen Protein 14.3 oz ($36.99), The Original Coffee Pods 10ct ($12.99), The Mentalist Pods 10ct ($12.99) and Brain Octane C8 MCT Oil 14 oz ($25.99) as published and available. Each product URL returns the store's “page not found.” I confirmed all four in a normal Chrome session.

    The Mix-Ins grid also still links a retired chocolate collagen product that now redirects to /collections/collagen.

    Why it matters

    Anything that reads the feed — Google Shopping, the Shop app, AI shopping agents on the new agentic storefront — can offer a product that dead-ends. To a shopper, a 404 on a live product reads as “gone,” not “out of stock.”

    What I'd ship

    The cause isn't visible from outside, so step one is each product's Markets and template settings. If they should sell, fix and retest. If they're retired, unpublish and 301 each to its closest live size (prefilled in the redirect map) and repoint the Mix-Ins link.

    Open the redirect map →
    bulletproof.com/products/enhanced-creamer-pumpkin-spice-14-8-oz
    Enhanced Creamer Pumpkin Spice product page on bulletproof.com, labeled Limited Edition, 491 reviews
    <meta name="robots" content="noindex, nofollow">
    Highpriority

    In stock · not in the sitemap · linked three times from the homepage

    02
    SEO & contentHigh

    The fall's hero product is hidden from Google.

    What I saw

    Enhanced Creamer, Pumpkin Spice ($32.99, 491 reviews) is pictured in the homepage BOGO banner and linked from the homepage three times. Its page says noindex, nofollow and it's left out of the sitemap.

    Nine more standalone products do the same, including Brain Octane Packets (4,193 reviews) and Enhanced Creamer Original 14 packets (1,927). In all, 29 product pages are noindex; the other 19 are packs and sizes that point their canonical at a base product, which looks deliberate.

    Why it matters

    Pumpkin spice has one season. Every week it's hidden, searches for a keto pumpkin spice creamer land somewhere else — and nofollow tells Google not to follow the page's links into the rest of the catalog.

    What I'd ship

    Confirm with the SEO agency, clear the hide-from-search setting on the ten standalones and request indexing. On the 19 packs, keep the canonical and review the noindex — Google advises against sending both signals.

    Review all 29 index decisions →
    bulletproof.com
    bulletproof.com homepage banner: BOGO 50% off, offer ends 09.29.26, no code needed
    bulletproof.com/pages/coupon-restrictions-faq
    Coupon Restrictions FAQ: Buy 1 Get 1 section with BOGO50 code and three worked examples
    Banner: “No code needed”
    FAQ: “with code BOGO50”
    Highpriority

    Same day, same promo, two different rules

    03
    PromotionsHigh

    The promo FAQ contradicts the live BOGO, and its math is off.

    What I saw

    The homepage says BOGO 50% is “No code needed,” ending 09.29.26. The Coupon Restrictions FAQ says Buy 1 Get 1 takes a code at checkout (BOGO50).

    Its third worked example says two $16.99 items come to $31.98 (it's $33.98), discount to $16.00 (half is $16.99) and total $87.96 (it's $88.95). It also promises “the full list of Kits and Bundles is provided below.” No list follows.

    Why it matters

    This is the page shoppers and Customer Care open when a discount looks wrong. When it disagrees with the banner and with arithmetic, the next step is a ticket or an abandoned cart.

    What I'd ship

    Write the FAQ's examples from the discount as configured, add “FAQ and banners match the live promo” to the promo checklist, and publish the promised kits list.

    Run the promo checker →
    Your cart · modeled from the FAQ's rules
    Bulletproof Original Ground CoffeeCoffee
    $19.99
    Enhanced Pumpkin Spice CreamerMix-ins
    $32.99
    Greens, 8.4 oz.exclude-promo · not named in the FAQ
    $57.99
    BOGO50Apply
    Code blocked for the whole cart: one item is excluded. The FAQ's exclusion list doesn't say why.
    Medpriority

    An illustration of the FAQ's stated rule, not a screenshot

    04
    PromotionsMedium

    Twelve products are excluded from promos without being named.

    What I saw

    14 products carry an exclude-promo tag. The FAQ's exclusion list names two: the Whole Body Vibration Plate and the 3 oz. Brain Octane. The other twelve are supplements — the four gummies, Greens Powder jar and packets, Magnesium, CoQ10, Zen Mode, Clarity Focus, Turmeric Curcumin and Gut Health Collagen.

    They're also tagged sale with no compare-at price, so no strikethrough warns anyone. 62 products are tagged coupon_eligible; 51 carry neither tag.

    Why it matters

    The FAQ says one excluded item blocks a coupon for the whole cart. If the tag drives that rule, a shopper with Greens Powder in the cart types BOGO50, it fails, and nothing on the page explains why. I can't see the discount settings from outside, so this starts as a question.

    What I'd ship

    One source of truth for eligibility — the discount's product list or a single metafield — with the FAQ's exclusion list generated from it.

    Try a cart with Greens Powder →
    bulletproof.com/collections/labor-day-sale
    Labor Day Sale collection page: ended message, filter list and an empty product grid
    0 products · indexable · in sitemap
    Medpriority

    One of 22 empty collections

    05
    MerchandisingMedium

    22 collections are empty. Two are sale pages in Google's index.

    What I saw

    Labor Day Sale and 4th of July Sale have zero products, are indexable and are in the sitemap. Labor Day does say the sale has ended and links to current deals — good — above an empty grid and filters with nothing to filter.

    The other 20 look like app and quiz plumbing: 8 quiz “stack path” collections, 7 “Product Group” collections, 2 Rebuy collections, Protein Bars, Protein Crisp Bars and VIPs Only.

    Why it matters

    Seasonal URLs are worth keeping; they pick up links every year. But an empty grid wastes the traffic they collect, and an empty Rebuy or quiz collection can quietly blank the widget that reads it.

    What I'd ship

    Between seasons, keep the URL and fill the grid from the current offer under the “ended” note. Build the Black Friday page the same way, and check which app reads each empty utility collection before deleting anything.

    alt=""
    alt=""
    alt=""
    alt=""
    alt=""
    Draft for image 2, from the alt-text writerBrain Octane poured from a spoon into coffee: quick, lasting energy, brain function and metabolism support
    Medpriority

    Brain Octane C8 MCT Oil, 16 oz. — all five images, as stored in Shopify

    06
    Build & configMedium

    484 product images, and none has alt text in Shopify.

    What I saw

    All 484 images across the 127 products have an empty alt field. The theme covers for it — only 80 of 3,221 images on the live product pages lack alt — by falling back to the product title, so every image of a product gets the same label.

    The files are well named, which makes this a fast fix: hand-pouring-16oz-bulletproof-mct-oil-in-tbsp…

    Why it matters

    The alt field in the product record is what image search, Shopping feeds and agents read — not the theme's fallback. Five identical labels also tell a screen-reader user nothing about the pack shot versus the supplement facts.

    What I'd ship

    Alt text written once, in the product record, on every product build. The writer drafts all 484 and exports a CSV in Shopify's import format.

    Open the alt-text writer →
    Greens Packets, 15 count597 reviews · $29.95 · noindex
    Canonical tag points to
    /product_/greens-powder-jar 404
    Should be
    /products/greens-powder-jar 200
    Medpriority
    07
    SEO & contentMedium

    A canonical tag points at a page that doesn't exist.

    What I saw

    Greens Powder Packets sets its canonical to /product/greens-powder-jar — singular “product” — which returns 404. The live page is /products/greens-powder-jar. The packets page is also noindex.

    Why it matters

    Google ignores a canonical that points to an error page and picks its own. It's one character, and exactly what a pre-launch checklist catches.

    What I'd ship

    Fix the value wherever the override lives (likely a metafield), redirect the typo path as a safety net, and add “canonical target returns 200” to the launch check.

    See it in the redirect map →
    bulletproof.com › bulletproof-product › fatwaterRecipes that use Bulletproof Products - Bulletproof
    bulletproof.com › bulletproof-product › collagen-barsRecipes that use Bulletproof Products - Bulletproof
    bulletproof.com › bulletproof-product › grass-fed-gheeRecipes that use Bulletproof Products - Bulletproof
    bulletproof.com › bulletproof-product › greensRecipes that use Bulletproof Products - Bulletproof
    Medpriority

    The title tag on 4 of the 15 recipe-hub product pages. All 15 match.

    08
    SEO & content · WordPressMedium

    The recipe hub's product pages share one title.

    What I saw

    WordPress publishes 965 posts and 15 “recipes that use this product” pages. All 15 have the same title tag. Several are for products that aren't in the Shopify feed any more, such as Chocolate Bars, Collagen Bars and FATwater, and three old sweepstakes and giveaway pages, one dated 2020, are still in the page sitemap.

    Why it matters

    Fifteen pages with one title compete with each other, and a retired-product recipe page sends ready-to-buy readers nowhere.

    What I'd ship

    A title template (“Recipes with {product} | Bulletproof”), a “Shop {product}” link to the live product on each page, 301s from retired products to their closest current one, and the old sweepstakes out of the sitemap.

    Best sellersbest-sellers16←bestsellers12best-seller1bestseller1
    Coffee favoritescoffee-fave59←coffee-favorites30
    Shipping country codeshipping-banned … GB←shipping-banned … UK3
    Gift with purchasefree_gift2gwp-free-11threshold-gwp1
    Lowpriority

    Tag counts from the public product feed

    09
    MerchandisingLow

    Tags that mean the same thing, spelled four ways.

    What I saw

    “Best sellers” appears as best-sellers (16), bestsellers (12), best-seller (1) and bestseller (1). coffee-fave (59) and coffee-favorites (30) overlap. Three High-Protein Iced Coffee products say UK in their shipping tag where every other product uses GB, the country code. Gift-with-purchase items use three tags.

    Why it matters

    Smart collections and Rebuy, Nosto and shipping rules match tags exactly. A collection built on one spelling misses the rest; a rule that checks GB misses the three that say UK.

    What I'd ship

    A tag dictionary in the SOP, one bulk edit to merge, and a pre-launch check that rejects tags that aren't in the dictionary.

    Filter the QA board to tag issues →
    { "@type": ["Product", "MenuItem"], "name": "Brain Octane® C8 MCT Oil, 16 oz.", "gtin12": "…", ✓ "aggregateRating": { … }, ✓ "offers": { "@type": "Offer", "price": 32.99, "priceCurrency": "USD", "availability": "InStock", "shippingDetails": missing "hasMerchantReturnPolicy": missing } }
    Lowpriority

    Simplified from the live page · the same gap on all 120 live products

    10
    SEO & contentLow

    Product schema is solid, with two gaps worth closing.

    What I saw

    Product JSON-LD is on all 120 live product pages and 118 carry review ratings. None of the offers includes shippingDetails or hasMerchantReturnPolicy. Twenty product pages share a meta description with a sibling, in 8 groups, and 13 pages use the same H1, “Ground Coffee.”

    Why it matters

    Shipping cost and the return window are what Google can show next to the price. If Merchant Center already carries both, this is low priority — worth confirming with the SEO agency.

    What I'd ship

    Both properties added to the Offer in the theme's JSON-LD from the published shipping and return policies, then a Rich Results test on one product per template.

    Working tools

    Built on your catalog, ready for week one.

    Each tool runs on the September 27 snapshot of bulletproof.com's public data and exports something a Shopify admin can import or a team can work from. Nothing here touches the live store.

    Tool 1 · Product launch execution

    Launch QA board

    Every product in the feed, run through the checks I'd run before a launch: page loads, index and sitemap status, canonical target, alt text, meta description, tag spelling and promo eligibility. Tap a row for the detail and the fix.

    ProductPricePageIndexCanonicalAlt textTagsDefects
    Five months

    October to February, through the busiest stretch.

    The contract lands on Black Friday, the holidays and the New Year wellness season. The fixes from this review go first, so the big promos run on a clean catalog, and it ends with SOPs someone else can run.

    1Weeks 1–2 · Early October

    Stop the leaks

    • Access, the dev theme and a baseline crawl, so every fix has a before and after.
    • Resolve the four 404s, the Greens canonical and the Mix-Ins link; import the redirects.
    • Index decisions on the ten standalone products with the SEO agency.
    • Tag dictionary, one merge, SOP v1 in Wrike.
    2October – November

    Black Friday & Cyber Monday

    • Every promo on the calendar built in dev, tested on real carts, verified in production.
    • BFCM landing and collection pages on the evergreen seasonal pattern.
    • One source of truth for exclusions; FAQ and banners written from the live setup.
    • Gift-with-purchase setups tested end to end, then a launch-day checklist and a 48-hour watch.
    3December

    Holiday, then clean-up

    • Gifting and holiday merchandising, with shipping-cutoff messaging.
    • BFCM pages back to their evergreen state; redirects for anything retired.
    • Reviewed alt text imported across the catalog.
    • First Knowledge Base questions live on the agentic storefront.
    4January – February

    New Year launches, handover

    • Launches on the calendar: build, QA, production, 48-hour watch.
    • Shipping and return details in the product schema.
    • WordPress recipe hub: unique titles and links to live products.
    • SOPs finished for every recurring build in this scope.
    Wrike for every deliverableAcceptance criteria in the task, the QA checklist attached, and “done” means retested.
    Slack every dayWhat shipped, what's blocked, what needs a decision, in one short post.
    Zoom when it's fasterA kickoff per launch and a walkthrough of each promo before it goes live.
    Dev first, alwaysNothing reaches production without a preview link and a finished checklist.
    Fit, stated plainly

    What I bring, and what I'd ramp on.

    Your qualifications list, one row at a time. Where I haven't done something, the row says so.

    The posting asks forWhat I bringStatus
    3+ years building and administering Shopify, including PlusThree years building and running Shopify stores for two textile brands (2019–2024), with WordPress and WooCommerce alongside. I haven't administered a Plus store; Plus tools like Flow, Launchpad and checkout extensibility I'd learn on yours.Partial
    HTML and CSSHand-coded, daily. This page and its five tools are plain HTML, CSS and JavaScript; theme work in Liquid.Strong
    Product pages, landing pages, collections, custom templatesProduct setup and catalog data for 14,000+ SKUs, collection structure and navigation, and seasonal campaign pages built with marketing teams.Strong
    Discounts and promotions, including gifts with purchaseRan the seasonal promo calendar — banners, coupons, email assets — for two brands. Gift-with-purchase setups on your apps I'd confirm in the first promo build.Solid
    Metafields, metaobjects and Shopify MarketsThis review reads the settings they drive from outside — search visibility, canonicals, product groups. Hands-on metaobjects and Markets are where I'd put in the most ramp-up time.Ramp
    On-page SEO, structured data, schemaTook two stores' organic rankings to Google pages 1–2 within a year; schema audits and patches in every review I publish.Strong
    WordPress publishingFive-plus years publishing on WordPress, including Elementor corporate sites and a WooCommerce wholesale store.Strong
    Wrike, Slack and ZoomSlack and Zoom are everyday tools. Wrike would be new; the habit it supports — tickets with acceptance criteria — is how this page is organized.Ramp
    QA discipline, attention to detailThis review: 127 products, 110 collections, three published examples recalculated, and every figure dated. Every site I ship gets a desktop and phone pass.Strong
    Independent, remote, against deadlinesIndependent since 2019, and 22 published storefront reviews built and shipped on my own schedule.Strong
    Preferred: Skio, CPG or supplements, agenciesNot yet on Skio, which your store runs. Consumer products at retail and wholesale, not supplements. I'd be implementing your SEO agency's briefs, as I've done with marketing teams.Learning
    AvailabilityCan start right away at 30–40 hours a week for the full five-month term, from Warren, Michigan (Eastern time).
    PortfolioTwenty-two more storefront reviews like this one, each with dated evidence and working prototypes: mousabatarseh.com/reviews.
    About

    Who's doing the work.

    I'm Mousa Batarseh, a web and e-commerce specialist in Metro Detroit. For seven years I've run storefronts end to end for retail and wholesale brands: Shopify and WordPress stores for two textile brands in parallel, catalog migrations of 14,000+ SKUs with redirects intact, and campaign pages for a multi-location Michigan retailer, built with its marketing team and measured in GA4.

    This review is the contract as I read it: build cleanly, QA everything, keep promotions honest, and write it down so it stays fixed.

    LocationWarren, Michigan · remote anywhere in the US
    StackShopify and Liquid, HTML/CSS/JS, WordPress and WooCommerce, GA4, Search Console, Tag Manager
    LanguagesEnglish and Arabic
    Hours30–40 a week, Eastern time

    Let's build it clean.

    Mousa Batarseh · (248) 810-1816 · Remote, US