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.
# 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 ...
# 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
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
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 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
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)
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)
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)
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)
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
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.
There is a clear inverse linear relationship between Price Change and Sales
There are a handful of products sold with a negative margin to investigate further
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
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
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 |
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)?