Inspiration
This is Jason speaking. I'll keep this story short. A few days ago, my memories of my former life in another world returned. They were so vivid that every single fragment were too deeply felt to be hallucinations. I was the Salmon Gobbler. I caught salmon. I ate salmon. I lived on salmon. And it never stopped. So much that I was the single reason that salmon has gone extinct in that world. As such, I am here to pursue salmon again. And I will eat all of them again.
Zachary here, please stop this guy pls and ty
What it does
Salmon.exe helps buyers plan salmon purchases using price and quantity forecasts. It combines an XGBoost price model, a LightGBM quantity model, and an optimisation algorithm to recommend when and how much to buy within a budget and deadline. A Bootstrap dashboard displays forecast graphs and purchasing recommendations, using simulated supplier quotes and stock.
Machine Learning
Salmon.exe combines 2 forecasting models in 2 Jupyter notebooks with a purchasing optimisation engine to turn historical market data into actionable procurement recommendations. Our dataset is from We used the Statistics Norway’s official weekly export statistics for frozen farmed salmon, comprising 1,397 observations from 2000–2026.
Our XGBoost price model predicts the weekly change in price, which we add to the previous week’s price to obtain the forecast. This helps the model handle changing price levels. Our LightGBM quantity model predicts weekly export volume directly, using recent volumes, rolling statistics, previous prices, and seasonal features. We evaluated them with a chronological 70/15/15 training, validation, and test split, and included L1/L2 regularisation and validation-based early stopping to help control overfitting.
We reduced quantity forecasting MAE by 14.07% and price forecasting MAE by approximately 4.7% compared with last-week baselines, evaluated on 209 held out weeks.
We then translated the notebook workflow into reusable Python code, refitted the models on available history, and saved them with joblib. The application generates 52 weekly forecasts, exported as JSON for downstream use.
Optimisation Algo
We formulated it as a linear programming problem, implemented with PuLP and the HiGHS solver. Each decision variable represents how many kg to purchase from a particular supplier in a particular week.
How we built it
How we built it? Blood, sweat, and tears. And Python. And web stuff. We decomposed the project into a notebook pipeline with ML, backend, and frontend as different layers of a stack. This proved amazing, as we didn't have to scramble everything into one big fat burger of confusion and whatnot.
Challenges we ran into
For me (Jason), personally, there was one thing that bugged me for two whole hours. The full historic data graph should show the time frame between 2000 and 2026. Guess what? It only showed up to 2004. And so, after at least 10 attempts at this mind-breaking problem in the middle of the night, I have finally fixed it. It wasn't about data acquisition. It wasn't about sophisticated gimmicks. The only thing that I had to do to fix that, was simply change "n" in a bracket into "n * 7". Great. I love extreme programming at 3 in the morning while being sleep-deprived, dehydrated, barely surviving on leftover pizza, and my basically already non-existent sanity.
I (Zachary) did this on a new laptop which did not have pip or git installed and spent the first two hours of HackNotts trying to figure out why I had pip installed but pip commands did not work in the terminal, and then spent like 3 hours figuring out how git hub works cuz I'm new to it (yes ik I'm a fraud). Anyways I tried my best on the frontend just for Moses to completely rehaul it (I did the salmon background tho). Next time I'm coming with git and pip pre-installed AND I'm gonna figure out how git works BEFOREHAND
I (Moses) have been training on the 2 ML models for 5 hours and designing an optimisation algorithm for another 5 hours. Zachary has taught me about the Simplex Algo and it was quite interesting ngl.
Accomplishments that we're proud of
Jason: If it's working, I'm happy. Zachary: salmom backgroun Moses: Not overriding main the whole time
What we learned
Jason: I learnt Matplotlib's graphing and generation functions. I also learnt to NOT SLEEP ON THE CHAIRS. My back hurts like an 80 year old granny after 32.9 consecutive hours of workout in a shady gym opened in the corner of a scarcely populated town where nobody even visits. My mental state is less stable than PHP on 23 Oct. Zachary: I learnt how to use git, and a lot of html even though they didn't really get used at the end. And to turn up prepared. Moses: I learned how to clean, prepare and handle data to predict salmon prices and quantities.
What's next for Salmon.exe
Jason: I want to expand this thing into something similar to Google Maps, where the locations that sell salmon can be shown upon request in real time, possibly even using APIs to connect to supermarkets and shops' databases to gather their data about salmon. That way, people (mostly I myself) can get real-time information about where salmon is available, and how much it would cost in these locations. Zachary: Improvements to UI to make it fun to interact with and less monotone Moses: Predict other seafood prices
Log in or sign up for Devpost to join the conversation.