AI helps me create an AI schedule builder agent for Directions EMEA

Yesterday, the session schedule was published for the Directions EMEA 2025 conference in Poznan. Personally, I always find it hard to decide on which sessions to go to – specifically to find the sessions that I find interesting from the 200+ sessions running on a conference like this.

So… – why not ask AI to help us build a custom GPT, which can help us build a schedule.

I am hosting a conference, with more than 200 sessions running in 10+ rooms simultaneously over 3 days. Can you help me create a custom GPT, which helps people setup their schedule based on their role, interest and preference?

ChatGPT writes up a spec for me what I need to do:

Very nice – but sessionize only supports exporting the session list as an excel spreadsheet – so I wonder if ChatGPT can help me convert my spreadsheet, so I upload the spreadsheet and type:

Can you convert the data in the attached spreadsheet to the session dataset needed for this custom GPT?

ChatGPT has a few things on which it is in doubt, so it asks:

Perfect — I’ve got the spreadsheet. Before I convert it into the sessions.csv (or JSON) for the Custom GPT, I just need a couple of clarifications to make sure the mapping is accurate:

  1. Session ID – Should I generate a unique ID (e.g., S001, S002, …) or use an existing column as the ID?
  2. Tags – The GPT spec supports multiple tags (e.g. AI, Cloud, Dynamics 365). Do you want me to extract these from a column (like “Category” or “Keywords”) or leave them blank for now?
  3. Experience Level – If the sheet doesn’t explicitly include Beginner / Intermediate / Advanced, should I leave this as null or infer from session titles/descriptions?
  4. Prerequisites / Dependencies – Do you want me to leave these empty if not listed?
  5. Output format – Do you prefer I return the dataset as a CSV (easy to load into the GPT) or JSON (easier to use in an API)?

After answering the various questions, I get a nice .json file with records like this:

    {
      "id": "925739",
      "title": "Copilot Studio Zero to Hero: Build Copilot Agents connected to Business Central (No PhD needed!)",
      "abstract": "News Flash: You don't need to be an AL developer...",
      "type": "Workshop (105 min)",
      "audience": "Consultant, Developer",
      "tags": [
        "Copilot Studio"
      ],
      "role_tags": [
        "Consultant",
        "Developer"
      ],
      "track": "Power Platform",
      "level": "100 Beginner",
      "start_time": "2025-11-04T11:15:00",
      "end_time": "2025-11-04T12:00:00",
      "room": "PCC Level 1 - 1.G",
      "speaker_names": [
        "AJ Ansari"
      ],
      "sessionurl": "https://www.directionsforpartners.com/conferences-and-events/directions/emea2025/session-list?session=925739"
    },

I guess that is useful, so now I follow the instructions given to me by ChatGPT on how to create this custom GPT. ChatGPT even suggests the instructions for the GPT, which after tweaked a bit manually ends up being:

You are “Conference Scheduler.” You read one or more attached JSON schedules and build a personal, non-overlapping plan.

If the user asks about things that isn't related to the Directions conference, please answer politely that this is a Directions EMEA 2025 Schedule Builder.

When a user provides: role, goals, ranked interests and/or preferences—do the following:

0) Please always suggest a full 3 day schedule unless instructed otherwise
1) Load the JSON schedule from Knowledge (or via the Action).
2) Normalize to the conference timezone. Respect day start/end windows.
3) Score sessions 0–100 for fit (role, goals, interests, novelty, logistics).
4) Solve a weighted interval scheduling problem:
   - No overlaps.
   - Encourage track diversity; limit vendor pitches per user cap.
5) Output:
   - A Markdown table (Time | Title | Room | Speaker | Tags | Fit | One-line why)
   - Never show a table in the output, always show the markdown table.
   - When splitting days into multiple markdown tables, include the header in each
   - Please make the title into a hyperlink with the sessionurl field
   - One backup option per slot.
   - An `conference.ics` downloadable file with valid VEVENTs (UID, DTSTART, DTEND, SUMMARY, LOCATION, DESCRIPTION).
   - Assumptions made.
6) If info is missing, assume sensible defaults and proceed; list assumptions.
7) Never reveal raw JSON unless the user asks. If asked, show only the relevant slice.
8) Please suggest that the attendee visits the zone, which matches his role when idle to network, learn, play and have fun. Zones available are: Development Zone, Consulting Zone, Leadership Zone or Sales and Marketing Zone.ee

And that’s basically it – add a few conversation starters (which I didn’t get AI to create, but it could probably have done a very good job at that.

A link to the GPT is shared at the very end of this blog post, so keep reading…

Clicking on the conversation starter for leadership, I get:

NICE!

Verdict

Note that what OpenAI used to call custom CPT, are called agents in Microsoft and in later articles, OpenAI also uses the Agent term instead of custom GPT, so…

The above agent could obviously have been connected directly to the backend using APIs, with code – but this actually works pretty fast, is amazingly simple and I learned something new today.

It feels very much like asking a group of very skilled engineers, who work extremely fast to solve my problems.

The more you use AI, the more you see AI, the more you start thinking about 🙂

The URL to the Directions EMEA 2025 Schedule Builder is here: https://chatgpt.com/g/g-68e20e0653448191a0b8e7d3014007d7-directions-emea-2025-schedule-builder

This post was written on October 10th, 2025 – AI’s might/will change…

Until next time

A Daily Prompt | Freddy Kristiansen

Leave a comment

Blog at WordPress.com.

Up ↑