Metadata-Version: 2.5
Name: mealtime-eatout
Version: 0.1.0
Summary: Cited vegetarian restaurant nutrition as ranked candidate records.
Project-URL: Homepage, https://github.com/mealtime-tools/eatout
Author-email: owahltinez <oscar@wahltinez.org>
License-Expression: MIT
License-File: LICENSE
Keywords: agent,cli,macros,nutrition,restaurant
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Utilities
Requires-Python: >=3.13
Requires-Dist: click-agentcli>=0.1.0
Requires-Dist: click>=8.1
Description-Content-Type: text/markdown

# eatout

Cited vegetarian restaurant nutrition around Sydney CBD, emitted as the shared
candidate record: filter by per-serving macros, ranked by protein per 100 kcal.
A data source, nothing more — it does not log, estimate, or reach the network.

```sh
uv run eatout metadata
uv run eatout search --max-kcal 700 --min-protein 25 --limit 5
uv run eatout search --json --query tofu
uv run eatout guide            # the full agent-facing manual
```

`SKILL.md` is the agent-facing contract; `eatout guide` is the same manual from
inside the binary. `eatout skill install` puts the skill where agents look.

## Data

The meal document is a build artifact. `data/sources/*.json` in the dataset
checkout is the reviewed source of truth — one restaurant per file, with a
citation on every item — and the artifact is regenerated from it and diffed by
a human. This tool only ever reads it:

1. `eatout --data PATH <command>`
2. `$EATOUT_DATA`
3. the artifact bundled in this repository or installed package

`per_serving` carries only the macros an operator published; an absent key means
the figure does not exist. Nothing here fills one in, at any layer.

`data/research/*.json` and `data/place-candidates.json` are the review record
behind those sources: which chains were considered, and why the ones that were
rejected publish nothing usable. No code reads them, so neither is published;
only `data/meals.json` ships in the wheel.

## Refreshing a source

Ingestion lives in `scripts/`, outside the package, because the CLI is
read-only by contract. Pull a restaurant, diff it, then rebuild the artifact:

```sh
uv run --project . python -m scripts.import_grilld
git diff data/sources/grilld.json
uv run --project . python -m scripts.regenerate
```

Only Grill'd has an importer; every other source is still maintained by hand.
`scripts/regenerate.py` is the only writer of `data/meals.json`, and a test
asserts the committed artifact matches what it produces.

## Development

```sh
uv run --project . pytest -q
uvx ruff check src scripts --line-length 79
```
