Tools
Tools: Weather‑Smart Merchandiser: Using Notion MCP + Claude to Turn DIY Sales & Weather Data into Layout Actions
2026-03-06
0 views
admin
What I Built ## Video Demo ## Show us the code ## How I Used Notion MCP This is a submission for the Notion MCP Challenge I built Weather‑Smart Merchandiser, a weather‑driven merchandising tool that analyses historical sales–weather data, forecasts demand by temperature bucket, and then generates store layout‑change suggestions for a DIY store. Under the hood, it’s a Python project exposed as an MCP server, so AI assistants (like Claude Desktop) can call high‑level tools such as layout_actions or top_categories instead of manually running scripts. The workflow is: the assistant looks at recent DIY sales and temperatures, classifies upcoming days as cold / mild / warm, and then proposes concrete layout moves (e.g., “move garden tools to front endcap for the warm weekend” or “highlight insulation at the entrance for a cold spell”). On top of that, I use a Notion workspace as the control center: The result is a small but realistic “weather‑smart” merchandising assistant for a DIY store that feels like a real workflow, not just a toy script. https://github.com/user-attachments/assets/bdb07f87-5e2a-4974-be23-12ba47560132 Public Notion project page:
https://neighborly-fridge-ea2.notion.site/Weather-smart-merchandiser-31a4fffb13a880618b7fd4198be66b30 Public Notion DIY dashboard:
https://neighborly-fridge-ea2.notion.site/DIY-Weather-Smart-Merchandising-fffb7fe844f841bda431202321e29ac9 I recorded a short video walkthrough showing: The full source code is available here: GitHub repo: https://github.com/AcaciaMan/weather-smart-merchandiser You can run it in three ways: My goal was: say one prompt, get real layout actions written into Notion automatically, and optionally get a weekend summary. I used Notion’s MCP integration together with my custom Python MCP server so an AI assistant can orchestrate the whole chain: Custom MCP server (Python) AI client (Claude Desktop) calls the MCP tools Notion MCP writes the results into Notion Why Notion MCP matters here Notion MCP turns Notion into the front end for the system: Templates let you quickly answer FAQs or store snippets for re-use. Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse - A “Sales & Weather (Daily)” database holds the input data.
- A “DIY Categories & Layout” database describes where each category currently lives in the store.
- A “Layout Actions” database is automatically populated by the MCP tools with suggested moves, dates, and expected uplift. - How I trigger the workflow from Claude Desktop by asking:
“Generate layout actions from Sales & Weather for the next 3 days and write them into Notion.”
- How the MCP server returns suggested actions (per store, date, category, and temperature bucket).
- How Claude then uses Notion’s MCP integration to create new rows in the “Layout Actions” database and generate a “Store Playbook” summary page in Notion.
- How I can also ask Claude to summarize the weekend layout actions into a concise briefing, so store staff get a quick “weekend plan” without reading every individual row.
- The final Notion DIY dashboard that shows weather, recent sales, and planned layout changes in one place. - first_python_module.py – core library with reusable functions for: loading the sales_weather_daily.csv dataset computing demand signals by temperature bucket generating a simple forecast producing layout‑change suggestions
- loading the sales_weather_daily.csv dataset
- computing demand signals by temperature bucket
- generating a simple forecast
- producing layout‑change suggestions
- server.py – MCP server entry point that wraps these functions as MCP tools.
- sales_weather_daily.csv – example dataset with Date, Store, Temp °C, Weather, Category, Units Sold, Revenue €.
- requirements.txt – Python dependencies. - loading the sales_weather_daily.csv dataset
- computing demand signals by temperature bucket
- generating a simple forecast
- producing layout‑change suggestions - As an MCP server from a client (e.g., Claude Desktop).
- With an MCP inspector / dev CLI for testing.
- As a standalone script to generate layout actions into layout_actions_suggested.csv. - Custom MCP server (Python) I implemented tools such as: list_stores – list unique stores in the dataset. demand_signals – average units sold per temperature bucket and category. top_categories – top sellers for cold / mild / warm conditions. classify_temperature – classify any °C value into a bucket. forecast – a simple temperature forecast for upcoming days. layout_actions – an end‑to‑end tool that takes a store and days‑ahead and returns layout suggestions. This server runs locally and is registered as a custom MCP server in my client.
- I implemented tools such as: list_stores – list unique stores in the dataset. demand_signals – average units sold per temperature bucket and category. top_categories – top sellers for cold / mild / warm conditions. classify_temperature – classify any °C value into a bucket. forecast – a simple temperature forecast for upcoming days. layout_actions – an end‑to‑end tool that takes a store and days‑ahead and returns layout suggestions.
- list_stores – list unique stores in the dataset.
- demand_signals – average units sold per temperature bucket and category.
- top_categories – top sellers for cold / mild / warm conditions.
- classify_temperature – classify any °C value into a bucket.
- forecast – a simple temperature forecast for upcoming days.
- layout_actions – an end‑to‑end tool that takes a store and days‑ahead and returns layout suggestions.
- This server runs locally and is registered as a custom MCP server in my client.
- AI client (Claude Desktop) calls the MCP tools From Claude, I can ask: “For store ‘Riga 1’, generate layout actions for the next 3 days based on the existing sales_weather_daily.csv data.” “Summarize this weekend’s layout actions into a short briefing for store staff.” Claude calls my layout_actions tool, which: reads the CSV (or, in a more advanced setup, reads from Notion) computes demand signals per temperature bucket fakes or consumes a short‑term forecast outputs structured layout actions (Store, Start/End Date, Category, Suggested Move, Expected Uplift, Forecast Temp, Bucket). Then, using the actions already written into Notion, I can ask Claude to summarize the weekend plan, producing a concise natural‑language overview (“This weekend: promote Garden and Cooling near the entrance, de‑emphasize Insulation”).
- From Claude, I can ask: “For store ‘Riga 1’, generate layout actions for the next 3 days based on the existing sales_weather_daily.csv data.” “Summarize this weekend’s layout actions into a short briefing for store staff.”
- “For store ‘Riga 1’, generate layout actions for the next 3 days based on the existing sales_weather_daily.csv data.”
- “Summarize this weekend’s layout actions into a short briefing for store staff.”
- Claude calls my layout_actions tool, which: reads the CSV (or, in a more advanced setup, reads from Notion) computes demand signals per temperature bucket fakes or consumes a short‑term forecast outputs structured layout actions (Store, Start/End Date, Category, Suggested Move, Expected Uplift, Forecast Temp, Bucket).
- reads the CSV (or, in a more advanced setup, reads from Notion)
- computes demand signals per temperature bucket
- fakes or consumes a short‑term forecast
- outputs structured layout actions (Store, Start/End Date, Category, Suggested Move, Expected Uplift, Forecast Temp, Bucket).
- Then, using the actions already written into Notion, I can ask Claude to summarize the weekend plan, producing a concise natural‑language overview (“This weekend: promote Garden and Cooling near the entrance, de‑emphasize Insulation”).
- Notion MCP writes the results into Notion In the same conversation, I ask Claude to “take these layout actions and insert them into my Notion ‘Layout Actions’ database, and create a summary page.” Using Notion’s MCP integration, Claude: creates new rows in the Layout Actions database (one per suggested move) updates or creates a “DIY Weather‑Smart Merchandising” dashboard view generates a “Weekend Store Playbook” page summarizing:
upcoming temperature buckets key categories to promote concrete moves for staff a short summary of the weekend layout actions.
- In the same conversation, I ask Claude to “take these layout actions and insert them into my Notion ‘Layout Actions’ database, and create a summary page.”
- Using Notion’s MCP integration, Claude: creates new rows in the Layout Actions database (one per suggested move) updates or creates a “DIY Weather‑Smart Merchandising” dashboard view generates a “Weekend Store Playbook” page summarizing:
upcoming temperature buckets key categories to promote concrete moves for staff a short summary of the weekend layout actions.
- creates new rows in the Layout Actions database (one per suggested move)
- updates or creates a “DIY Weather‑Smart Merchandising” dashboard view
- generates a “Weekend Store Playbook” page summarizing:
- upcoming temperature buckets
- key categories to promote
- concrete moves for staff
- a short summary of the weekend layout actions.
- Why Notion MCP matters here - I implemented tools such as: list_stores – list unique stores in the dataset. demand_signals – average units sold per temperature bucket and category. top_categories – top sellers for cold / mild / warm conditions. classify_temperature – classify any °C value into a bucket. forecast – a simple temperature forecast for upcoming days. layout_actions – an end‑to‑end tool that takes a store and days‑ahead and returns layout suggestions.
- list_stores – list unique stores in the dataset.
- demand_signals – average units sold per temperature bucket and category.
- top_categories – top sellers for cold / mild / warm conditions.
- classify_temperature – classify any °C value into a bucket.
- forecast – a simple temperature forecast for upcoming days.
- layout_actions – an end‑to‑end tool that takes a store and days‑ahead and returns layout suggestions.
- This server runs locally and is registered as a custom MCP server in my client. - list_stores – list unique stores in the dataset.
- demand_signals – average units sold per temperature bucket and category.
- top_categories – top sellers for cold / mild / warm conditions.
- classify_temperature – classify any °C value into a bucket.
- forecast – a simple temperature forecast for upcoming days.
- layout_actions – an end‑to‑end tool that takes a store and days‑ahead and returns layout suggestions. - From Claude, I can ask: “For store ‘Riga 1’, generate layout actions for the next 3 days based on the existing sales_weather_daily.csv data.” “Summarize this weekend’s layout actions into a short briefing for store staff.”
- “For store ‘Riga 1’, generate layout actions for the next 3 days based on the existing sales_weather_daily.csv data.”
- “Summarize this weekend’s layout actions into a short briefing for store staff.”
- Claude calls my layout_actions tool, which: reads the CSV (or, in a more advanced setup, reads from Notion) computes demand signals per temperature bucket fakes or consumes a short‑term forecast outputs structured layout actions (Store, Start/End Date, Category, Suggested Move, Expected Uplift, Forecast Temp, Bucket).
- reads the CSV (or, in a more advanced setup, reads from Notion)
- computes demand signals per temperature bucket
- fakes or consumes a short‑term forecast
- outputs structured layout actions (Store, Start/End Date, Category, Suggested Move, Expected Uplift, Forecast Temp, Bucket).
- Then, using the actions already written into Notion, I can ask Claude to summarize the weekend plan, producing a concise natural‑language overview (“This weekend: promote Garden and Cooling near the entrance, de‑emphasize Insulation”). - “For store ‘Riga 1’, generate layout actions for the next 3 days based on the existing sales_weather_daily.csv data.”
- “Summarize this weekend’s layout actions into a short briefing for store staff.” - reads the CSV (or, in a more advanced setup, reads from Notion)
- computes demand signals per temperature bucket
- fakes or consumes a short‑term forecast
- outputs structured layout actions (Store, Start/End Date, Category, Suggested Move, Expected Uplift, Forecast Temp, Bucket). - In the same conversation, I ask Claude to “take these layout actions and insert them into my Notion ‘Layout Actions’ database, and create a summary page.”
- Using Notion’s MCP integration, Claude: creates new rows in the Layout Actions database (one per suggested move) updates or creates a “DIY Weather‑Smart Merchandising” dashboard view generates a “Weekend Store Playbook” page summarizing:
upcoming temperature buckets key categories to promote concrete moves for staff a short summary of the weekend layout actions.
- creates new rows in the Layout Actions database (one per suggested move)
- updates or creates a “DIY Weather‑Smart Merchandising” dashboard view
- generates a “Weekend Store Playbook” page summarizing:
- upcoming temperature buckets
- key categories to promote
- concrete moves for staff
- a short summary of the weekend layout actions. - creates new rows in the Layout Actions database (one per suggested move)
- updates or creates a “DIY Weather‑Smart Merchandising” dashboard view
- generates a “Weekend Store Playbook” page summarizing:
- upcoming temperature buckets
- key categories to promote
- concrete moves for staff
- a short summary of the weekend layout actions. - I don’t have to build a custom UI; everything lives in Notion pages and databases.
- The AI can both read (past actions, sales context) and write (new layout actions, summaries) in a structured, permission‑aware way.
- My Python MCP server stays focused on the “brains” (weather + sales logic), while Notion is the “workspace” where humans see and act on the plan—and even get an auto‑written weekend summary they can quickly share with the team.
how-totutorialguidedev.toaiserverpythondatabasegitgithub