B2B SaaSData PipelineRetail AnalyticsProduct Matching

B2B competitive intelligence for retail companies

An 8-week Planoverse pilot that turned Woolworths and Coles in-store mobile APIs into daily shelf intelligence for category managers.

Role

Product Builder

Timeline

8 weeks

Team

2

Summary

More actionable data
than any other competitor product
85% Satisfaction Score
by external stakeholders

01 · Problem

Category managers still rely on 1–2 discreet store visits a year to guess what competitors stock, promote, and display. There is no structured weekly data.

02 · Approach

Woolworths and Coles already expose in-store assortment, stock status, and aisle coordinates inside their mobile apps. I built a pipeline to retrieve it daily and match SKUs across banners.

03 · Outcome

An 8-week pilot turned that API data into shelf intelligence executives could act on: bay share, adjacency, and range store to store. Woolworths signed after the pilot.

Bay comparison for canned food
Bay share calculation methodology
Coles supermarket aisle
Woolworths supermarket aisle
Pasta bay comparison with stakeholder notes

Scroll for the full case study ↓

Context

Category managers at large grocers allocate capital, range, and promo spend from one question: what are competitors doing this week? That answer drives which SKUs stay on shelf, which suburbs get which offers, and whether shoppers leave thinking your store is the expensive one.

Retailers pay heavily for that signal. The usual method is still a person walking a rival store once or twice a year, scribbling notes on facings and end caps. Photos are risky. You can get escorted out. The output is anecdotal, not comparable week to week.

At Planoverse I built a demo and pilot for Woolworths that replaced those visits with structured daily data: price, stock, aisle, bay, and coordinates pulled from the same in-store flows shoppers already use on mobile.

The data problem

Competitive intelligence in grocery has no shared schema. Every banner names categories differently, uses different barcodes for the same pack size, and hides layout detail outside the apps built for shoppers.

1–2×
Store visits per year

The best manual programs still sample a handful of locations. Promo matching stays lagged by months.

No photos
Field risk

Teams want evidence. Stores do not want cameras in every aisle.

Millions
Budget at stake

Range and price perception decisions run on incomplete competitor pictures.

Approach

Woolworths and Coles already publish in-store assortment inside their mobile apps: search, stock status, and pathfinding to a product on the floor. That data does not appear on the public website in a form category teams can subscribe to.

I built a daily collection process that reads those apps like a shopper, stores the raw results, matches equivalent products across banners, and publishes shelf intelligence to the Planoverse dashboard. Category managers never touch the source systems — they get refreshed charts and store maps each morning.

From app to dashboard

Process flowchart · daily shelf intelligence
Planoverse daily data pipeline process chart Flowchart: daily run opens shopper sessions, fetches Coles and Woolworths store data in parallel, archives raw snapshots, matches products, maps categories, computes bay metrics, publishes the dashboard, and ends when managers review. SOURCECOLLECTIONPLATFORMDELIVERYColes appWoolworths app Daily run Open session Fetch ColesFetch Woolies Raw archive PARALLEL Match SKUsMap categoriesBay metricsPublish dashboardManagers review

Parallel collection from both banners, then a single transform and publish path each morning.

Cross-banner product matching

The two banners use different product names, barcodes, and category trees for the same item on shelf. Matching happens bottom up: pair SKUs first, then derive shared categories from those pairs.

UML activity diagram · cross-banner product matching
Planoverse cross-banner product matching UML activity diagram Compact UML activity diagram: load SKUs, normalise names, same-brand gate, score similarity, threshold gate, lock a one-to-one match, derive shared categories, or skip the pair. «partition» Matching engine Load store-pair SKUs Normalise names Same brand? Skip pair Score similarity Above threshold? Lock 1:1 match Derive shared categories [yes][no][yes][no]StartActivityDecisionRejectEnd

Pair equivalent SKUs first, then derive shared category labels from those pairs.

Pilot deliverables

Share of store

Woolworths executives asked one question first: how does shelf space in our store compare to the Coles down the road? I built a butterfly chart of bay-equivalent share by subcategory, store by store.

Bay-equivalent share at Ashfield. Mixed bays split by product mix, not winner-take-all.
Executives self-served once the metric was explained inline.

Category standardisation

Woolworths "Pantry" splinters across Pantry, Chips and Chocolate, Dietary, and World Foods on Coles. Stakeholders needed two-way mapping built bottom up: match products first, derive shared categories second.

Shared label in the middle; each banner keeps its own vocabulary.
Ashfield subcategories with bay share, on-special %, and range depth.
Same aisle topic, different internal taxonomy splits on each banner.

Methodology transparency

Executives would not trust cross-banner numbers unless the math was visible. Inline explanations for bay share, adjacency, and mapping rules let category leaders self-serve without a customer success rep in the room.

Fractional bays when a shelf section carries more than one category.
Drill-down from chart row to SKU lists and adjacency touch counts.

Macro store intelligence

Macro layout is which categories sit beside each other on the floor. That placement drives basket size: bread next to honey on promo pulls incremental spend. Every store team wants the competitor map, not a spreadsheet of SKUs.

I built an interactive floor plan per banner: pan, zoom, tap a bay, compare product to product or category to category, then export a standardised view for leadership reviews.

Store footprint comparison across banners at the same suburb.
Bay-level drill-in: tap a section to compare SKU range and adjacency.
Matching bays across banners with footprint % and adjacency.
Stakeholders annotated views directly once explanations were embedded.

Field verification

Dashboards are easy to distrust when the numbers come from someone else's pipeline. We printed the aisle and bay outputs and walked our local Coles and Woolworths with the sheets in hand.

Bay labels, adjacency, and category splits matched what we saw on the floor. A few edge cases were off — mostly Coles bays where map pins had not resolved to a bay number yet — but the macro layout and share-of-store rankings held up. That visit is what got category managers comfortable signing off on the pilot.

Coles — South City, aisle view used as a floor reference.
Woolworths — Alexandria frozen section, same walk-through.

Result

The Woolworths pilot converted to a contract. Category leaders said they had not seen competitor shelf data at this granularity before: daily refresh, bay-level coordinates, and explicit mapping between banner taxonomies.

Learnings

Data without process transparency does not get used. The hard part was explaining how pairs, bay fractions, and category crosswalks worked without publishing the parts of the scrape stack we treat as trade secrets. Documented methodology carried more weight than another dashboard tile.