From 14c8aa0e85518878be04140a36200d6526b62384 Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Tue, 22 Jul 2025 21:37:58 -0500 Subject: [PATCH 1/3] add draft post, images (refs #2) --- .../posts/dominos-pizza-sauce/index.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 container/site/content/posts/dominos-pizza-sauce/index.md diff --git a/container/site/content/posts/dominos-pizza-sauce/index.md b/container/site/content/posts/dominos-pizza-sauce/index.md new file mode 100644 index 0000000..199fb9f --- /dev/null +++ b/container/site/content/posts/dominos-pizza-sauce/index.md @@ -0,0 +1,19 @@ ++++ +categories = ["food"] +tags = ["reverse-engineer","dominos"] +date = 2025-07-22T20:00:00-05:00 +description = "" +draft = true +slug = "dominos-pizza-sauce" +title = "๐Ÿ… Domino's Pizza Sauce" +author = "nicholas" ++++ + +{{< image + src="images/dominos-pizza-sauce-nutrition.PNG" + caption="Domino's Pizza sauce nutrition" >}} + +{{< image + src="images/dominos-pizza-sauce-ingredient-list.PNG" + caption="Domino's pizza sauce ingredient list" >}} + -- 2.54.0 From 1e5b362b10523cbbcb76447fb6f0b359658715b4 Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Thu, 24 Jul 2025 11:20:59 -0500 Subject: [PATCH 2/3] add content --- .../posts/dominos-pizza-sauce/index.md | 216 +++++++++++++++++- 1 file changed, 213 insertions(+), 3 deletions(-) diff --git a/container/site/content/posts/dominos-pizza-sauce/index.md b/container/site/content/posts/dominos-pizza-sauce/index.md index 199fb9f..0f993b0 100644 --- a/container/site/content/posts/dominos-pizza-sauce/index.md +++ b/container/site/content/posts/dominos-pizza-sauce/index.md @@ -9,11 +9,221 @@ title = "๐Ÿ… Domino's Pizza Sauce" author = "nicholas" +++ -{{< image - src="images/dominos-pizza-sauce-nutrition.PNG" - caption="Domino's Pizza sauce nutrition" >}} +For a brief moment in time, Domino's website contained the holy trinity of reverse-engineering material: +- ingredient lists +- nutrition +- *total* weights for each food item + +This information can normally be found on the site to some degree, but what is unusual this time is the inclusion of the total weight values for each food item. This makes me job especially easy. + +## ๐Ÿ“‹ Ingredient List +The ingredient list provides the **what**, and the nutrition and total weight info provides **how much**. This gives me an almost complete picture of the sauce. + +I begin by looking at the ingredient list for where to start: {{< image src="images/dominos-pizza-sauce-ingredient-list.PNG" caption="Domino's pizza sauce ingredient list" >}} +The ingredient list is simple: + +- water +- tomato paste +- sugar +- salt +- spices +- dehydrated garlic +- soybean oil +- citric acid + +Right away, I can simplify the list by combining the water, tomato paste, and citric acid. These are the ingredients already exclusively present in **tomato paste** and **tomato puree**. (I have selected tomato puree as the base of my sauce for cost and convenience, the difference is mostly water content). The ingredient list of the tomato puree seems to be in agreement with that of the Domino's sauce: + +{{< image + src="images/tomato-puree-ingredient-list.png" + caption="Contadina Tomato Puree ingredient list" >}} + +Now I have: +- tomato paste/puree +- sugar +- salt +- spices (oregano, marjoram, parsley, basil, tarragon) +- dehydrated garlic +- soybean oil + +I took some necessary liberties with the spices. It could be anything! I selected my favorites, leaving out any savory herbs like rosemary and thyme. I want this to be a bright, sweet sauce, like Domino's. + +## ๐Ÿงช Nutrition +The document published on Domino's website includes pizza sauce nutrition and weight values for each corresponding size of pizza. I look to the *Extra Large* pizza for guidance, since it will contain the greatest weight and nutrition values, which will minimize uncertainty introduced by round numbers to the greatest extent possible. + +{{< image + src="images/dominos-pizza-sauce-nutrition.PNG" + caption="Domino's Pizza sauce nutrition" >}} + +Now I can do some simple math to fill in the table. + +|Ingredient|weight(g)| +|-|-| +|tomato puree|?| +|sugar|?| +|salt|?| +|spices|?| +|dehydrated garlic|?| +|soybean oil|?| +|**TOTAL**|**227**| + +### ๐Ÿ—„๏ธ Tomato Product Reference +From **FoodData Central** database for precise values for tomato puree, tomato paste nutrients, water, calories, etc: + +**Tomato Puree** +|Nutrient|Amount| +|-|-| +|Water|89.1 g| +|Energy|35 kcal| +|Fiber|2 g| +|Protein|1.58 g| +|Carbohydrate|8.04 g| +|Sugar|4.31 g| +|**TOTAL**|**100.0 g**| + +**Tomato Paste** +|Nutrient|Amount| +|-|-| +|Water|71.9 g| +|Energy|89 kcal| +|Fiber|4.7 g| +|Protein|4.23 g| +|Carbohydrate|20.2 g| +|Sugar|11.7 g| +|**TOTAL**|**100.0 g**| + + + + +### ๐Ÿง‚ Salt +By far the easiest value to derive with simple formula that can convert sodium weight to salt weight: + +Let **$x$** be the amount of salt (in grams): + +$$ +x = {\frac{1190 \text{ mg}}{1000 \text{ g/mg}}}\times{2.54} +$$ + +$$ +x \approx 3.02 \text{ g} +$$ + +### ๐Ÿš Sugar +*Added* sugar can be estimated by comparing the $sugar:carbohydrate$ ratios of tomato product and the final sauce. This is not an exact science. All of the values included in these calculations are either averages, estimates, or rounded numbers, so they will result in values with very limited precision. + +**Tomato Puree** +$$ +\text{sugar} : \text{carbohydrate} = 4.31 : 8.04 +$$ + +$$ +\quad \text{or} \quad +$$ + +$$ +\frac{4.31}{8.04} \approx 0.536 +$$ + +**Tomato Paste** +$$ +\text{sugar} : \text{carbohydrate} = 11.7 : 20.2 +$$ + +$$ +\quad \text{or} \quad +$$ + +$$ +\frac{11.7}{20.2} \approx 0.579 +$$ + + +**Domino's Pizza Sauce** +$$ +\text{sugar} : \text{carbohydrate} = 16 : 25 +$$ + +$$ +\quad \text{or} \quad +$$ + +$$ +\frac{16.0}{25.0} = 0.64 +$$ + +Domino's definitely has a higher sugar:carbohydrate ratio, which makes sense because of the added sugar. I can use the values above to calculate how much sugar I need to add to match Domino's sauce ratios. This works because little else besides the sugar and tomato puree contributes to the carbs. There is maybe a gram of carbohydrates in the spices, but I do not care if I am off since this is all guesswork anyway. + +**Tomato puree** +$$ +\frac{0.64}{0.536} - 1 \approx {0.194} \text{ (19.4\\%)} +$$ +**Tomato paste** +$$ +\frac{0.64}{0.579} - 1 \approx {0.105} \text{ (10.5\\%)} +$$ + +However much tomato puree/tomato paste I need, I will need to add between $10.5$ and $19.4\\%$ additional sugar. For example, if I need 100 g tomato paste, which contains 11.7 g sugar, I will need $11.7 \times 0.105 \approx 1.23$ g more sugar. + + +### ๐Ÿฅซ Tomato Puree / Paste + +I will use **tomato paste** values to do the rest of my calculations, since I can "add" water (on paper) to achieve similar makeup to Domino's Pizza Sauce. + +The strategy here will be to find an amount of tomato paste that will account for all of the fiber present in the Domino's sauce. No other ingredient will meaningfully contribute to fiber. For now I will mostly ignore the weight of water, since I can either boil it off later or add it if I need to thicken or thin the sauce. It is not known yet exactly how much water is in Domino's sauce, but it will reveal itself as I solve for other values. + +First I find percent fiber in tomato paste: +$$ +x = \frac{4.7 \text{ g fiber}}{100 \text{ g tomato paste}} = 0.047 +$$ + +Then calculate how much tomato paste is needed to account for 6 grams of fiber: + +$$ +x = \frac{6 \text{ g fiber}}{0.047} \approx 128 \text{ g tomato paste} +$$ + +Let me see if this value looks approximately correct for the rest of the nutrition: + +- **Protein** +$$ +x = \frac{5 \text{ g protein}}{0.0423} \approx 118 \text{ g tomato paste} +$$ +Close enough + +- **Carbohydrates** +(This does NOT account for added sugar) +$$ +x = \frac{25 \text{ g carbs}}{0.202} \approx 124 \text{ g tomato paste} +$$ + +โœ… This all looks pretty consistent. There is likely $\approx 120$ grams of **tomato paste** present in the sauce. + + +### ๐Ÿง„ Garlic Powder, Spices +I do not trouble myself with discovering the exact blend of spices. Instead, I have come up with a blend of spices that I like. The table includes the spice and its ratio in volume. + +|Herb|Volume ratio| +|-|-| +|Oregano|4| +|Marjoram|2| +|Parsley|1| +|Basil|4| +|Tarragon|2| + + + +### ๐Ÿงด Oil +The amount of calories from fat is given (5), which implies an absolutely tiny amount of total fat, and an even tinier amount of *added* fat in the form of "soybean oil". + + $\frac{5}{9} \approx 0.56$ grams fat. + + I do not bother adding any fat at all. + +### ๐Ÿ’ง Water +The amount of water in the sauce ends up being around 50%. I simply subtract the ingredient weights (tomato paste, salt, sugar, spices) from the total (227 grams). + +e.g. $w = 120 - 3 - 1.5 - 1.5$ -- 2.54.0 From e99ee864cd5b329ec41bbee9a40cc44c22670d6e Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Thu, 24 Jul 2025 17:07:59 -0500 Subject: [PATCH 3/3] finish post with corrections (refs #2) --- .../posts/dominos-pizza-sauce/index.md | 112 +++++++++++------- container/site/layouts/shortcodes/file.html | 10 ++ 2 files changed, 82 insertions(+), 40 deletions(-) create mode 100644 container/site/layouts/shortcodes/file.html diff --git a/container/site/content/posts/dominos-pizza-sauce/index.md b/container/site/content/posts/dominos-pizza-sauce/index.md index 0f993b0..4974141 100644 --- a/container/site/content/posts/dominos-pizza-sauce/index.md +++ b/container/site/content/posts/dominos-pizza-sauce/index.md @@ -1,18 +1,18 @@ +++ categories = ["food"] -tags = ["reverse-engineer","dominos"] -date = 2025-07-22T20:00:00-05:00 +tags = ["reverse-engineer","dominos","pizza"] +date = 2025-07-24T16:00:00-05:00 description = "" -draft = true +draft = false slug = "dominos-pizza-sauce" title = "๐Ÿ… Domino's Pizza Sauce" author = "nicholas" +++ -For a brief moment in time, Domino's website contained the holy trinity of reverse-engineering material: +For a brief moment in time, Domino's website hosted a {{< file src="files/dominos-nutrition-guide.pdf" name="certain document" >}} which, when combined with the other such documentation of their foods, formed a kind of holy trinity of reverse-engineering material: - ingredient lists -- nutrition -- *total* weights for each food item +- nutrition data +- total weights This information can normally be found on the site to some degree, but what is unusual this time is the inclusion of the total weight values for each food item. This makes me job especially easy. @@ -36,14 +36,17 @@ The ingredient list is simple: - soybean oil - citric acid -Right away, I can simplify the list by combining the water, tomato paste, and citric acid. These are the ingredients already exclusively present in **tomato paste** and **tomato puree**. (I have selected tomato puree as the base of my sauce for cost and convenience, the difference is mostly water content). The ingredient list of the tomato puree seems to be in agreement with that of the Domino's sauce: +Right away, I can simplify the list by combining the water, tomato paste, and citric acid. These are the ingredients already exclusively present in **tomato paste** and **tomato puree**. (I have selected tomato puree as the base of my own sauce for cost and convenience, the difference is mostly water content as far as I can taste). The ingredient list of the tomato puree seems to be in agreement with that of the Domino's sauce: {{< image src="images/tomato-puree-ingredient-list.png" caption="Contadina Tomato Puree ingredient list" >}} -Now I have: -- tomato paste/puree +> I use **tomato paste** in the formula for accuracy, but as I mention above I prefer a slightly tweaked recipe which uses tomato puree instead. I add **xanthan gum** to my own formula anyway (to make the sauce freezable), so it ends up being similar consistency. + +Now I have a reduced ingredient list: +- tomato paste +- water - sugar - salt - spices (oregano, marjoram, parsley, basil, tarragon) @@ -53,17 +56,17 @@ Now I have: I took some necessary liberties with the spices. It could be anything! I selected my favorites, leaving out any savory herbs like rosemary and thyme. I want this to be a bright, sweet sauce, like Domino's. ## ๐Ÿงช Nutrition -The document published on Domino's website includes pizza sauce nutrition and weight values for each corresponding size of pizza. I look to the *Extra Large* pizza for guidance, since it will contain the greatest weight and nutrition values, which will minimize uncertainty introduced by round numbers to the greatest extent possible. +The document published on Domino's website includes pizza sauce nutrition and weight values for each corresponding size of pizza. I look to the **Extra Large** pizza for guidance, since it will contain the greatest weight and nutrition values, which will minimize uncertainty introduced by round numbers to the greatest extent possible. {{< image src="images/dominos-pizza-sauce-nutrition.PNG" caption="Domino's Pizza sauce nutrition" >}} -Now I can do some simple math to fill in the table. +Now I do some simple math to fill in the table. |Ingredient|weight(g)| |-|-| -|tomato puree|?| +|tomato paste|?| |sugar|?| |salt|?| |spices|?| @@ -72,7 +75,7 @@ Now I can do some simple math to fill in the table. |**TOTAL**|**227**| ### ๐Ÿ—„๏ธ Tomato Product Reference -From **FoodData Central** database for precise values for tomato puree, tomato paste nutrients, water, calories, etc: +From **FoodData Central** database for precise values for tomato puree, tomato paste nutrients, water, calories, etc. I reference these values later on. Nutritionally, basically the same, with different water content. **Tomato Puree** |Nutrient|Amount| @@ -97,10 +100,8 @@ From **FoodData Central** database for precise values for tomato puree, tomato p |**TOTAL**|**100.0 g**| - - ### ๐Ÿง‚ Salt -By far the easiest value to derive with simple formula that can convert sodium weight to salt weight: +By far the simplest value to derive is salt. Sodium (Na) is given, and salt (NaCl) can be calculated since each unit of salt is 39.3% sodium by weight. Let **$x$** be the amount of salt (in grams): @@ -113,7 +114,9 @@ x \approx 3.02 \text{ g} $$ ### ๐Ÿš Sugar -*Added* sugar can be estimated by comparing the $sugar:carbohydrate$ ratios of tomato product and the final sauce. This is not an exact science. All of the values included in these calculations are either averages, estimates, or rounded numbers, so they will result in values with very limited precision. +The ingredient list names each ingredient in descending order by weight. Sugar is listed before salt, and we know there is 3 grams salt. Therefore, there must be at least this much sugar. This provides a good starting point. + +*Added* sugar can also be estimated by comparing the $sugar:carbohydrate$ ratios of tomato product and the final sauce. This is not an exact science. All of the values included in these calculations are either averages, estimates, or rounded numbers, so they will result in values with very limited precision and usefulness. **Tomato Puree** $$ @@ -155,23 +158,39 @@ $$ \frac{16.0}{25.0} = 0.64 $$ -Domino's definitely has a higher sugar:carbohydrate ratio, which makes sense because of the added sugar. I can use the values above to calculate how much sugar I need to add to match Domino's sauce ratios. This works because little else besides the sugar and tomato puree contributes to the carbs. There is maybe a gram of carbohydrates in the spices, but I do not care if I am off since this is all guesswork anyway. +As expected, Domino's definitely has a sugar:carbohydrate ratio. I can use the ratios calculated above to try to approximate how much sugar I need to add to match Domino's sauce. + +> There is maybe a gram or so of carbohydrates in the spices, but I do not care if I am off because of this, since this is all guesswork anyway + +Let: + +- $r_1$ = Target sugar-to-carb ratio +- $S_0$ = Original sugar content +- $C_0$ = Original total carbohydrate content +- $x$ = Grams of added sugar -**Tomato puree** $$ -\frac{0.64}{0.536} - 1 \approx {0.194} \text{ (19.4\\%)} -$$ -**Tomato paste** -$$ -\frac{0.64}{0.579} - 1 \approx {0.105} \text{ (10.5\\%)} +r_1 = \frac{S_0 + x}{C_0 + x} $$ -However much tomato puree/tomato paste I need, I will need to add between $10.5$ and $19.4\\%$ additional sugar. For example, if I need 100 g tomato paste, which contains 11.7 g sugar, I will need $11.7 \times 0.105 \approx 1.23$ g more sugar. +Need to isolate the variable $x$ (added sugar) +$$ +x = \frac{r_1 C_0 - S_0}{1 - r_1} +$$ + +Then solve for $x$: + +$$ +x = \frac{0.64 \cdot 20.2 - 11.7}{1 - 0.64} +\approx 3.41 +$$ + +I will need to add **3.41 grams** of sugar to match the sugar:carb ratio of Domino's sauce. ### ๐Ÿฅซ Tomato Puree / Paste -I will use **tomato paste** values to do the rest of my calculations, since I can "add" water (on paper) to achieve similar makeup to Domino's Pizza Sauce. +I will use **tomato paste** values to do the rest of my calculations, since I add water to achieve similar makeup to Domino's Pizza Sauce. (This happens not to be true of *tomato puree*, since it contains **too much water**) The strategy here will be to find an amount of tomato paste that will account for all of the fiber present in the Domino's sauce. No other ingredient will meaningfully contribute to fiber. For now I will mostly ignore the weight of water, since I can either boil it off later or add it if I need to thicken or thin the sauce. It is not known yet exactly how much water is in Domino's sauce, but it will reveal itself as I solve for other values. @@ -186,21 +205,21 @@ $$ x = \frac{6 \text{ g fiber}}{0.047} \approx 128 \text{ g tomato paste} $$ -Let me see if this value looks approximately correct for the rest of the nutrition: +Let me see if this value looks approximately correct for the rest of the nutrition. Note that I only bother taking the given nutrient value at face value. In reality it likely that these numbers have been rounded up or down. Once again, I do not care and it does not matter. -- **Protein** +**Protein** $$ x = \frac{5 \text{ g protein}}{0.0423} \approx 118 \text{ g tomato paste} $$ -Close enough +โœ… **118 grams** - **Carbohydrates** -(This does NOT account for added sugar) $$ -x = \frac{25 \text{ g carbs}}{0.202} \approx 124 \text{ g tomato paste} +x = \frac{22 \text{ g carbs}}{0.202} \approx 109 \text{ g tomato paste} $$ +โœ… **109 grams** -โœ… This all looks pretty consistent. There is likely $\approx 120$ grams of **tomato paste** present in the sauce. +This all looks pretty consistent. I estimate that there is between 110 to 120 grams of **tomato paste** present in the sauce. ### ๐Ÿง„ Garlic Powder, Spices @@ -214,16 +233,29 @@ I do not trouble myself with discovering the exact blend of spices. Instead, I h |Basil|4| |Tarragon|2| - - ### ๐Ÿงด Oil -The amount of calories from fat is given (5), which implies an absolutely tiny amount of total fat, and an even tinier amount of *added* fat in the form of "soybean oil". +The amount of calories from fat is given (5), which implies an absolutely tiny amount of total fat, and an even tinier amount of *added* fat in the form of "soybean oil". It is straightforwardly not true that there are 0 grams of fat in the sauce as the table would indicate. I can calculate the amount of fat in the sauce using the calories from fat value. - $\frac{5}{9} \approx 0.56$ grams fat. - - I do not bother adding any fat at all. + $\frac{5}{9} \approx 0.56$ grams fat. + + The real value is even **less** than this since this would be rounded up to 1 instead of down to 0. I do not bother adding any fat at all since it is such a small amount. ### ๐Ÿ’ง Water -The amount of water in the sauce ends up being around 50%. I simply subtract the ingredient weights (tomato paste, salt, sugar, spices) from the total (227 grams). +The amount of water in the sauce ends up being around 50%. (Very close to tomato puree, conveniently). I simply subtract the ingredient weights (tomato paste, salt, sugar, seasoning) from the total (227 grams). -e.g. $w = 120 - 3 - 1.5 - 1.5$ +e.g. $w = 227.00 - 115.00 - 3.40 - 3.00 - 1.75 - 0.40$ + +I now have a complete formula: + +## Formula +|Ingredient|weight(g)| +|-|-| +|tomato paste|115.00| +|water|103| +|sugar|3.40| +|salt|3.00| +|spices|1.75| +|dehydrated garlic|0.40| +|**TOTAL**|**227**| + +โœ… Done. \ No newline at end of file diff --git a/container/site/layouts/shortcodes/file.html b/container/site/layouts/shortcodes/file.html new file mode 100644 index 0000000..bcd57c6 --- /dev/null +++ b/container/site/layouts/shortcodes/file.html @@ -0,0 +1,10 @@ +{{ $src := .Get "src" }} +{{ $name := .Get "name" | default $src }} +{{ $slug := .Page.Slug }} + + + {{ $name }} + -- 2.54.0