← Portfolio Personal 2026

Trousseau, an autonomous wedding coordinator

Planning my own wedding turned into eight months of small decisions with long lead times, and no tool held the context between them. I built a coordinator that holds it.

Architecture diagram for Trousseau, an autonomous wedding coordinator
Outcome
One skill, twenty-three expertise packs, ten scripts, four subagents, and thirteen memory files.
Stack
Claude Agent Skills · Python · Scheduled agents · Progressive disclosure · HTML
Year
2026
1skill
23expertise packs
10scripts
4subagents
13memory files

The problem

A few hundred small decisions, arranged in an order nobody tells you.

I got engaged, started planning, and within three weeks I could see the shape of the problem. A wedding is not one big decision. It is a few hundred small ones, most of them cheap on their own, arranged in a dependency chain with lead times measured in weeks. You cannot pick a save the date design until you have a palette. You cannot pick a palette until you have a venue, because the venue’s carpet and stone and light are the largest color field in every photograph. You cannot book a venue until you have a guest count. Miss the order and you do not find out for a month, when the printer says four weeks and your send window closed last Tuesday.

The wedding dependency chain: guest count sets the venue, the venue sets the palette, the palette sets the save the date design, and the printer's four week turnaround sets the last possible mail date. Every arrow is a wait, and the delay only surfaces at the end.
Figure 1. Why a checklist does not help. The items are cheap on their own; the cost is in the order, and the order is invisible until a lead time makes it expensive.

Every tool I tried was a checklist. Checklists have no idea what is urgent. They cannot tell you that the venue contract is the only thing that matters this week and the palette is a pleasant way to avoid it. Every AI tool I tried had the opposite problem: brilliant for one conversation, and then it forgot. I would explain the venue, the budget, the fact that I do not want anything that reads Halloween, and two days later I would explain it again. What I wanted was what a real coordinator gives you, which is not advice. It is somebody who has been carrying your context since March, who researches before asking a question, who narrows twenty options into three, who notices when one decision changes another, who sometimes just makes the small call instead of turning it into another approval, and who does the work without being asked. I did not need a better checklist. I needed someone to own the checklist.

Checklists have no idea what is urgent.

What I built

A coordinator with an ongoing job, not a chatbot waiting for a prompt.

Most AI tools wait. You open them, give them a task, review the answer, and then decide what to ask next. I built Trousseau to own the job instead.

Its scope is the whole role: vendor sourcing, budget management, contracts, design direction, the wedding timeline, and planning for the day itself. I set the bar closer to the work of a professional wedding coordinator than a typical planning app.

It researches photographers one day, continues that research the next morning, saves what it learned, and builds on it later. It holds budget decisions alongside vendor decisions instead of treating each conversation as new. And it makes decisions. Not every decision, but the small, reversible ones that do not benefit from being handed back to me.

Anything that reaches a vendor is different. Trousseau prepares the work, then drafts rather than sends. I still approve the actions that have consequences in the world.

Trousseau architecture: scheduled and direct triggers invoke a single wedding-coordinator skill, which loads expertise packs on demand and dispatches subagents and Python scripts. Small reversible calls are decided and logged automatically; anything vendor-facing is drafted and held for human approval. Thirteen memory files are read at the start of every run and written before it exits, and an eval set gates changes to the skill.
Figure 2. The whole system. The skill holds craft and routing, the packs hold depth, the state directory holds my wedding. Nothing crosses to a vendor without me.

How it works

Craft in the skill, my wedding in state, and a hard line where it stops.

Craft lives in the skill. My wedding lives in state. Trousseau is a plugin wrapping a single wedding-coordinator skill. The skill holds procedure and nothing else: how to run a vendor category from intake through cost model to shortlist, how to build a design direction, what to read for in a contract. Everything specific to me lives in the agent’s state directory as files it reads and writes: palette decisions, vendor shortlists, budget lines, and what has already been settled. The skill would work for a stranger’s wedding. The state is the only part that is mine.

Memory is a file, not a conversation. Each scheduled run starts with an empty context window and no history to lean on, so anything the agent wants its future self to know has to be written to state before the run ends. I write every run prompt as a briefing for a contractor who has never seen the project, which forces the state files to carry their own weight. If a run cannot be reconstructed from state alone, the state is wrong, and that shows up immediately rather than three weeks later.

Every run is scheduled, bounded, and logged. A daily run picks one vendor category, forms a question it has not asked before, hands the search to a research subagent, and writes what came back into state. Each run is keyed to its period, so re-running a day does not duplicate it. Turn and wall-clock ceilings stop a run from spiraling. Every run appends to a log, which is what makes the decisions it takes without me reviewable rather than invisible. Findings that will drive a decision get verified independently, because a confident summary of one vendor’s own marketing page is worse than no research at all.

One scheduled run in five steps: cold start with no memory of the previous run, read state, do one thing, write state, then stop at a ceiling or when the work is done.
Figure 3. Why the state layer exists. A run has no memory of the one before it, so anything the next run needs has to be written down while this one is still awake.

What changed

Fewer decisions reach me, and the ones that do arrive finished.

Decisions arrive as finished work. Ask for invitations and it returns complete combinations of palette, calligraphy, and layout to react to, not three options and a question. My reactions train it, so the range narrows toward what I actually like.

The dependency chain lives somewhere other than my head. I stopped tracking what was blocking what.

What I’d do differently

Three things I would sequence differently if I started again.

Write the state layer first. I built the skill with my wedding inside it and then had to pull my wedding back out. Deciding that split up front would have saved the extraction.

Define the role before the task list. Switching the framing from planner to coordinator changed what got built more than any technical decision did. A planner hands you a plan: checklists, timelines, a document you still have to work through. A coordinator does the work. Once the role was coordinator, the agent had to own the vendors, the budget, and the day itself instead of generating task lists about them, and the measure of success changed with it: not how good the plan looked, but how few decisions reached me.

Build the review surface earlier. The agent’s taste improves only as fast as I react to what it shows me, and reacting through a chat window is slower than reacting through a screen built for it.

What it taught me

The work worth automating is the part underneath.

The decisions that matter still come to me, and they arrive with better options in front of them than I would have assembled myself. What changed is everything underneath: the remembering, the chasing, the ordering, the four-week turnaround nobody mentioned. That is the part worth automating, and the line where it stops is the part worth designing.

Picking a palette turned into a game my fiancé and I play at the kitchen table. Trousseau generates the cards, we sort them yes or no, and the pile it shows us next narrows toward what we actually like.