saucier¶
Structured procedure extraction from culinary sources.
saucier reads a cookbook and returns a catalogue. Each preparation carries
its terms, the language of each term, the parent it derives from, and the
source line the claim came from. No model runs.
One preparation, as the catalogue holds it
BÉARNAISE TOMATÉE SAUCEfr
CHORON SAUCEen
derives fromtomato
source escoffier-1909 · entry 64 · line 2138 · fidelity transcription
One preparation, two terms, two languages. Neither term is translated into the
other, and both are kept exactly as Escoffier set them. BÉARNAISE folds to
bearnaise to give the concept its id, and the accented surface form is what
the catalogue stores. The citation is the point: entry 64 at line 2138 is a
line you can open in corpus/ and read. The source is Escoffier's
A Guide to Modern Cookery, tracked
here in full, in two printings.
The five mothers¶
Escoffier names his own foundational sauces in his own text. The parser reads them out of that sentence. Nobody supplied the list.
- bechamel
- espagnole
- hollandaise
- tomato
- veloute
The number this release is judged on¶
- 151 preparations
- 57 resolved
- 94 unresolved
94 preparations state no base in their prose, or state more than one. The parser records those as unresolved and does not guess at them. The hatched share is what the source declined to say, not what the extraction failed to find. Lowering that count by guessing would be the one unrecoverable mistake here, so the number is published rather than hidden.
A parent may be any catalogued preparation, not only a mother. Marrow Sauce says it is "only a variety of the Bordelaise", so it resolves to Bordelaise. Bordelaise says "add one-half pint of half-glaze", half glaze says it is Espagnole despumated, and Espagnole opens with brown roux. Two of the five mothers state a parent of their own.
An entry that states two candidates counts as unresolved. CARDINAL SAUCE
says "Boil one pint of Béchamel" and then "finish ... with lobster butter".
The source stated one base and one finish. The parser reads names and cannot
tell which is which, so it declines, and saucier show prints both names.
Seven sauces that were resolved at v0.3.0 are unresolved for that reason,
and three more because half glaze now sits beside their old parent.
ADR-0015 names all ten.
$ uv run saucier parse
escoffier-1909 New and Revised Edition, January 1909 (impression: January 1920)
transcription of Project Gutenberg 71395
mothers: bechamel, espagnole, hollandaise, tomato, veloute
151 sauces, 57 derived, 94 unresolved
escoffier-1907 no edition stated, copyright 1907
ocr of Internet Archive cu31924000610117
mothers: bechamel, espagnole, hollandaise, tomato, veloute
140 sauces, 51 derived, 89 unresolved
Two witnesses of one book, each naming itself from its own title page. The 1907 text is a scan, so its numbers are read through OCR and every record says so.
Where to go¶
- First run
- Clone the repository and print a derivation tree from a 1909 cookbook. No GPU, no key, no database, no network.
- Add a source
- Point the extractor at another public-domain book, and find out whether the entry pattern fits it.
- Reference
- The commands, the data model, the glossary, and the API generated from the docstrings.
- Explanation
- Why a parser comes before a model, why four layers on 1,100 lines, and what the unresolved count is for.
- Decisions
- The architecture decision records, each with a status and a date.
What this is part of¶
saucier backs a blog series that ends with a robot making mole. Each
published post corresponds to a tag, and every tag runs and produces output.
This release is the first: a parser, no model, and a number to beat.