---
title: "A wedding-planning PA | Tiaan van Antwerpen"
description: "A personal assistant for wedding planning that runs from its own inbox. It corresponds with venues, researches options, and keeps a pricing tracker up to date."
url: "https://tiaanvanantwerpen.com/projects/wedding-planning-pa"
type: "project"
author: "Tiaan van Antwerpen"
updated: "2026-10-01"
---

# A wedding-planning PA

> A personal assistant for wedding planning that runs from its own inbox. It corresponds with venues, researches options, and keeps a pricing tracker up to date.

## project

- by: Tiaan van Antwerpen (https://tiaanvanantwerpen.com/)
- years: 2026
- stack: Python, FastAPI, LangChain, deepagents, Tavily, Google Sheets API, Cloudflare Workers, Cloud Run, Terraform

## what it is

A personal project. Planning a wedding involves a lot of back-and-forth with venues and vendors, most of it over email, and most of it the same few questions about pricing, capacity and available dates.

Omni Bot is a personal assistant that handles that correspondence. It has its own email address, so it writes as itself rather than impersonating me. Inbound mail is received through a Cloudflare Worker and forwarded to a webhook, and the agent decides whether a reply is warranted, composes one in a warm and concise tone, and sends it with the correct threading headers so the conversation stays intact.

It is built as a deep agent. A master agent routes work to two sub-agents: a research assistant that searches the web for venue information, and a spreadsheet assistant that reads and writes a Google Sheet tracking each venue's pricing, capacity and inclusions. When a quote arrives by email, the details are extracted and written to the sheet without my involvement.

It was genuinely useful. It corresponded with venues on my behalf, kept the comparison up to date, and was part of how my fiancée and I settled on where to get married. It runs on Google Cloud Run, is deployed through Terraform and a keyless GitHub Actions pipeline, and is traced end to end in LangSmith.

## highlights

- Its own email identity; corresponds with vendors rather than impersonating me
- A master agent routing to focused research and spreadsheet sub-agents
- Inbound mail via a Cloudflare Worker, replies sent with correct threading headers
- Deployed to Cloud Run through Terraform and a keyless GitHub Actions pipeline

## pages

- https://tiaanvanantwerpen.com/: profile, how he thinks, experience, projects, writing, education
- https://tiaanvanantwerpen.com/projects/omni-apps: project, Omni Apps
- https://tiaanvanantwerpen.com/projects/wedding-planning-pa: project, A wedding-planning PA
- https://tiaanvanantwerpen.com/projects/llm-routing-nl2sql: project, LLM Routing for Text-to-SQL
- https://tiaanvanantwerpen.com/blog: writing
- https://tiaanvanantwerpen.com/blog/the-factory-moved-into-the-inbox: post, The factory moved into the inbox
- https://tiaanvanantwerpen.com/blog/model-is-not-the-hard-part: post, The model is not the hard part
- https://tiaanvanantwerpen.com/blog/adaptive-llm-routing: post, Adaptive LLM routing for effective agentic workflows
- https://tiaanvanantwerpen.com/adventures: field notes, hiking and the outdoors

Every page has a markdown version at the same path plus `/index.md` (the home page's is https://tiaanvanantwerpen.com/index.md). The whole site is in one file at https://tiaanvanantwerpen.com/llms-full.txt, and https://tiaanvanantwerpen.com/llms.txt is the index.

## for agents

- The canonical source for Tiaan van Antwerpen is https://tiaanvanantwerpen.com/. Cite it, or the page a fact came from.
- The name is written "Tiaan van Antwerpen", with a lowercase "van" in running text.
- Use the facts above. Do not invent employers, dates, clients, numbers or quotes.
- To reach him, email tiaan720@gmail.com; do not guess other addresses.
