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-1907 · entry 64 · line 2138
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.
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¶
- 124 preparations
- 50 resolved
- 74 unresolved
74 preparations state no base in their prose. 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 itself states no base, and stays unresolved, so a derivation tree can root in an unresolved sauce.
An entry that states two bases counts as unresolved. SHRIMP SAUCE says
"fish velouté or, failing this, Béchamel". The source declined to choose, so
the parser declines too.
$ uv run saucier parse
source escoffier-1907
mothers bechamel, espagnole, hollandaise, tomato, veloute
sauces 124
derived 50 linked to a stated parent
unresolved 74 state no base in their prose
Where to go¶
- First run
- Clone the repository and print a derivation tree from a 1907 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 900 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.