Juniper Corner Cafe: Menu folder guide
Menu folder guide for Juniper Corner Cafe. A 78 line guide naming every one of the 18 files in this folder, the two costing files each price was read from, the rule behind every derived price, and all 5 deliberate defects with the figure on both sides of each disagreement.
# Juniper Corner Cafe: menus and front of house
The printed menu, allergen menu, drinks list, digital menu and till import for Juniper Corner Cafe. Currency CAD. Snapshot 2026-09-08.
## Where the prices come from
Every dish, price and allergen declaration in this folder is read from the costing files that shipped first:
- `/files/data/restaurant-costing-v1/restaurant-cafe/plate-costs.csv` for the dish names and menu prices;
- `/files/data/restaurant-costing-v1/restaurant-cafe/allergen-matrix.csv` for the fourteen allergen columns.
The shared operating model `business-restaurant-cafe` carries exactly 4 menu items, and those 4 are the whole priced food menu here. Nothing on a menu in this folder is a dish the costing folder has not costed, which is why `sales-mix-pmix-unknown-items.csv` in the costing folder can name items the menu does not have and be checkable.
| Item | Dish | Menu price | Plate cost | Food cost | Section |
| --- | --- | ---: | ---: | ---: | --- |
| MENU-01 | Flat white | 4.75 | 0.70 | 14.74% | Espresso bar |
| MENU-02 | Oat latte | 5.50 | 1.02 | 18.55% | Espresso bar |
| MENU-03 | Avocado toast | 12.00 | 1.68 | 14.00% | All day kitchen |
| MENU-04 | Breakfast sandwich | 10.50 | 1.52 | 14.48% | All day kitchen |
## The rules every derived price follows
| Price | Rule |
| --- | --- |
| By the glass | Bottle price divided by 5 pours, rounded up to the next 0.25. |
| Breakfast set | Stated price 13.50; the same items ordered separately come to 15.25, so the saving is 1.75. |
| Special | 85 percent of the menu price, rounded to the nearest 0.05. |
The breakfast set costs 2.22 CAD to plate against a price of 13.50 CAD, which is 16.44 percent food cost. The same dishes ordered separately run at 14.61 percent on average, so the bundle is priced tighter and this folder says so rather than implying the discount is free.
## Drinks are not costed
The drinks list carries 4 lines by the glass and 4 by the bottle across 5 distinct drinks. None of them appears in the shared ingredient purchase study, so none of them has a plate cost, and neither the drinks list nor the digital menu publishes one. The by the glass price of a drink sold both ways is arithmetic on the bottle price and nothing else.
## Tax codes
`pos-import.csv` uses two codes. `GST5` carries 5.00 percent and is the rate the costing folder's Z read applies to prepared food. `EXEMPT` carries 0.00 percent and is applied to one line only, the stored value top up, so an importer has two codes to map rather than one. These are fixture codes, not tax advice.
## The five deliberate defects
1. **`printed-menu-price-mismatch.pdf` prints a price the costing denies.** MENU-02 Oat latte is printed at 6.50 CAD. `plate-costs.csv` carries 5.50 CAD for the same item, a difference of 1.00. The printed figure is not invented: it is the `proposed_price` in the shared `menu_price_changes` table, effective 2026-09-15, which is after the period this menu covers. Every other price on the page matches `printed-menu.pdf`.
2. **`allergen-menu-missing-dish.csv` has no row for a dish the menu carries.** MENU-01 Flat white is on `printed-menu.pdf` and priced at 4.75 CAD, and `allergen-menu.csv` declares 1 allergen for it: milk: Whole Milk. The file has 3 rows where `allergen-menu.csv` has 4.
3. **`pos-import-duplicate-code.csv` uses one item code twice.** `MENU-02` appears on line 3 at 5.50 CAD and again on line 23 at 6.50 CAD. The file has 22 data rows where `pos-import.csv` has 21, and every other code in it is unique.
4. **`menu-invalid-price.jsonld` carries string prices.** All 27 `Offer` nodes carry `price` as a JSON string with a currency symbol, the first being `"$4.75"`. In `menu.jsonld` the same 27 offers carry `price` as a JSON number. A consumer that expects a number, or that parses the value arithmetically, fails on every offer in the file rather than on one.
5. **`daily-specials-insert-wrong-date.pdf` is dated outside the period.** It reads service date 2026-10-14, which is 42 days after the costing period ends on 2026-09-02. `daily-specials-insert.pdf` is dated 2026-08-28, inside the period. The two pages are otherwise identical, so the date is the only thing that distinguishes them.
Specifications
- Kit
- restaurant-cafe
- Industry
- food-service
- Schema Version
- 1
- Synthetic
- true
- As Of
- 2026-09-08
- Currency
- CAD
- Menu Items
- 4
- Lines
- 78
- Files
- 18
- Deliberate Defects
- 5
- Encoding
- UTF-8
- Line Endings
- LF
Testing contract
Expected to pass- Scenario
- Read the Juniper Corner Cafe menu folder guide before using any file in it.
- Expected result
- A 78 line guide naming every one of the 18 files in this folder, the two costing files each price was read from, the rule behind every derived price, and all 5 deliberate defects with the figure on both sides of each disagreement.
What is a .md file?
Markdown (MD) is a lightweight plain-text markup language that uses simple punctuation conventions to denote headings, lists, links, emphasis, and code. It is designed to be readable as-is and to convert cleanly to HTML. It is widely used for documentation, READMEs, and content authoring.
How to use this file
Use an example Markdown file to test parsers and renderers, verify GitHub-Flavored Markdown extensions like tables and fenced code, and exercise HTML-conversion pipelines.
How to use this file for testing
“Juniper Corner Cafe: Menu folder guide” is a deterministic Testaroo fixture for Data import. Realistic faker-generated datasets with documented schemas for testing import and ETL flows.
Documented properties for this file: UTF-8 · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such, expect parsers to fail loudly rather than silently accept them.
Document fixtures list their internal structure (pages, fields, tracked changes, embedded objects) in the spec table. Test extractors, converters, and OCR against that known structure, and compare searchable↔scanned or format-twin companions when present.
Code examples
import markdown # pip install markdown
html = markdown.markdown(open("README.md").read())
print(html[:200])Generated by generation/restaurant_menus.py. Free for any use, no attribution required, license.
Related files
- pdfAlder Table Bistro: Allergen menuAllergen menu for Alder Table Bistro. A landscape page carrying 4 dishes against the 14 declarable allergens, Y for declared and a hyphen for not declared, with a second table naming the ingredient behind every Y. The grid reproduces allergen-matrix.csv in the costing folder cell for cell.

- pdfAlder Table Bistro: Children's platesChildren's plates for Alder Table Bistro. A one page children's menu: the same 4 dishes as smaller portions at 60 percent of the menu price, rounded to the nearest 0.05. The prices are 14.40, 6.90, 7.80, 7.50 CAD, and every one already lands on a five cent step, so no row on the page is rounded.

- pdfAlder Table Bistro: Daily specials insertDaily specials insert for Alder Table Bistro. A dated single page for service on 2026-08-28, inside the costing period 2026-08-20 to 2026-09-02. 2 dishes from the printed menu at 85 percent of the menu price rounded to the nearest 0.05, with the menu price and the saving shown beside each.

- pdfAlder Table Bistro: Daily specials insert dated outside the periodDaily specials insert dated outside the period for Alder Table Bistro. Intentionally wrong. The same page as daily-specials-insert.pdf with one change: the service date reads 2026-10-14, which is 42 days after the costing period ends on 2026-09-02. Every price on the page is still correct, so only the date can catch it.

- pdfAlder Table Bistro: Drinks listDrinks list for Alder Table Bistro. A one page list with 4 lines by the glass and 4 by the bottle. Where a drink is sold both ways the glass price is the bottle price divided by 5 pours and rounded up to the next 0.25, which the page states. Drinks sit outside the shared ingredient costing study, so no plate cost is claimed for any of them.

- mdAlder Table Bistro: Menu folder guideMenu folder guide for Alder Table Bistro. A 80 line guide naming every one of the 19 files in this folder, the two costing files each price was read from, the rule behind every derived price, and all 5 deliberate defects with the figure on both sides of each disagreement.
