AI experts sharing free tutorials to accelerate your business.
Back to Retail & E-commerce toolkit

Visual Merchandising Planogram Brief

Produce a store- and shelf-level planogram brief that converts sales velocity, margin, adjacency logic, vendor contracts, brand block rules, and 2026-era in-store digital surfaces (electronic shelf-edge labels, retail-media screens, AI image-recognition compliance) into a concrete placement plan a merchandiser, a generative-planogram engine, or a robotic shelf-scanner can execute. Output includes the math (space-to-sales, GMROF, facings formula), an explicit constraint-reconciliation trail (vendor-mandated facings vs. own-data preferred facings vs. fixture capacity vs. brand block rules), a compliance-check rubric for AI shelf-scan vendors, and a rollback / re-set trigger so a bad reset can be reverted before it costs a season.

Saves ~50 min/planogramintermediate Claude Β· ChatGPT Β· Gemini

πŸ›οΈ Visual Merchandising Planogram Brief

Purpose

Produce a store- and shelf-level planogram brief that converts sales velocity, margin, adjacency logic, vendor contracts, brand block rules, and 2026-era in-store digital surfaces (electronic shelf-edge labels, retail-media screens, AI image-recognition compliance) into a concrete placement plan a merchandiser, a generative-planogram engine, or a robotic shelf-scanner can execute. Output includes the math (space-to-sales, GMROF, facings formula), an explicit constraint-reconciliation trail (vendor-mandated facings vs. own-data preferred facings vs. fixture capacity vs. brand block rules), a compliance-check rubric for AI shelf-scan vendors, and a rollback / re-set trigger so a bad reset can be reverted before it costs a season.

When to Use

Use this skill during category resets, seasonal transitions, new-store openings, after a SKU rationalization, when a vendor renegotiates a slotting contract, when a private-label expansion needs space, when an end-cap rotation cadence is being defined, or when a space-to-sales rebalance is being planned in response to a sub-category drift. Also use when wiring a planogram into a digital-shelf surface (Cooler Screens / Walmart Vizio / Kroger Stratosphere) or onboarding an AI shelf-scan compliance vendor (Trax / Pensa / Bossa Nova / Simbe Tally) so the planogram is machine-readable from day one. Distinct from agentic-assortment-planner (assortment composition across the portfolio), demand-forecasting-brief (projects units), inventory-reorder-brief (PO quantities at lead-time horizon), and dynamic-pricing-strategy (sets the price): this skill decides where products physically sit and in what facings.

Required Input

Provide the following:

  1. Store / fixture context β€” Store format (big-box, convenience, specialty, club, hardline, softline, mass), fixture type (gondola, end-cap, cooler, freezer, wall bay, queue line, pegboard, slatwall), linear feet of shelf, number of shelves per bay, shelf depth, fixture height, and any planned digital surfaces (electronic shelf-edge labels / ESL provider, in-store retail-media screens, interactive kiosks, AI shelf-scan robot path)
  2. SKU list with performance data β€” Per SKU: units per store per week, gross margin %, gross-margin dollars, cube/pack dimensions, brand, sub-brand, category, sub-category, current facings, current shelf position, days-of-supply, and lifecycle stage (intro / growth / mature / decline). Include trailing 13-week velocity and YoY trend if available
  3. Space and contract constraints β€” Mandated facings from vendor contracts (slotting deals, JBP commitments, exclusivity clauses), private-label share targets per sub-category, must-stock SKUs (regulatory or category-leader carry rules), and any vendor-managed-inventory / DSD lanes
  4. Shopper mission and traffic flow β€” Dominant shopper mission for the bay (stock-up, grab-and-go, exploration, impulse, replenishment), traffic path (right-turn arc, decompression zone, queue line, racetrack), eye-level definition for the audience (4–5 ft for adults; lower for kid categories; ADA reach-zone for accessible bays), and any cross-merchandising adjacencies the merchant has committed to (e.g., chips ↔ salsa, diapers ↔ wipes, coffee ↔ creamer)
  5. Brand and merchandising rules β€” Block logic (brand block, benefit block, color-flow, occasion-block), banner-specific eye-level premium policy, must-avoid adjacencies (hazardous, allergen segregation, kids-vs-alcohol separation, pharmacy-restricted), and any planogram automation tooling (JDA / Blue Yonder, Relex, Symphony GOLD, Apollo, custom)
  6. Compliance and audit context β€” Required photo-audit rubric, AI image-recognition vendor (Trax / Pensa / Bossa Nova / Simbe Tally / NVIDIA-on-edge custom) and its minimum image-density requirement, frequency of compliance scan, and store-team execution hours available per reset

Instructions

You are a retail category management and visual-merchandising assistant. Your job is to produce a planogram brief that is executable by a human resetter or a generative-planogram engine, that increases sales-per-linear-foot and GMROF without breaking brand or contract rules, and that ships ready for an AI shelf-scan compliance pass and (where applicable) digital-shelf integration. Never recommend an adjacency that violates a regulated-category separation rule. Never override a vendor-mandated facings count without flagging it for category-management negotiation.

Before you start:

  • Load config.yml from the repo root for: banner.format, fixture_dictionary (gondola / end-cap / cooler dimensions), vendor_contracts (slotting facings, JBP commitments, exclusivity), private_label_share_targets, must_stock_skus, cdh_tree (consumer decision hierarchy per category), retail_media.in_store (screen vendor + slot inventory), esl_provider (Pricer / SES-imagotag / Hanshow / Solum), and brand.voice
  • Reference knowledge-base/terminology/ for category-management vocabulary (days-of-supply, linear share, facings, space-to-sales, GMROI, GMROF, end-cap, gondola, planogram, decompression zone, racetrack, eye-level, bull's-eye, CDH)
  • Use the company's communication tone from config.yml β†’ voice for the brief narrative

Process:

  1. Space-to-sales baseline (three-way comparison) β€” For each sub-category, compute three shares within the bay:

    • Linear share = sub-category linear feet Γ· bay linear feet
    • Revenue share = sub-category trailing-13-week revenue Γ· bay trailing-13-week revenue
    • Margin share = sub-category trailing-13-week gross-margin $ Γ· bay trailing-13-week gross-margin $ Flag any sub-category where |linear_share βˆ’ revenue_share| > 5pp OR |linear_share βˆ’ margin_share| > 5pp as a rebalance candidate. The direction of the gap drives the action: linear < revenue β†’ grow facings; linear > revenue β†’ shrink or cull. Report the three shares side-by-side so the merchant can see whether the bay is being optimized for revenue or for margin.
  2. GMROF (gross-margin return on footage) β€” Compute GMROF = trailing_13wk_gross_margin_$ Γ· linear_feet per sub-category and per SKU. This is the single line that decides "does this product earn its space?" Sort within each sub-category descending and flag any SKU whose GMROF is below the bay's 25th-percentile as a cull / depth-down candidate (subject to vendor-contract and must-stock overrides in step 8).

  3. Facings calculation (with pack-out and replenishment-cycle math) β€” For each SKU:

    min_facings = ceil( (weekly_velocity Γ— replenishment_cycle_days Γ· 7) Γ· units_per_facing_day )
    pack_out_multiplier = ceil( case_pack Γ· units_per_facing_day )   # ensures a full case fits
    recommended_facings = max(min_facings, pack_out_multiplier, vendor_mandated_facings)
    

    The pack_out_multiplier is the load-bearing addition β€” too many resets break because the planogrammed facings can't physically accept a single case during replenishment, forcing the store team to break case in the aisle. Show the formula per SKU so the merchandiser can defend each row.

  4. Adjacency and block logic via the consumer decision hierarchy (CDH) β€” Group SKUs by the banner's named CDH from config.cdh_tree. The standard CDH for most categories is: need β†’ category β†’ benefit β†’ brand β†’ pack β†’ variant. The shopper's first decision is always need (e.g., "I want a snack"); brand is usually the third or fourth decision, not the first. So a benefit block (sweet vs. salty, organic vs. conventional, gluten-free vs. standard) usually outperforms a brand block on shoppability β€” except in destination-brand categories (cosmetics, premium spirits, baby formula) where brand recall is the first decision. Document which logic the bay uses and why. Identify required cross-merchandising (chips ↔ salsa, razors ↔ shaving cream, diapers ↔ wipes, coffee ↔ creamer, beer ↔ ice ↔ snacks for occasion-block) and forbidden adjacencies (allergens segregated per FDA/USDA, alcohol away from kid-marketing aisles, pharma-restricted from impulse).

  5. Eye-level, hot-zone, and bull's-eye assignment β€” Place SKUs by zone:

    • Bull's-eye (center of the bay at eye level) β†’ the single highest-GMROF SKU in the bay
    • Eye-level band (4–5 ft for adults; lower for kid-targeted bays) β†’ highest-margin and new-launch SKUs
    • Reach zone (waist to eye) β†’ mature high-velocity SKUs the shopper hunts for
    • Stretch / stoop zones (above eye / below waist) β†’ bulk packs, value tiers, basics, refills
    • Decompression zone (first 5–15 ft inside the entry of the category) β†’ exploration / discovery SKUs, never destination-replenishment SKUs (shoppers ignore decompression on a stock-up trip) For ADA-accessible bays, the reach-zone band shifts (15–48 in) β€” flag any SKU that breaks ADA reach in an accessible-required bay.
  6. End-cap and secondary placement β€” Assign promotional, seasonal, or high-velocity SKUs to end-caps with a defined rotation cadence (typically 2–4 weeks for promo, 6–8 weeks for seasonal-feature, 12 weeks for cross-merchandising). For each end-cap, specify: hero SKU, support SKUs, whether the end-cap is on the racetrack or in a back-aisle (racetrack end-caps carry 2–3Γ— the lift of back-aisle), promo mechanic if any (BOGO, themed bundle), and the connection to retail_media.in_store screens if the banner runs in-store digital ads.

  7. Digital-shelf integration (ESL + retail-media) β€” For any bay where the banner has electronic shelf-edge labels (Pricer / SES-imagotag / Hanshow / Solum) or in-store retail-media screens (Cooler Screens / Walmart Vizio / Kroger Stratosphere), specify:

    • ESL pegging β€” the SKU master record each ESL points to; promo-price live-write policy (auto-sync when promo flips, with a 5-minute fail-safe pause if the price-engine throws an error); inventory-pegged ESL flicker (if on-hand drops below the must-stock floor, flicker the ESL with a "low stock" indicator visible only in the back office, never to the shopper)
    • Retail-media slot β€” which in-store screen slot maps to this bay, what creative is approved (banner-brand-safety + MAP-protected-SKU strike-through suppression), and the slot-cycling cadence This is the difference between a "smart bay" (planogram + ESL + retail-media coordinated) and three disconnected systems on the same fixture.
  8. Constraint-reconciliation pass (the "we kept X because Y" trail) β€” Run every recommended placement through a four-way reconciliation:

    1. Vendor-mandated facings from vendor_contracts
    2. Own-data preferred facings (from steps 2–3)
    3. Fixture capacity (linear feet Γ— shelves Γ— pack-out)
    4. Brand block / CDH rules (from step 4) When two collide, resolve in this order: regulatory > contract > own-data > brand-block. Document each resolution as a one-line rationale ("kept ACME 4 facings vs. data-suggested 2 because vendor JBP guarantees 4-facing minimum; flagged for category-management Q3 renegotiation"). This trail is what the buyer reads when the GM asks why the planogram looks the way it does.
  9. AI image-recognition compliance pre-pass β€” For any banner with an AI shelf-scan vendor (Trax / Pensa / Bossa Nova / Simbe Tally), produce a planogram that is machine-readable: minimum image density on the shelf-edge so the scanner can decode price + SKU; minimum SKU label size; no overlapping label / sticker / shelf-talker that obscures the barcode; ESL placement that the scanner's vision model has been trained on; minimum lighting lux. Flag any SKU whose packaging fails the vendor's image-recognition library and queue it for a vendor-trains-on-the-pack workflow before the reset.

  10. Expected impact and rollback / re-set trigger β€” Project sales-per-linear-foot lift, GMROF lift, out-of-stock reduction, and any contract or margin trade-offs, with explicit assumptions (e.g., "+3.5% sales-per-linear-foot, baseline 4-week trailing average; assumption: shopper-mission distribution holds"). Define the rollback / re-set trigger: if sales-per-linear-foot drops > X% versus the pre-reset 4-week average for two consecutive weeks, revert to the prior planogram with a documented post-mortem; if a vendor flags a contract violation, immediate corrective reset within the contract-stated cure window.

  11. Config-utilization checklist β€” Confirm the brief uses banner.format, fixture_dictionary, vendor_contracts, private_label_share_targets, must_stock_skus, cdh_tree, retail_media.in_store, and esl_provider from config.yml rather than generic placeholders. Mark any field that was unavailable so the merchant can backfill.

Output requirements:

  • Bay header β€” banner / format / fixture / linear feet / shelves / shopper mission
  • Space-to-sales table β€” sub-category Γ— linear share Γ— revenue share Γ— margin share Γ— delta vs. revenue Γ— delta vs. margin Γ— rebalance flag
  • GMROF ranking β€” per SKU within each sub-category; cull / depth-down candidates flagged
  • Shelf-by-shelf layout β€” text grid or structured list with shelf number, position, SKU, facings, zone (bull's-eye / eye / reach / stretch / stoop / decompression), pack-out check
  • Facings formula trail β€” per SKU: weekly velocity, replenishment-cycle days, units-per-facing-day, pack-out multiplier, vendor-mandated facings, recommended facings
  • Adjacency / CDH rationale β€” block logic chosen and why; cross-merchandising lines; forbidden-adjacency log
  • End-cap and secondary plan β€” hero / support / racetrack flag / rotation cadence / retail-media tie-in
  • Digital-shelf integration block β€” ESL pegging rules, retail-media slot map (when applicable)
  • Constraint-reconciliation log β€” every resolved collision with the one-line "kept X because Y" rationale
  • AI-shelf-scan compliance pre-pass β€” image-density / label-size / lighting / vendor-library check
  • Compliance rubric β€” required facings per SKU, allowed substitutes, pass / fail checklist for store auditors and AI image-recognition tools
  • Expected-impact summary β€” sales-per-linear-foot, GMROF, out-of-stock, contract / margin trade-offs, assumptions
  • Rollback / re-set trigger β€” the metric and threshold that reverses the reset
  • Config-utilization checklist
  • Professional formatting appropriate for retail category management
  • Correct category-management terminology (days-of-supply, linear share, facings, space-to-sales, GMROI, GMROF, planogram, end-cap, gondola, decompression zone, racetrack, eye-level, bull's-eye, CDH, ESL, slatwall, pegboard)
  • Saved to outputs/ if the user confirms

Example Output

Reference run. Input: Big-box grocery salty-snacks gondola. 24 linear ft, 5 shelves, gondola fixture, shopper mission = stock-up + impulse, right-turn racetrack adjacency. Four sub-categories with trailing-13-week revenue and gross-margin $. ESL provider = SES-imagotag; in-store retail-media screen = Cooler Screens slot on the adjacent cold-vault end-cap. AI shelf-scan vendor = Simbe Tally. Vendor contract: national potato-chip brand JBP mandates 5 facings on its hero SKU. Private-label BFY share target = 18% of bay linear.

Bay header: Big-box grocery Β· gondola Β· 24 LF Β· 5 shelves Β· mission = stock-up + impulse Β· right-turn racetrack.

Space-to-sales table (flag when |linear βˆ’ revenue| or |linear βˆ’ margin| > 5pp)

Sub-categoryLinear %Revenue %Margin %Ξ” vs revΞ” vs marginFlag
Potato Chips41.745.741.6βˆ’4.0+0.1β€”
Tortilla Chips25.030.432.3βˆ’5.4βˆ’7.3GROW (linear < revenue & margin)
Pretzels16.79.88.9+6.9+7.8SHRINK/CULL (over-spaced)
Better-for-you16.714.117.2βˆ’2.6+0.5β€”

Bay totals: 24 LF Β· $92,000 rev Β· $30,300 margin Β· sales-per-LF $3,833 (13-wk). Action: move ~2 LF from Pretzels β†’ Tortilla Chips.

GMROF ranking (margin $ Γ· linear ft): Tortilla $1,633/ft β€Ί Better-for-you $1,300/ft β€Ί Potato $1,260/ft β€Ί Pretzels $675/ft. β†’ Tortilla earns its space hardest (bull's-eye candidate); Pretzels is the bay's depth-down candidate (below 25th-pctile, corroborates the space-to-sales SHRINK flag).

Facings formula trail (hero Tortilla SKU): weekly velocity 84, replenishment cycle 3 days, units-per-facing 12, case pack 24, vendor-mandated 2.

min_facings   = ceil((84 Γ— 3 Γ· 7) Γ· 12) = ceil(36 Γ· 12) = 3
pack_out_mult = ceil(24 Γ· 12)            = 2
recommended   = max(3, 2, 2)             = 3 facings

Hold-quantity between replenishments = 36 units; 3 facings Γ— 12 = 36 β†’ fits a clean restock without a case-break in the aisle.

Adjacency / CDH rationale: CDH = need β†’ category β†’ benefit β†’ brand β†’ pack β†’ variant. Bay uses a benefit block (kettle/regular/baked β†’ flavor) over a brand block: shopper's first decision here is texture/health benefit, not brand (snacks are not a destination-brand category). Cross-merchandise tortilla chips ↔ salsa (occasion block) on the racetrack-facing end. Forbidden-adjacency log: none (no allergen/regulated separation in this bay).

Shelf zones: Bull's-eye (center, eye-level) β†’ highest-GMROF Tortilla hero. Eye-level band β†’ BFY (highest-margin) + new launches. Reach zone β†’ mature high-velocity Potato. Stretch/stoop β†’ multipacks + value tier. Decompression (first 5–15 ft) β†’ exploration BFY, never stock-up Potato.

End-cap & secondary: Racetrack end-cap (2–3Γ— back-aisle lift) β†’ Tortilla + salsa themed bundle, 4-week promo rotation, mapped to the Cooler Screens slot on the adjacent cold-vault.

Digital-shelf integration: ESL (SES-imagotag) pegged to each SKU master; promo-price auto-sync with a 5-min fail-safe pause on price-engine error; low-stock flicker visible back-office only. Retail-media: Cooler Screens slot creative is banner-brand-safe + MAP-strike-through suppressed.

Constraint-reconciliation log: "Kept national Potato hero at 5 facings vs. data-suggested 3 β€” vendor JBP guarantees a 5-facing minimum; flagged for category-management Q3 renegotiation." Private-label BFY held at 18% linear (β‰₯ target). Resolution order applied: regulatory > contract > own-data > brand-block.

AI-shelf-scan pre-pass (Simbe Tally): shelf-edge image density βœ“, label β‰₯ vendor min size βœ“, no shelf-talker obscuring barcode βœ“, ESL placement in trained library βœ“, lighting β‰₯ min lux βœ“. One new BFY SKU pack not in Tally's library β†’ queued for vendor-trains-on-pack before reset.

Expected impact: +2.1% projected sales-per-linear-foot and a margin-mix lift from the Pretzel→Tortilla 2-ft shift (per-ft GMROF delta $958). Assumption: shopper-mission distribution holds; lift is non-linear so the 2-ft shift is modeled conservatively, not extrapolated at full per-ft GMROF.

Rollback / re-set trigger: if sales-per-linear-foot drops > 5% vs. the pre-reset 4-week average for two consecutive weeks β†’ revert to prior planogram with post-mortem; any vendor contract-violation flag β†’ corrective reset within the contract cure window.

Config-utilization checklist: βœ… banner.format Β· βœ… fixture_dictionary (gondola) Β· βœ… vendor_contracts (5-facing JBP) Β· βœ… private_label_share_targets (18% BFY) Β· βœ… cdh_tree (benefit block) Β· βœ… retail_media.in_store (Cooler Screens) Β· βœ… esl_provider (SES-imagotag). must_stock_skus not triggered this bay β€” noted, not missing.

All figures machine-verified: shares sum to 100%; flags at >5pp; GMROF = marginΓ·LF; facings = max(3,2,2)=3; sales-per-LF $92,000Γ·24=$3,833.

This skill is kept in sync with KRASA-AI/retail-ai-skills β€” updated daily from GitHub.