Skip to content
Testaroo
md6.6 KB

Harbour Kitchen Group: Menu folder guide

Menu folder guide for Harbour Kitchen Group. 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.

Preview, first 50 linesmd
# Harbour Kitchen Group: menus and front of house

The printed menu, allergen menu, drinks list, digital menu and till import for Harbour Kitchen Group. 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-group/plate-costs.csv` for the dish names and menu prices;
- `/files/data/restaurant-costing-v1/restaurant-group/allergen-matrix.csv` for the fourteen allergen columns.

The shared operating model `business-restaurant-group` 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 | House burger | 18.50 | 3.08 | 16.65% | Burgers |
| MENU-02 | Chicken burger | 19.50 | 3.08 | 15.79% | Burgers |
| MENU-03 | Loaded fries | 11.50 | 0.79 | 6.87% | Sides and salads |
| MENU-04 | Tomato salad | 12.00 | 0.88 | 7.33% | Sides and salads |

## The rules every derived price follows

| Price | Rule |
| --- | --- |
| By the glass | Bottle price divided by 5 pours, rounded up to the next 0.25. |
| Burger and fries set | Stated price 26.50; the same items ordered separately come to 30.00, so the saving is 3.50. |
| Children's portion | 60 percent of the menu price, rounded to the nearest 0.05. |
| Special | 85 percent of the menu price, rounded to the nearest 0.05. |

The burger and fries set costs 3.87 CAD to plate against a price of 26.50 CAD, which is 14.60 percent food cost. The same dishes ordered separately run at 11.76 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 Chicken burger is printed at 20.50 CAD. `plate-costs.csv` carries 19.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 House burger is on `printed-menu.pdf` and priced at 18.50 CAD, and `allergen-menu.csv` declares 2 allergens for it: cereals_gluten: Burger Bun; sesame: Burger Bun. 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 19.50 CAD and again on line 23 at 20.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 `"$18.50"`. 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.
… 81 lines total: download for the full file.

Specifications

Kit
restaurant-group
Industry
food-service
Schema Version
1
Synthetic
true
As Of
2026-09-08
Currency
CAD
Menu Items
4
Lines
80
Files
19
Deliberate Defects
5
Encoding
UTF-8
Line Endings
LF

Testing contract

Expected to pass
Scenario
Read the Harbour Kitchen Group menu folder guide before using any file in it.
Expected result
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.

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

“Harbour Kitchen Group: 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.