Plan school lunches for kids with Amazon Q
This is a submission for the Amazon Q Developer "Quack The Code" Challenge: Exploring the Possibilities Photo by Eaters Collective on Unsplash What I Built Problem to solve - "I don't like it" Making sure that my kids will eat the lunch In my sons' school, there are two main lunch options - you can order a meal from the catering provider, or bring your own food. Each option has its own pros and cons, but the main thing is that I cannot order lunch from the catering service whenever I want to. There is a specific menu, and kids, like everyone else, have their food preferences. Someone likes meat in all forms, someone won't touch a traditional Polish port chop Currently, in my family, the process of "providing our kids with lunch" is more or less spontaneous: what is tomorrow's lunch? they won't eat this ... we don't have products to prepare lunch, I need to go for groceries ... and so far, and so on The solution I prepared is aimed at helping us have more control over planning meals for our kids. Solution As a result, I would like to create a page in my Notion to easily track the menu for upcoming days. I will also let q suggest some recipes for meals prepared at home. Step 1 - Get menu So catering service provides a well-documented API to use when getting menu ... Just kidding! Who would build APIs for the catering service? To get the menu, I need to log in to the webpage. q can do this. There is a reason why the Playwright MCP Server is probably the most popular tool in the MCP ecosystem. With Playwright, AI agents can go and actually use the Internet. The whole "code" is available in this GitHub repo (there is no code, just configuration and prompts) I create mpc.json file and add playwright tool there: .amazonq/mcp.json { "mcpServers": { "playwright": { "command": "npx", "args": [ "@playwright/mcp@latest" ] } } } Now, when I run q, I can ask it to go to a specific page: And after a few actions I see the video with funny cats in the browser. In the same way, I will scrape the menu from the website using the same playwright tool. Let's start from the first prompt in the get_menu.md - read catering/.env file and get CATERING_LOGIN and CATERING_PASSWORD - go to https://www.zamow.kuchniacateringowa.pl/ and log in - go to https://www.zamow.kuchniacateringowa.pl/Product/Menu - click "Pokaż menu" for "SZKOŁA PODSTAWSOWA- KLASY 1-8" - check the "II danie + zupa" and "II danie + zupa + deser" for each date and create a table in the markdown format with the following columns - date - main dish (keep it in Polish) - desert (keep it in Polish) - save the table as a .md in the catering/menu/ directory Now I ask q to read the instructions and perform actions For some reason, sometimes the last step is not performed. I need to ask again to save the file As a result menu is saved in the new file. Step 2 - Analyze preferences I decided to split the whole process into steps so I could easily rerun the specific part without going through all the steps again. Once I have the menu saved, I can analyze food preferences and iterate over different inputs. The next prompt in the analyze_menu.mg - go to catering/menu directory and read the file with the newest date in the title. the date needs to be not earlier than tomorrow, otherwise stop the process - read preferences from catering/preferences directory - check the "Main Dish" column from the menu file for each date and create a table in the markdown format with the following columns - date - main dish (keep it in Polish) - desert (keep it in Polish) - OK for dummy_name_1 (use emoji for OK, NOT, SO-SO) - comment dummy_name_1 (based on loaded preferences, why this dish will be OK, NOT or SO-SO) - OK for dummy_name_2 (use emoji for OK, NOT, SO-SO) - comment dummy_name_2 (based on loaded preferences, why this dish will be OK, NOT or SO-SO) - save the table as a .md in the catering/analyze/ directory I created files with preferences for each of my sons. You might wonder why they are called Dummy_name_1 and Dummy_name_2, but hey, naming part is the hardest one, right? Now let's ask q to do the magic I save the result as a markdown file, and I can review it locally.

This is a submission for the Amazon Q Developer "Quack The Code" Challenge: Exploring the Possibilities
Photo by Eaters Collective on Unsplash
What I Built
Problem to solve - "I don't like it"
Making sure that my kids will eat the lunch
In my sons' school, there are two main lunch options - you can order a meal from the catering provider, or bring your own food. Each option has its own pros and cons, but the main thing is that I cannot order lunch from the catering service whenever I want to. There is a specific menu, and kids, like everyone else, have their food preferences. Someone likes meat in all forms, someone won't touch a traditional Polish port chop
Currently, in my family, the process of "providing our kids with lunch" is more or less spontaneous:
- what is tomorrow's lunch?
- they won't eat this ...
- we don't have products to prepare lunch, I need to go for groceries ...
and so far, and so on
The solution I prepared is aimed at helping us have more control over planning meals for our kids.
Solution
As a result, I would like to create a page in my Notion
to easily track the menu for upcoming days. I will also let q
suggest some recipes for meals prepared at home.
Step 1 - Get menu
So catering service provides a well-documented API to use when getting menu ... Just kidding! Who would build APIs for the catering service?
To get the menu, I need to log in to the webpage.
q
can do this. There is a reason why the Playwright MCP Server
is probably the most popular tool in the MCP ecosystem. With Playwright
, AI agents can go and actually use the Internet.
The whole "code" is available in this GitHub repo (there is no code, just configuration and prompts)
I create mpc.json
file and add playwright
tool there:
.amazonq/mcp.json
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Now, when I run q
, I can ask it to go to a specific page:
And after a few actions I see the video with funny cats in the browser.
In the same way, I will scrape the menu from the website using the same playwright
tool.
Let's start from the first prompt in the get_menu.md
- read catering/.env file and get CATERING_LOGIN and CATERING_PASSWORD
- go to https://www.zamow.kuchniacateringowa.pl/ and log in
- go to https://www.zamow.kuchniacateringowa.pl/Product/Menu
- click "Pokaż menu" for "SZKOŁA PODSTAWSOWA- KLASY 1-8"
- check the "II danie + zupa" and "II danie + zupa + deser" for each date and create a table in the markdown format with the following columns
- date
- main dish (keep it in Polish)
- desert (keep it in Polish)
- save the table as a .md in the catering/menu/ directory
Now I ask q
to read the instructions and perform actions
For some reason, sometimes the last step is not performed. I need to ask again to save the file
As a result menu is saved in the new file.
Step 2 - Analyze preferences
I decided to split the whole process into steps so I could easily rerun the specific part without going through all the steps again. Once I have the menu saved, I can analyze food preferences and iterate over different inputs.
The next prompt in the analyze_menu.mg
- go to catering/menu directory and read the file with the newest date in the title. the date needs to be not earlier than tomorrow, otherwise stop the process
- read preferences from catering/preferences directory
- check the "Main Dish" column from the menu file for each date and create a table in the markdown format with the following columns
- date
- main dish (keep it in Polish)
- desert (keep it in Polish)
- OK for dummy_name_1 (use emoji for OK, NOT, SO-SO)
- comment dummy_name_1 (based on loaded preferences, why this dish will be OK, NOT or SO-SO)
- OK for dummy_name_2 (use emoji for OK, NOT, SO-SO)
- comment dummy_name_2 (based on loaded preferences, why this dish will be OK, NOT or SO-SO)
- save the table as a .md in the catering/analyze/ directory
I created files with preferences for each of my sons. You might wonder why they are called Dummy_name_1
and Dummy_name_2
, but hey, naming part is the hardest one, right?
Now let's ask q
to do the magic
I save the result as a markdown file, and I can review it locally.