Skip to content
Recipe Timer Lab

About this project

A 2021 assignment, cooked again

COMP30027 Machine Learning at the University of Melbourne, 2021 Semester 1. Project 2 asked pairs to predict how long a recipe takes and, more importantly, to explain why their models behave the way they do.

Credits

Who made it

Coursework

The 2021 team

  • Sunchuangyu (Rin) Huang · co-author of the models and the report
  • Project partner · co-author of the models and the report

The report was submitted anonymously for peer review, so neither author is named in it.

This site

The 2026 revival

Rebuilt by Rin from the submitted report with help from an AI coding assistant: the data pipeline, the experiments, the TypeScript ports and this site.

Private GitHub repository (available on request)

Provenance

What survived and what was rebuilt

Report
2021Six-page anonymous PDF2026Kept unchanged in the repository's coursework folder; every number here is transcribed from it
Code
2021Python notebooks with scikit-learn2026Lost. Rewritten as six uv scripts: four follow the report step by step, two add the uncertainty layer
Data
2021Staff sample of Majumder et al.'s Food.com crawl2026Public-domain Food.com crawl, sampled to the same class counts
Features
2021Staff Doc2Vec and CountVectorizer files2026Regenerated with gensim and scikit-learn
Results
2021Report tables and a Kaggle submission2026JSON artefacts behind the Models, Evaluation, LLM eval, Stacking and Data pages
Interactive
2021None2026Browser predictor and stacking judge, ported to TypeScript with parity tests
Evaluation
2021One accuracy per model from one five-fold split2026Intervals, paired tests and calibration on the Evaluation page, with the 2021 rerun kept as it was
AI
2021None2026Optional bring-your-own-key LLM evaluation and second opinion, audit-logged in the visitor's browser

Stack

Then and now

2021

Original stack

  • Python and Jupyter
  • scikit-learn: GaussianNB, LogisticRegression, SVC (one-vs-rest), RandomForestClassifier
  • Staff-supplied Doc2Vec (50 and 100 dimensions) and CountVectorizer features
  • Kaggle in-class competition for test predictions

2026

Revived stack

  • Python 3.12 scripts run with uv: pandas, scikit-learn, gensim
  • Next.js App Router, TypeScript, Tailwind CSS, shadcn/ui primitives
  • Hand-drawn SVG and HTML charts, light and dark themes
  • Vitest parity tests against scikit-learn output
  • Statistics checked against SciPy, statsmodels and R

Fine print

Data, citation and academic integrity

Recipe data originates from Food.com. As the assignment required, the dataset paper is cited: Majumder, B. P., Li, S., Ni, J. and McAuley, J. (2019). Generating Personalized Recipes from Historical User Preferences. Proceedings of EMNLP-IJCNLP 2019.

The assignment specification and the staff data bundle belong to the University of Melbourne and are not reproduced here; the task is described in our own words. The site serves only derived artefacts such as counts, model weights and scores.

The original report is kept in the repository for reference. If you are taking COMP30027, please do your own work: copying it would breach the University's academic integrity policy.

The MIT licence covers the revival's code (the pipeline scripts and this site). The 2021 report remains © its two authors, all rights reserved, and is included for reference only.

Ready to cook? Try the predictor.