{"id":30765245,"url":"https://github.com/davidyen1124/cowculator","last_synced_at":"2026-05-05T14:12:31.431Z","repository":{"id":312023213,"uuid":"1045996935","full_name":"davidyen1124/cowculator","owner":"davidyen1124","description":"COWCULATOR: AI-driven catering cost forecasting in Python. Trains order-level and daily time series models, exports an edge-ready JSON bundle, and includes a demo web UI.","archived":false,"fork":false,"pushed_at":"2025-08-28T03:27:44.000Z","size":623,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-28T10:27:08.754Z","etag":null,"topics":["cli","data-science","edge-ai","forecasting","github-actions","machine-learning","mypy","pandas","python","ruff","scikit-learn","time-series","uv"],"latest_commit_sha":null,"homepage":"https://davidyen1124.github.io/cowculator/","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/davidyen1124.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}},"created_at":"2025-08-28T03:18:58.000Z","updated_at":"2025-08-28T03:27:47.000Z","dependencies_parsed_at":"2025-08-28T10:27:36.984Z","dependency_job_id":"bd9239a7-f3bc-4f31-8fae-18b65d16ffbd","html_url":"https://github.com/davidyen1124/cowculator","commit_stats":null,"previous_names":["davidyen1124/cowculator"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/davidyen1124/cowculator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidyen1124%2Fcowculator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidyen1124%2Fcowculator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidyen1124%2Fcowculator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidyen1124%2Fcowculator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davidyen1124","download_url":"https://codeload.github.com/davidyen1124/cowculator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidyen1124%2Fcowculator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273649429,"owners_count":25143633,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["cli","data-science","edge-ai","forecasting","github-actions","machine-learning","mypy","pandas","python","ruff","scikit-learn","time-series","uv"],"created_at":"2025-09-04T18:00:07.112Z","updated_at":"2026-05-05T14:12:31.402Z","avatar_url":"https://github.com/davidyen1124.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# COWCULATOR 🐄➗📈\nBecause nothing says “leadership” like forecasting burrito budgets with AI.\n\n[![Python](https://img.shields.io/badge/Python-3.11%2B-3776AB?logo=python\u0026logoColor=white)](#)\n[![License](https://img.shields.io/badge/License-MIT-yellow.svg)](#)\n[![Build](https://img.shields.io/badge/CI-GitHub%20Actions-2088ff?logo=github-actions\u0026logoColor=white)](#)\n[![Ruff](https://img.shields.io/badge/Lint-ruff-46a2f1.svg)](#)\n[![Black](https://img.shields.io/badge/Style-black-000000.svg)](#)\n[![mypy](https://img.shields.io/badge/Typing-mypy-2A6DB2.svg)](#)\n[![UV](https://img.shields.io/badge/Deps-uv-ff69b4.svg)](#)\n[![Conventional Commits](https://img.shields.io/badge/Commits-conventional-ec7600.svg)](#)\n[![Commitizen](https://img.shields.io/badge/Commitizen-friendly-blue.svg)](#)\n[![Semantic Release](https://img.shields.io/badge/Release-semantic-39c0ba.svg)](#)\n[![Pre‑commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](#)\n[![Open in VS Code](https://img.shields.io/badge/Open%20in-VS%20Code-007ACC?logo=visual-studio-code)](#)\n[![Made With Love](https://img.shields.io/badge/Made%20with-%F0%9F%92%96-lightgrey.svg)](#)\n[![No Notebooks](https://img.shields.io/badge/Jupyter-not%20today!-purple.svg)](#)\n[![Works on My Machine](https://img.shields.io/badge/Works%20on-My%20Machine-success.svg)](#)\n[![AI Inside](https://img.shields.io/badge/AI-inside-8A2BE2.svg)](#)\n[![Buzzwords](https://img.shields.io/badge/Buzzwords-10x%20%7C%20Synergy%20%7C%20Alignment-ff69b4.svg)](#)\n[![Ship It](https://img.shields.io/badge/Ship%20It-🦫-yellow.svg)](#)\n[![Blazing Fast](https://img.shields.io/badge/Performance-blazing-orange.svg)](#)\n[![Bus Factor](https://img.shields.io/badge/Bus%20Factor-1-red.svg)](#)\n[![100% Not Fake](https://img.shields.io/badge/Tests-100%25*-%23ff69b4.svg)](#)\n[![Coverage](https://img.shields.io/badge/Coverage-NaN%25-lightgrey.svg)](#)\n\n\u003csub\u003eBadges are both documentation and personality at this point.\u003c/sub\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://davidyen1124.github.io/cowculator/\"\u003e\u003cimg src=\"assets/hero.png\" alt=\"COWCULATOR demo screenshot\" width=\"900\"\u003e\u003c/a\u003e\n  \u003cbr/\u003e\n  \u003ca href=\"https://davidyen1124.github.io/cowculator/\"\u003e\u003cstrong\u003eLive Demo on GitHub Pages\u003c/strong\u003e\u003c/a\u003e\n  ·\n  \u003ca href=\"https://github.com/davidyen1124/cowculator\"\u003e\u003cstrong\u003eSource on GitHub\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003c/div\u003e\n\nStop Scrolling: I built an AI that predicts your company’s catering costs while you sleep. It’s edge‑ready, vibe‑forward, and CFO‑compatible. This one weird trick could save ~$0–$1,000,000 depending on how loud the demo speakers are.\n\n\u003e Disclaimer for the extremely online: the live demo currently runs on a frozen snapshot. As of April 6, 2026, the upstream CaterCow survey feed for this team had not posted anything newer than January 29, 2026, so these predictions are historical cosplay, not fresh ops truth.\n\nTL;DR for Executives\n\n- Downloads CaterCow order survey data, turns it into grown‑up tables, and trains not one but TWO models.\n- Exports a tiny JSON bundle so the browser can forecast the next 5 business days without a backend. Yes, really.\n- Comes with a web page that makes your ops updates look like a product launch.\n\nQuickstart (Become a Thought Leader in 60 Seconds)\n\n- Install deps: `uv sync`\n- Fetch data: `uv run python main.py fetch`\n- Train models: `uv run python main.py train`\n- Predict tomorrow: `uv run python main.py predict-next`\n- Export for the web: `uv run python main.py export-edge` then open `web/index.html`\n\nWhat You Get (Deliverables You Can Screenshot)\n\n- Raw JSON: `data/raw/order_surveys_*.json`\n- Flattened parquet: `data/processed/orders.parquet`\n- Artifacts: `artifacts/model.joblib`, `artifacts/metrics.json`, `artifacts/weekday_stats.parquet`, `artifacts/daily_model.joblib`, `artifacts/daily_history.parquet`\n- Frontend bundle: `web/edge_bundle.json` + a demo page at `web/index.html`\n\nArchitecture, But Make It Inspirational\n\n- Order‑level regression: classic, dependable, scikit‑learn. Predicts per‑order cost like a spreadsheet with self‑esteem.\n- Daily time‑series: aggregates to business days, builds lags/rolling means, trains a gradient boosting model. Predicts the future without even asking it nicely.\n- Edge export: serializes the tree ensemble to JSON and reenacts it in vanilla JS. It is small. It is fast. It is frankly adorable.\n\nData → Insight → Bragging: The Flywheel\n\n1) Fetch with `httpx`, write JSONL like a responsible grownup.\n2) Flatten with pandas; engineer features that would make 2017 Kaggle proud.\n3) Train. Evaluate. Nod thoughtfully at `metrics.json`.\n4) Export to `web/`, send a link, take credit.\n\nLive Demo Energy (Locally)\n\n- After export, open `web/index.html`. The page renders a 5‑day forecast grid using only the JSON bundle, a sprinkle of Tailwind, and sheer audacity.\n\nFAQs Nobody Asked But Everyone Needs\n\n- Is this real AI? Yes, in the sense that my laptop gets warm and numbers change.\n- Will this replace finance? No, but it will replace awkward silences during standup.\n- Can it 10x? It can 10x your confidence and that’s what matters.\n- Why no notebooks? Because production is the new prototype.\n\nRepo Tour (You Will Get Asked “Where Is…?”)\n\n- `main.py`: CLI for `fetch`, `train`, `predict-next`, `export-edge`.\n- `cowculator/pipeline.py`: data prep, feature engineering, model training, and export logic.\n- `data/`: raw and processed files.\n- `artifacts/`: models + metrics, aka your receipts.\n- `web/`: static UI for flexing to stakeholders.\n\nInstall Notes (Bring Your Own Python)\n\n- Python 3.11+\n- Uses `uv` for dependency/env management: https://docs.astral.sh/uv/\n\nRoadmap (Definitely Real, Not Aspirational)\n\n- Add “make it go brrr” toggle that increases learning rate by 0.01\n- Replace buzzwords with new buzzwords\n- Dark mode (for the metrics)\n\nContributing\n\n- PRs welcome. Memes encouraged. Benchmarks admired. Badges… added.\n\nLicense\n\n- MIT. See `LICENSE`. For a spicy human summary, see `LICENSE-TLDR.md`.\n\nFootnotes\n\n- `*` Tests are 100%… aspirational. Contributions welcome to make that less of a joke.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidyen1124%2Fcowculator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavidyen1124%2Fcowculator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidyen1124%2Fcowculator/lists"}