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.

May 6, 2025 - 21:08
 0
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

Image description

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:

Image description

And after a few actions I see the video with funny cats in the browser.

Image description

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

Image description

For some reason, sometimes the last step is not performed. I need to ask again to save the file

Image description

As a result menu is saved in the new file.

Image description

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?

Image description

Now let's ask q to do the magic

Image description

I save the result as a markdown file, and I can review it locally.

Image description