Beyond the Chatbot: Building Extensible AI Workflows in Umbraco
A hands-on workshop at Umbraco US Festival 2026, Wednesday, September 30, in Enclave (2nd Floor). Part 1 runs 12:55–3:00, then a break, then Part 2 runs 3:20–4:40.
The premise
The Rabbit Hole is a podcast website built on Umbraco 17 LTS. It's based on Matt Brailsford's Codegarden 2026 demo (mattbrailsford/TheRabbitHole), and all credit for the original site and demo goes to him. Today, getting a new episode online is manual work. Someone listens to the audio, types up a transcript, writes a summary and show notes, links earlier episodes that get mentioned, and looks up each guest's details. This afternoon you'll hand that work to Umbraco AI. You'll start with direct service calls, then add a custom context and a tool, replace the hand-written calls with an agent, and finally let Umbraco Automate run the whole pipeline.
Agenda
| Time | Segment | Min |
|---|---|---|
| Part 1 | ||
| 12:55 | Lesson 0: Setup: clone, download, run (start as you sit down) | 5 |
| 1:00 | Lecture 1: Welcome & the landscape (your downloads keep going while we talk) | 12 |
| 1:12 | Setup checkpoint: site running, logged in, AI key saved | 10 |
| 1:22 | Lecture 2: Umbraco AI building blocks | 8 |
| 1:30 | Lesson 1: Install & configure Umbraco AI | 17 |
| 1:47 | Lecture 3: The pipeline & the core services | 8 |
| 1:55 | Lesson 2: Transcribe, summarise, write show notes | 27 |
| 2:22 | Lecture 4: Contexts & custom resource types | 8 |
| 2:30 | Lesson 3: Show Metadata context | 25 |
| 2:55 | Buffer / Q&A | 5 |
| 3:00 | Break. If you're behind, catch up with git checkout lesson-3-end |
20 |
| Part 2 | ||
| 3:20 | Lecture 5: Tools | 6 |
| 3:26 | Lesson 4: Episode guests tool | 16 |
| 3:42 | Lecture 6: Agents | 7 |
| 3:49 | Lesson 5: The Podcast Producer agent | 20 |
| 4:09 | Lecture 7: Umbraco Automate + AI | 6 |
| 4:15 | Lesson 6: Hand the pipeline to Automate | 20 |
| 4:35 | Wrap-up | 5 |
| Take-home | Lesson 7 (bonus): Prompt templates | ~30 |
Every lesson is timeboxed. When time's up, anyone who hasn't finished checks out that lesson's end branch, and we all move on together. Finished early? Try the 🚀 stretch goals at the bottom of each lesson.
The requirements
The client wants four things. Each lesson page has a Requirements tracker so you can see how far along we are.
- ⬜ Transcribe podcast audio
- ⬜ Generate a summary and show notes
- ⬜ Validate and cross-link mentioned episodes
- ⬜ Validate and link guest details
How the branches work
The repository has one branch for the starting point and one for the end of every lesson:
init → lesson-1-end → lesson-2-end → lesson-3-end → lesson-4-end → lesson-5-end → lesson-6-end →
lesson-7-end (bonus) → main
| Branch | What's in it |
|---|---|
init |
The client's existing site. All the non-AI plumbing is built, but there are no AI packages, config or code yet. You start here. |
lesson-N-end |
The finished state of lesson N: the code and a database snapshot with that lesson's backoffice configuration. |
main |
The same as lesson-7-end, plus this documentation site. |
Fell behind, or something broke? Checking out a lesson's end branch catches you up completely. Follow How to jump to a lesson's end branch. It takes about a minute.
Start here
Sit down, open a terminal, and start setting up. The downloads run while the first lecture is on. If you don't have an AI key yet, Bring your AI key explains your options.