Introduction

The Category Merchant for Commodity Cheese has asked for help pricing his products, ensuring that his assortment of items is competitive, profitable, and priced in a way that ‘makes sense’ to our customers on-shelf. The Merchant’s objective is to increase units this year, without sacrificing too much margin.

Objectives

  • Find opportunities for price adjustments (based on size, attributes, quality differences, competitive positioning, product similarities, etc.) to increase units sold this year.
  • Determine the impact of the suggested price adjustments on the financials (sales, units, margin, margin rate).


Data Preparation

Assumptions made

  • Monthly sales data is correct, exact matching sales between May and June are a coincidence of being simulated data
  • Interpreted Comp. Price to be competitor/comparable product price
  • The reg price and unit cost of each product stayed consistent for the month, analysis does not include discounts or promotions
  • Defined “Margin” as Gross Profit Margin and “Markup” as difference in Price and Unit Cost

Data Cleaning Steps

  • Change Pack Size column to reflect number of units in a pack (eg. 6 pack of 1oz string cheese)
  • Change Size column to reflect weight of each unit in a pack, measured in oz
  • Change column titles to lower case and replace ” ” with “_”
  • Change price data to plain numbers without “$” or “,”
  • Rename May and June data to include month in the column title (eg. “reg_price_may”)
  • Confirm no missing data in all rows
  • Confirm upc column contains all unique values


Data Processing

Import Dataset

# import dataset
data <- read.csv(csv_path)

# confirm all 52 rows and 18 columns were imported and data types are correct
str(data)
## 'data.frame':    52 obs. of  18 variables:
##  $ category           : chr  "Commodity Cheese" "Commodity Cheese" "Commodity Cheese" "Commodity Cheese" ...
##  $ subcategory        : chr  "Packaged - Slices" "Packaged - Slices" "Packaged - Slices" "Packaged - Bars" ...
##  $ brand              : chr  "365 EVERYDAY VALUE" "365 EVERYDAY VALUE" "365 EVERYDAY VALUE" "365 EVERYDAY VALUE" ...
##  $ pricing_line       : chr  "365 CHEDDAR SLICED 8 OZ OG" "365 CHEDDAR SLICED 12OZ OG" "365 CHEDDAR SLICED 12OZ" "365 CHEDDAR BAR 8OZ" ...
##  $ upc                : num  9948248892 9948244336 9948243409 9948241246 9948241245 ...
##  $ product_description: chr  "CHEDDAR HICKORY SMOKED SLICED OG" "CHEDDAR HICKORY SMOKED SLICED OG" "CHEDDAR KOSHER SLICED" "CHEDDAR MEDIUM BAR" ...
##  $ pack_size          : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ size               : int  8 12 12 8 8 8 16 8 8 12 ...
##  $ uom                : chr  "OZ" "OZ" "OZ" "OZ" ...
##  $ reg_price_may      : num  4.29 5.99 4.99 1.99 1.99 3.29 4.99 2.99 2.69 3.49 ...
##  $ unit_cost_may      : num  3.21 2.27 4.05 2.27 1.69 3.82 2.16 2.31 2.08 3.92 ...
##  $ sales_may          : num  271393 479 499 285526 167176 ...
##  $ comp_price_may     : num  3.29 4.99 3.99 1.49 1.49 2.79 3.99 2.49 2.19 2.99 ...
##  $ reg_price_june     : num  4.29 5.99 4.99 2.49 1.99 3.29 5.49 2.99 2.69 3.49 ...
##  $ unit_cost_june     : num  3.36 2.17 3.95 1.37 1.84 3.72 2.61 2.46 1.98 1.92 ...
##  $ sales_june         : num  271393 479 499 213786 167176 ...
##  $ comp_price_june    : num  3.29 4.99 4.49 1.99 1.49 2.79 4.99 2.99 2.69 2.99 ...
##  $ sales_52_weeks     : num  3256715 5750 5988 2995868 2006112 ...

Transform Data

# overall package weight in oz
data$pack_weight <- data$pack_size * data$size

# add column for type of cheese
data$type <- case_when(
  grepl("cheddar",tolower(data$product_description)) ~ "cheddar",
  grepl("mozzarella",tolower(data$product_description)) ~ "mozarella",
  grepl("colby",tolower(data$product_description)) ~ "colby"
)

# price markups for May and June
data$price_markup_may <- data$reg_price_may - data$unit_cost_may
data$price_markup_june <- data$reg_price_june - data$unit_cost_june

# markup rates for May and June
data$markup_rate_may <- data$price_markup_may/data$reg_price_may
data$markup_rate_june <- data$price_markup_june/data$reg_price_june

# estimate number of units sold by dividing monthly sales by price
data$units_sold_may <- floor(data$sales_may/data$reg_price_may)
data$units_sold_june <- floor(data$sales_june/data$reg_price_june)

# estimate cost of goods sold for May and June
data$cogs_may <- data$unit_cost_may * data$units_sold_may
data$cogs_june <- data$unit_cost_june * data$units_sold_june

# estimate gross profit margin for May and June
data$profit_may <- data$sales_may - data$cogs_may
data$profit_june <- data$sales_june - data$cogs_june

# changes from May to June
data$price_change <- data$reg_price_june - data$reg_price_may
data$units_sold_change <- data$units_sold_june - data$units_sold_may
data$unit_cost_change <- data$unit_cost_june - data$unit_cost_may
data$markup_change <- data$price_markup_june - data$price_markup_may
data$sales_change <- data$sales_june - data$sales_may
data$cogs_change <- data$cogs_june - data$cogs_may
data$profit_change <- data$profit_june - data$profit_may

# percent changes from May to June
data$pct_price_change <- data$price_change / data$reg_price_may
data$pct_units_sold_change <- data$units_sold_change / data$units_sold_may
data$pct_unit_cost_change <- data$unit_cost_change / data$unit_cost_may
data$pct_markup_change <- data$markup_change / data$price_markup_may
data$pct_sales_change <- data$sales_change / data$sales_may
data$pct_cogs_change <- data$cogs_change / data$cogs_may
data$pct_profit_change <- data$profit_change / data$profit_may

Data Analysis

Visualize the dataset

ggplot(data, aes(x=brand, y=sales_52_weeks, fill=brand)) +
  geom_bar(stat="identity") +
  labs(title = "52 Week Sales by Brand",
       fill = "Brand") +
  scale_x_discrete(name="Brand", 
                   guide = guide_axis(n.dodge=2)) +
  scale_y_continuous(name="Sales ($)", 
                     label=comma) +
    scale_fill_manual(values=c("#096638",
                             "#FF0A0A",
                             "#2BC4CF"))

ggplot(data, aes(x=subcategory, y=sales_52_weeks, fill=brand)) +
  geom_bar(stat="identity") +
  labs(title = "52 Week Sales by Subcategory",
       fill = "Brand") +
  scale_x_discrete(name="Subcategory", 
                   guide = guide_axis(n.dodge=2)) +
  scale_y_continuous(name="Sales ($)", 
                     label=comma) +
  scale_fill_manual(values=c("#096638",
                             "#FF0A0A",
                             "#2BC4CF"))

Horizon Organic MOZZARELLA STICK 6CT OG represents all their sales in the Packaged - Single Serve category

packaged_ss <- data%>%
  filter(subcategory == "Packaged - Single Serve")

# packaged_ss
ss_brand_sales <- aggregate(packaged_ss$sales_52_weeks, by=list(Category=packaged_ss$brand), FUN=sum)
ss_brand_sales_fmt <- setNames(ss_brand_sales, c("Brand", "Packaged - Single Serve Sales"))
kable(ss_brand_sales_fmt, format.args = list(big.mark = ","))
Brand Packaged - Single Serve Sales
365 EVERYDAY VALUE 14,243,284.93
HORIZON ORGANIC 2,452,744.86
ORGANIC VALLEY 2,536,595.57
ss_brand_cnt <- table(packaged_ss$brand, dnn = "Brand")
kable(ss_brand_cnt)
Brand Freq
365 EVERYDAY VALUE 4
HORIZON ORGANIC 1
ORGANIC VALLEY 4
may_price_cost <- ggplot(data, aes(x=unit_cost_may, y=reg_price_may, color=subcategory, shape=brand)) +
  geom_point(size=2) +
  labs(title = "May Price By Cost") +
  scale_x_continuous(name="Unit Cost ($)", limits=c(0,10)) +
  scale_y_continuous(name="Price ($)", limits=c(0,15))

june_price_cost <- ggplot(data, aes(x=unit_cost_june, y=reg_price_june, color=subcategory, shape=brand)) +
  geom_point(size=2) +
  labs(title = "June Price by Cost")+
  scale_x_continuous(name="Unit Cost ($)", limits=c(0,10)) +
  scale_y_continuous(name="Price ($)", limits=c(0,15))

may_price_cost

june_price_cost

may_sales_profit <- ggplot(data, aes(x=profit_may, y=sales_may, color=subcategory, shape=brand)) +
  geom_point(size=2) +
  labs(title = "May Sales by Profit Margin",
       x = "Sales") +
  scale_x_continuous(name="Gross Profit Margin ($)", limits=c(-50000, 400000)) +
  scale_y_continuous(name="Sales ($)", limits=c(0,1050000))

june_sales_profit <- ggplot(data, aes(x=profit_june, y=sales_june, color=subcategory, shape=brand)) +
  geom_point(size=2) +
  labs(title = "June Sales by Profit Margin")+
  scale_x_continuous(name="Gross Profit Margin ($)", limits=c(-50000, 400000)) +
  scale_y_continuous(name="Sales ($)", limits=c(0,1050000))

may_sales_profit

june_sales_profit

  • 365 Everyday Value MOZZARELLA SHRED 16OZ has the highest Sales
  • No sales are 0, some products with less than $1,000 in sales appear on the 0 mark
  • There are a handful of products with a negative Profit Margin, discuss with Category Merchant
profit_check <- data.frame(data$subcategory, data$brand, data$pricing_line, data$upc, data$pack_size, data$size, data$reg_price_may, data$unit_cost_may, data$sales_may, data$profit_may, data$reg_price_june, data$unit_cost_june, data$sales_june, data$profit_june)

colnames(profit_check) <- c("subcategory", "brand", "pricing_line", "upc", "pack_size", "size", "reg_price_may", "unit_cost_may", "sales_may", "profit_may", "reg_price_june", "unit_cost_june", "sales_june", "profit_june")

negative_margin_may <- filter(profit_check, profit_may <= 0)
negative_margin_june <- filter(profit_check, profit_june <= 0)

Negative Profit Margin Products in May

kable(head(arrange(negative_margin_may, profit_may), n=10))
subcategory brand pricing_line upc pack_size size reg_price_may unit_cost_may sales_may profit_may reg_price_june unit_cost_june sales_june profit_june
Packaged - Bars 365 EVERYDAY VALUE 365 CHEDDAR BAR 8OZ OG 9948242058 1 8 3.29 3.82 253145.54 -40776.72 3.29 3.72 253145.54 -33082.42
Packaged - Bars 365 EVERYDAY VALUE 365 CHEDDAR BAR 8OZ 9948241246 1 8 1.99 2.27 285525.72 -40173.88 2.49 1.37 213785.59 96161.50
Shredded Cheese 365 EVERYDAY VALUE 365 MOZZARELLA SHRED 8OZ OG 9948243474 1 8 3.99 4.07 352254.34 -7061.54 4.49 2.47 308112.19 138618.32
Shredded Cheese 365 EVERYDAY VALUE 365 CHEDDAR SHRED 8 OZ OG 9948248905 1 8 3.99 4.00 548810.38 -1373.62 4.49 2.47 480037.15 215964.51
Shredded Cheese 365 EVERYDAY VALUE 365 CHEDDAR SHRED 12OZ 9948240361 1 12 3.49 3.92 200.24 -23.20 3.49 1.92 200.24 90.80
Packaged - Slices 365 EVERYDAY VALUE 365 CHEDDAR SLICED 12OZ OG 9948241688 1 12 5.99 6.06 479.20 -5.60 6.49 3.57 439.20 200.01

Negative Profit Margin Products in June

kable(head(arrange(negative_margin_june, profit_june), n=10))
subcategory brand pricing_line upc pack_size size reg_price_may unit_cost_may sales_may profit_may reg_price_june unit_cost_june sales_june profit_june
Packaged - Bars 365 EVERYDAY VALUE 365 CHEDDAR BAR 8OZ OG 9948242058 1 8 3.29 3.82 253145.54 -40776.72 3.29 3.72 253145.54 -33082.42


Change in Price and Impact on Sales and Units Sold

Change in Price and Sales

lm_sales_train <- data.frame(data$pct_price_change, data$pct_sales_change)
colnames(lm_sales_train) <- c("change_price", "change_sales")

lm_sales_model <- lm(change_sales ~ change_price, data = lm_sales_train)

plot(lm_sales_train)
abline(lm_sales_model)

lm_sales_model
## 
## Call:
## lm(formula = change_sales ~ change_price, data = lm_sales_train)
## 
## Coefficients:
##       (Intercept)       change_price  
## -0.00000354300593  -1.00003724744560

Change in Price and Units

lm_units_train <- data.frame(data$pct_price_change, data$pct_units_sold_change)
colnames(lm_units_train) <- c("change_price", "change_units_sold")

lm_units_model <- lm(change_units_sold ~ change_price, data = lm_units_train)
plot(lm_units_train)
abline(lm_units_model)

lm_units_model
## 
## Call:
## lm(formula = change_units_sold ~ change_price, data = lm_units_train)
## 
## Coefficients:
##    (Intercept)    change_price  
##  0.00765760934  -1.99045954485

Change in Price and Impact on Sales and Units Sold, by attributes

Subcategories

kable(table(data$subcategory, dnn = "Subcategory"))
Subcategory Freq
Packaged - Bars 11
Packaged - Single Serve 9
Packaged - Slices 17
Shredded Cheese 15
pct_sales_by_price <- ggplot(data, aes(x=pct_price_change, y=pct_sales_change)) +
  geom_point() +
  stat_smooth(method = "lm",
              formula = y ~ x,
              geom = "smooth") +
  labs(title = "Change in Sales by Change in Price",
       x = "Change in Price (percent)",
       y = "Change in Sales (percent)")

pct_sales_by_price + facet_wrap(~subcategory)

pct_units_sold_by_price <- ggplot(data, aes(x=pct_price_change, y=pct_units_sold_change)) +
  geom_point() +
  stat_smooth(method = "lm",
              formula = y ~ x,
              geom = "smooth") +
  labs(title = "Change in Units Sold by Change in Price",
       x = "Change in Price (percent)",
       y = "Change in Units Sold (percent)")

pct_units_sold_by_price + facet_wrap(~subcategory)

Package Weight

kable(table(data$pack_weight, dnn = "Package Weight"))
Package.Weight Freq
1 1
6 11
8 25
12 10
16 4
24 1
pct_sales_by_price + facet_wrap(~pack_weight)

pct_units_sold_by_price + facet_wrap(~pack_weight)

Type of Cheese

kable(table(data$type, dnn = "Type of Cheese"))
Type.of.Cheese Freq
cheddar 34
colby 1
mozarella 17
pct_sales_by_price + facet_wrap(~type)

pct_units_sold_by_price + facet_wrap(~type)

Brand

kable(table(data$brand, dnn = "Brand"))
Brand Freq
365 EVERYDAY VALUE 36
HORIZON ORGANIC 4
ORGANIC VALLEY 12
pct_sales_by_price + facet_wrap(~brand)

pct_units_sold_by_price + facet_wrap(~brand)

Change in Markup, Subcategories

pct_sales_by_markup <- ggplot(data, aes(x=pct_markup_change, y=pct_sales_change)) +
  geom_point() +
  labs(title = "Change in Sales by Change in Markup, Subcategories",
       x = "Change in Markup (percent)",
       y = "Change in Sales (percent)")

pct_sales_by_markup + facet_wrap(~subcategory)

pct_units_sold_by_markup <- ggplot(data, aes(x=pct_markup_change, y=pct_sales_change)) +
  geom_point() +
  labs(title = "Change in Units Sold by Change in Markup, Subcategories",
       x = "Change in Markup (percent)",
       y = "Change in Units Sold (percent)")

pct_units_sold_by_markup + facet_wrap(~subcategory)

pct_price_by_markup <- ggplot(data, aes(x=pct_markup_change, y=pct_price_change)) +
  geom_point() +
  labs(title = "Change in Price by Change in Markup, Subcategories",
       x = "Change in Markup (percent)",
       y = "Change in Price (percent)")

pct_price_by_markup + facet_wrap(~subcategory)

Current strategy appears to be maintaining Markup rate


Revisit Change in Price and Impact on Sales and Units Sold

Before continuing, we remove the outlier (365 CHEDDAR SHRED 12OZ OG, 9948244337), only ~1-2 products sold, skewing the weight of changes in the results

# 
data <- data[-19,]

Change in Price and Sales

lm_sales_train <- data.frame(data$pct_price_change, data$pct_sales_change)
colnames(lm_sales_train) <- c("change_price", "change_sales")

lm_sales_model <- lm(change_sales ~ change_price, data = lm_sales_train)

plot(lm_sales_train)
abline(lm_sales_model)

lm_sales_model
## 
## Call:
## lm(formula = change_sales ~ change_price, data = lm_sales_train)
## 
## Coefficients:
##          (Intercept)          change_price  
##  0.00000000120977894  -1.00000014922967573

Change in Price and Units Sold

lm_units_train <- data.frame(data$pct_price_change, data$pct_units_sold_change)
colnames(lm_units_train) <- c("change_price", "change_units_sold")

lm_units_model <- lm(change_units_sold ~ change_price, data = lm_units_train)
plot(lm_units_train)
abline(lm_units_model)

lm_units_model
## 
## Call:
## lm(formula = change_units_sold ~ change_price, data = lm_units_train)
## 
## Coefficients:
##   (Intercept)   change_price  
##  0.0133701669  -1.9306647378

In a real world study we would run the Linear Regression model on each attribute to better understand the impact of price changes on sales/units sold. Since we are working with limited data for this case study, we will continue with results across all products in the dataset.

Results

Highlights of this analysis

  1. There is a clear inverse linear relationship between Price Change and Sales

    • 1% price increase results in 1% Sales decrease
    • 1% price increase results in 1.93% units sold decrease
  2. There are a handful of products sold with a negative margin to investigate further

  3. Horizon Organics MOZZARELLA STICK 6CT OG, represents a sizable amount of sales in the Packaged - Single Serve subcategory, this single product represents $2,452,744.86 in sales. It is priced above 365 Everyday Value and below Organic Valley, looking at comparable Mozzarella String Cheese 6ct



Projected Financial Impact Formulas

To best determine how to adjust prices, we will use the following (proof of concept) tool:
Financial Projection Calculator

Projected Sales:
[Original Sales Amount] * (1 - [% Price Change])

Projected Units Sold: [Projected Sales] / [New Price]
[Original Sales Amount] * (1 - [% Price Change]) / [Original Price] * (1 + [% Price Change])

Projected COGS: formula: [Projected Units Sold] * [Unit Cost]
(floor([Original Sales Amount] * (1 - [% Price Change])) / ([Original Sales Amount] * (1 + [% Price Change])) * [Unit Cost]))

Projected Margin: [Projected Sales] - [Projected COGS]
(([Original Sales Amount] * (1 - [% Price Change])) - (floor([Original Sales Amount] * (1 - [% Price Change])) / ([Original Sales Amount] * (1 + [% Price Change])) * [Unit Cost]))

Projected Margin Rate: [Projected Margin] / [Projected Sales] * 100
(([Original Sales Amount] * (1 - [% Price Change])) - (floor([Original Sales Amount] * (1 - [% Price Change])) / ([Original Sales Amount] * (1 + [% Price Change])) * [Unit Cost])) / [Projected Sales] * 100



High Markup Products to focus on

Products with Highest Markup Rate in June

kable(head(arrange(data, desc(markup_rate_may)), n=10))
category subcategory brand pricing_line upc product_description pack_size size uom reg_price_may unit_cost_may sales_may comp_price_may reg_price_june unit_cost_june sales_june comp_price_june sales_52_weeks pack_weight type price_markup_may price_markup_june markup_rate_may markup_rate_june units_sold_may units_sold_june cogs_may cogs_june profit_may profit_june price_change units_sold_change unit_cost_change markup_change sales_change cogs_change profit_change pct_price_change pct_units_sold_change pct_unit_cost_change pct_markup_change pct_sales_change pct_cogs_change pct_profit_change
Commodity Cheese Packaged - Single Serve ORGANIC VALLEY OVF STRING CHEESE 1OZ OG 9396600005 CHEESE STRING MOZZARELLA OG 1 1 OZ 1.99 0.52 7593.75 2.49 1.49 0.62 9501.73 0.99 67488.93 1 mozarella 1.47 0.87 0.738693467337 0.583892617450 3815 6377 1983.80 3953.74 5609.95 5547.99 -0.5 2562 0.10 -0.60 1907.98 1969.94 -61.96 -0.251256281407 0.671559633028 0.192307692308 -0.408163265306 0.251256625514 0.993013408610 -0.011044661717
Commodity Cheese Packaged - Single Serve ORGANIC VALLEY OVF STRING CHEESE 6PK 1OZ OG 9396600214 CHEESE STRING MOZZARELLA 6CT OG 6 1 OZ 6.99 2.58 215225.00 6.99 6.49 2.18 230620.21 6.49 1610307.79 6 mozarella 4.41 4.31 0.630901287554 0.664098613251 30790 35534 79438.20 77464.12 135786.80 153156.09 -0.5 4744 -0.40 -0.10 15395.21 -1974.08 17369.29 -0.071530758226 0.154075998701 -0.155038759690 -0.022675736961 0.071530770124 -0.024850512726 0.127915894623
Commodity Cheese Packaged - Single Serve HORIZON ORGANIC HRZ STRING CHEESE 6PK 1OZ OG 74236560635 MOZZARELLA STICK 6CT OG 6 1 OZ 5.49 2.08 221895.86 5.99 5.49 2.58 221895.86 4.99 2452744.86 6 mozarella 3.41 2.91 0.621129326047 0.530054644809 40418 40418 84069.44 104278.44 137826.42 117617.42 0.0 0 0.50 -0.50 0.00 20209.00 -20209.00 0.000000000000 0.000000000000 0.240384615385 -0.146627565982 0.000000000000 0.240384615385 -0.146626459571
Commodity Cheese Packaged - Slices 365 EVERYDAY VALUE 365 CHEDDAR SLICED 12OZ OG 9948244336 CHEDDAR HICKORY SMOKED SLICED OG 1 12 OZ 5.99 2.27 479.20 4.99 5.99 2.17 479.20 4.99 5750.40 12 cheddar 3.72 3.82 0.621035058431 0.637729549249 80 80 181.60 173.60 297.60 305.60 0.0 0 -0.10 0.10 0.00 -8.00 8.00 0.000000000000 0.000000000000 -0.044052863436 0.026881720430 0.000000000000 -0.044052863436 0.026881720430
Commodity Cheese Packaged - Slices 365 EVERYDAY VALUE 365 MOZZARELLA SLICED 12OZ OG 9948241690 MOZZARELLA SLICED OG 1 12 OZ 5.99 2.49 479.20 4.99 5.99 2.39 479.20 4.99 5750.40 12 mozarella 3.50 3.60 0.584307178631 0.601001669449 80 80 199.20 191.20 280.00 288.00 0.0 0 -0.10 0.10 0.00 -8.00 8.00 0.000000000000 0.000000000000 -0.040160642570 0.028571428571 0.000000000000 -0.040160642570 0.028571428571
Commodity Cheese Shredded Cheese 365 EVERYDAY VALUE 365 CHEDDAR SHRED 16OZ 9948243407 CHEDDAR MILD FEATHER SHRED 1 16 OZ 4.99 2.16 335992.15 3.99 5.49 2.61 302325.60 4.99 3829906.51 16 cheddar 2.83 2.88 0.567134268537 0.524590163934 67333 55068 145439.28 143727.48 190552.87 158598.12 0.5 -12265 0.45 0.05 -33666.55 -1711.80 -31954.75 0.100200400802 -0.182154367101 0.208333333333 0.017667844523 -0.100200406468 -0.011769860247 -0.167694928972
Commodity Cheese Shredded Cheese ORGANIC VALLEY OVF SHRED 6OZ OG 9396645270 MOZZARELLA SHRED FINE OG 1 6 OZ 6.99 3.07 174131.75 5.99 6.49 2.67 186587.53 6.99 773069.98 6 mozarella 3.92 3.82 0.560801144492 0.588597842835 24911 28750 76476.77 76762.50 97654.98 109825.03 -0.5 3839 -0.40 -0.10 12455.78 285.73 12170.05 -0.071530758226 0.154108626711 -0.130293159609 -0.025510204082 0.071530780573 0.003736167205 0.124622932696
Commodity Cheese Packaged - Bars ORGANIC VALLEY OVF BAR 8OZ OG 9396625370 MOZZARELLA OG 1 8 OZ 7.99 3.62 85258.88 8.49 7.49 3.22 90594.22 7.99 539880.91 8 mozarella 4.37 4.27 0.546933667084 0.570093457944 10670 12095 38625.40 38945.90 46633.48 51648.32 -0.5 1425 -0.40 -0.10 5335.34 320.50 5014.84 -0.062578222778 0.133552014995 -0.110497237569 -0.022883295195 0.062578115030 0.008297648697 0.107537331548
Commodity Cheese Shredded Cheese HORIZON ORGANIC HRZ SHRED 6OZ OG 74236560630 MOZZARELLA SHRED OG 1 6 OZ 4.99 2.31 68558.00 4.99 4.99 2.81 68558.00 4.49 360914.42 6 mozarella 2.68 2.18 0.537074148297 0.436873747495 13739 13739 31737.09 38606.59 36820.91 29951.41 0.0 0 0.50 -0.50 0.00 6869.50 -6869.50 0.000000000000 0.000000000000 0.216450216450 -0.186567164179 0.000000000000 0.216450216450 -0.186565188096
Commodity Cheese Packaged - Slices ORGANIC VALLEY OVF CHEDDAR SLICED 6OZ OG 9396600081 CHEDDAR MILD SLICED OG 1 6 OZ 7.39 3.49 92879.88 7.89 6.89 3.09 99164.03 7.39 445542.88 6 cheddar 3.90 3.80 0.527740189445 0.551523947750 12568 14392 43862.32 44471.28 49017.56 54692.75 -0.5 1824 -0.40 -0.10 6284.15 608.96 5675.19 -0.067658998647 0.145130490134 -0.114613180516 -0.025641025641 0.067658894477 0.013883442554 0.115778712772

Questions for Partner Teams

Promotion Analytics:
Can you provide historical data on past promotions in the Commodity Cheese category? How was success measured and what patterns in purchasing behavior were discovered?

Competitive Intelligence:
What are the latest insights on pricing strategies and trends from key competitors? How have they adjusted pricing based on product attributes (size, quality, subcategory)?

Consumer Insights:
Who is the target audience in the cheese category and what are their current preferences and purchasing behaviors? Are there specific attributes that hold significant value when making purchasing decisions?

Other:
What are the real world values for units, margin, margin rate, and sales for the past year (at least)?