Two kinds of input, one regression model
I aligned commercial records, daily Open-Meteo weather, and municipal socioeconomic data. The implementation combines a temporal branch (bidirectional LSTM, Conv1D, and pooling) with an MLP for static features, then joins them to produce a regression output.
Why split by municipality?
The question was whether the model could work for locations it had not seen during training. I kept all sequences from a municipality together in either training or test, with the same assignment across the input datasets. This tests geographic generalisation; it is not a chronological backtest of future sales.
What the evaluation can—and cannot—say
I tuned the model using validation RMSE. Many municipalities had few or no recorded sales, and predictions clustered in a narrow range. The study did not include a systematic baseline comparison or demonstrate a commercial uplift, so I do not present it as evidence of either.
Methodology from my thesis, Advancing Sales Strategies with Forecasting Using Multi-Layer Perceptron Neural Network, chapters 3–4 (printed pp. 34–70). Company data and the full thesis are not public.