{"id":34713171,"url":"https://github.com/brege/flavor-project","last_synced_at":"2026-05-24T01:33:24.736Z","repository":{"id":146352191,"uuid":"584559189","full_name":"brege/flavor-project","owner":"brege","description":"Some tools for analyzing flavor profiles","archived":false,"fork":false,"pushed_at":"2025-12-10T20:14:50.000Z","size":947,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-24T01:33:23.842Z","etag":null,"topics":["culinary","data-science","data-wrangling","flavor","jaccard-similarity","network-graph","python"],"latest_commit_sha":null,"homepage":"https://flavorpair.me","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brege.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-01-02T23:08:51.000Z","updated_at":"2026-05-14T07:21:20.000Z","dependencies_parsed_at":"2023-07-05T00:19:12.876Z","dependency_job_id":null,"html_url":"https://github.com/brege/flavor-project","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/brege/flavor-project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brege%2Fflavor-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brege%2Fflavor-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brege%2Fflavor-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brege%2Fflavor-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brege","download_url":"https://codeload.github.com/brege/flavor-project/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brege%2Fflavor-project/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33418547,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"ssl_error","status_checked_at":"2026-05-23T22:14:43.778Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["culinary","data-science","data-wrangling","flavor","jaccard-similarity","network-graph","python"],"created_at":"2025-12-25T00:50:32.559Z","updated_at":"2026-05-24T01:33:24.723Z","avatar_url":"https://github.com/brege.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Flavor Project\n\nBuilding a way to visualize [The Flavor Bible](https://karenandandrew.com/books/the-flavor-bible/), and develop flavor metrics to aid in recipe creation, menu development, and wine pairings.  \n\n### Audience\n\nThe primary purpose of this tool is to help chefs discover and experiment with \nflavor combinations where their mistakes are cheap.  This tool also has purpose \nin that looking at food through the flavor lense specifically, where cliques form \nand concepts converge, can help assist a wide range of users:\n\n* *farmers* and *growers*\n* *baristas* and *bartenders*\n* *stores* and *distributers*\n* *chefs* and *homecooks*\n* *brewers* and *vitners*\n\n### Demo\n\n[Demo](https://flavorpair.me) ● [Prototype](https://brege.org/post/the-flavor-network/)\n\n[Purchase the book](https://karenandandrew.com/books/the-flavor-bible/)\n\n### Install\n\nRequires Python 3.11+ and [uv](https://docs.astral.sh/uv/):\n\n``` bash\nuv sync\nsource .venv/bin/activate\n```\n\n### Overview\n\nRun the complete pipeline:\n``` bash\npython main.py\n```\n\nOutputs all data to `data/`:\n\n- `bible.json` - Raw parsed ingredient relationships\n- `clean.json` - Normalized and cleaned data\n- `similarity.json` - Jaccard similarity matrix (9.3MB)\n- `nodes.json` - Network nodes for visualization\n- `edges.json` - Network edges for visualization\n\n### Pipeline\n\nThe data processing pipeline requires a few intermediate steps to turn the book into a usable, weighted data set that can be visualized.\n\n0. [Purchase the book](https://karenandandrew.com/books/the-flavor-bible/)\n\n1. parse the epub files from the book into json format\n``` bash\npython src/pipeline/parse.py\n```\nwhich generates `data/bible.json`. The numbers in the json represent an integral distance rank of an ingredient's importance to its source, and is directly based on the different impact typefaces used in the book.\n\nWe assume these html chapter files live in `input/bible/`.\n\n2. clean up the json, which outputs a better weighted `clean.json`\n``` bash\npython src/pipeline/clean.py data/bible.json data/clean.json\n```\n\n3. compute the similarity matrix in the jaccard metric, which makes a larger `similarity.json`\n``` bash\npython src/pipeline/similarity.py -i data/clean.json -o data/similarity.json\n```\n\n4. create the network graph data:\n``` bash\npython src/pipeline/graph.py data/clean.json data/edges.json data/nodes.json\n```\n\n5. slice the graph:\n``` bash\npython tools/slice.py -i data/nodes.json -e data/edges.json -n 'basil' -n 'garlic' -n 'olive oil'\n```\n\n6. generate a similarity heatmap from a list of input ingredients\n``` bash\npython tools/heatmap.py -n 'basil' -n 'garlic' -n 'olive oil'\n```\n\n7. visualize ingredient networks\n``` bash\npython tools/visualize.py -n 'basil' -n 'garlic'\n```\n\n### Visualize\n\nThe preset nodes in `visualize.py` are the five ingredients of pesto.\n``` bash\npython tools/visualize.py -o docs/img/pesto.png --no-show\n```\n\n![pesto](./docs/img/pesto.png)\n\n\nThat's just a quick and dirty preview without leaving Python. For an interactive visualization, see the [demo at https://flavorpair.me](https://flavorpair.me)!\n\n![pesto-better](./docs/img/pesto-better.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrege%2Fflavor-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrege%2Fflavor-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrege%2Fflavor-project/lists"}