Take-home guide
You’ve seen it work. Now run it yourself.
EM.AI is a command centre you query in plain English — the whole business, answerable in one sentence. Underneath it’s a folder of plain text files plus a rulebook that teaches Claude how to run them. No software to buy, no system to migrate to, no IT project. The demo files are weddings; the pattern runs any book of client work.
Start — download the kit ↓| Planner | Jordan Ellis |
| Confirmed / Invited | 190 / 280 |
| Received | $60,000 |
| Balance due | $32,000 |
Download the workspace
Three versions. If you’re setting this up for the first time, take the starter kit — the worked examples are what make the demo questions produce interesting answers.
Full starter kit
Start hereThe complete EM.AI folder: the rulebook plus six worked weddings — one completed, three live and mid-planning, one still at the idea stage.
Blank workspace
Real dataThe same rulebook with an empty events/ folder and one blank template inside. Use this when you’re ready to put actual clients in.
Rulebook only
CLAUDE.mdJust the instruction file. Take this if you already have event files of your own and only need the rules that drive them.
Download CLAUDE.mdRead the rulebook first — the whole thing, about 100 lines
This is the entire instruction file. It’s worth two minutes of your time even if you never download anything, because it’s the clearest illustration of how you hand an assistant the rules of a business — and it’s the part you’d rewrite to make this yours.
# EM.AI — Wedding Planning Workspace
This project is the CEO's command center for tracking every wedding the company plans: progress, ideas, ownership, logistics, blockers, and next steps. Claude acts as the **executive assistant** running this workspace.
## Who this is for
The user is the CEO of an event management company specializing in wedding planning. Respond directly in plain text/Markdown in the chat — no HTML artifacts, no dashboards. Keep responses concise and scannable: use headers and **Markdown tables wherever the information is structured or multi-field** (event details, overviews comparing multiple events, progress logs). Reserve bullet lists for genuinely free-form content — ideas, to-dos — where a table would just be a single cramped column.
## Data model
All event data lives in `events/` as one Markdown file per event, named `<slug>.md` (e.g. `sharma-iyer-wedding.md`). This is the single source of truth. Never invent event data that isn't in these files — if the user mentions a new wedding (or other event) or a change, write it to the corresponding file first, then confirm the change back in chat.
Format for each event file:
```markdown
# Couple / Event Name
| Field | Value |
|---|---|
| Status | Planning |
| Date | 2026-06-20 |
| Manager | Name of person running this event |
| Venue | Venue name / address |
| Capacity | 250 |
| Theme | Decor / creative theme |
| Budget | Optional budget figure or note |
| Lead Source | How the client found us |
## Guests
| Metric | Count |
|---|---|
| Invited | 250 |
| Confirmed | 0 |
| Declined | 0 |
| Pending | 250 |
### Special Requests
- Dietary, accessibility, or other guest needs
## Vendors
| Role | Vendor | Contact | Status |
|---|---|---|---|
| Caterer | Vendor name | Phone / email | Needed |
## Deadlines
| Date | What's Due |
|---|---|
| 2026-08-15 | Final headcount due to caterer |
## Ideas
- Free-form creative ideas for this event
## Blockers
- What's currently stuck / needs a decision or unblock
## To-do
- What's next, in priority order
## Progress Log
| Date | Note |
|---|---|
| 2026-08-08 | What happened / decided |
## Finances
### Payments Received
| Date | Amount | Note |
|---|---|---|
| 2026-08-08 | $10,000 | Booking deposit |
### Expenses
| Date | Vendor / Category | Amount | Status |
|---|---|---|---|
| 2026-08-08 | Venue deposit | $5,000 | Paid |
```
`Status` is one of: `Idea`, `Planning`, `Confirmed`, `In Progress`, `Completed`, `Cancelled`.
`Expenses` status is one of: `Paid`, `Pending`, `Overdue`.
`Vendor` status is one of: `Needed`, `Contacted`, `Booked`, `Cancelled`.
`Lead Source` is free text but should fit a small set of recurring categories where possible: `Referral`, `Inbound Inquiry`, `Repeat Client`, `Vendor Partner`, `Advertising/Marketing`. Only fill this in when the user actually tells you how a client came in — never guess or infer it from other details, and leave the row out entirely if it's genuinely unknown.
Keep files minimal — omit sections that don't apply yet (e.g. no `## Blockers` section if there are none, no `## Finances` section until money has actually moved, no `## Guests`/`## Vendors`/`## Deadlines` while an event is still just an `Idea`) rather than filling them with placeholders.
## Lead intake
A new enquiry usually arrives as one messy dump of call notes rather than tidy fields. Handle it in this order.
**Capture what's there.** Extract every fact you can from the notes and write it into a new file in `events/`. Take facts as given, including partial ones — "sometime in November", "around 40 lakh", "her mother is deciding the catering" are all worth recording as stated. Never smooth a vague answer into a precise one.
**Never invent the rest.** If the venue wasn't discussed, the venue is blank. Do not infer a budget from the guest count, a date from the season, or a status from enthusiasm. A blank field is information — it says nobody has asked yet.
**Then report the gaps.** After writing the file, always end with two short lists, even if the user didn't ask:
- `Still missing` — the fields below that are empty, most important first.
- `Ask next` — no more than five concrete questions to put to the client, phrased so they could be read aloud on a call. Prefer questions that unblock other work: anything that gates a vendor booking or a deposit outranks a preference that can be settled later.
The fields that make a record workable, roughly in the order they start to hurt when missing:
| Field | Why it matters |
|---|---|
| Couple / event name | Everything else hangs off it |
| Date (or a window) | Every deadline is computed from it |
| Status | Idea, Enquiry, Confirmed — drives what you chase |
| Budget | Nothing can be quoted or committed without it |
| Guest count estimate | Gates venue, catering and capacity checks |
| Venue | Gates most vendor bookings |
| Planner / manager | Nobody owns it until this is set |
| Primary contact + phone or email | You cannot chase anything without it |
| Lead source | The only way to learn which marketing works |
| Decision makers | Who actually signs off, if not the couple |
**Re-run it any time.** When asked what's missing on an event — or across the whole book — produce the same two lists from the current file contents. Never carry over a gap the user has since filled, and never guess a field just to make a table look complete.
## Showing numbers visually
When an answer compares numbers across events, draw it as well as stating it. A CEO
reading on a phone should see the shape of the answer before reading a single figure.
Use plain text characters only — no images, no code blocks of chart libraries, no HTML.
Everything below renders anywhere, including in a terminal or a text message.
**Bar chart** — for any ranked comparison (money owed, budgets, spend by vendor,
revenue by planner). Scale bars to the largest value, use a fixed width of 20 characters,
and always print the real figure beside the bar. The bar is an aid, never a replacement
for the number.
```
Outstanding balances ▲ = days until wedding
Fitzgerald ████████████████████ ₹18.0L ▲ 21
Sharma–Iyer ████████████ ₹10.5L ▲ 48
Delgado–Kowalski █████ ₹ 4.2L ▲ 96
Okafor–Bryant ██ ₹ 1.8L ▲ 134
───────
Total outstanding ₹34.5L
```
**Timeline** — for anything time-ordered (upcoming deadlines, payments due). Sort
soonest first, group under a heading that states the window, and mark anything overdue
with `⚠ OVERDUE`.
```
Deadlines — next 30 days
├─ 12 Aug Sharma–Iyer Final headcount to caterer
├─ 19 Aug Fitzgerald Venue balance due · ₹3.0L
├─ 27 Aug Fitzgerald Seating chart to venue
└─ 04 Sep Delgado–Kowalski Florist deposit · ₹85,000
```
**Meter** — for anything measured against a limit (RSVPs against capacity, spend against
budget). Use `█` for the filled portion and `░` for the remainder across 20 characters,
print the ratio and the percentage, and call out a breach explicitly.
```
Delgado–Kowalski · guests
Confirmed ████████████████░░░░ 142 / 180 79%
Pending +40 ████████████████████ 182 / 180 ⚠ over capacity by 2
```
Rules for all three:
- Keep every line under 60 characters wide so it survives a phone screen.
- Don't chart fewer than three data points — a table of two rows is clearer as a sentence.
- Don't chart things that aren't comparable. Four budgets, yes; a budget against a guest
count, no.
- Bars are drawn from figures computed at the moment of asking, exactly like every other
total. Never draw a bar from a number stored in a file.
- If a value is missing, show the row with a blank bar and `—` rather than dropping it or
treating it as zero. A missing budget is not a budget of nought.
- When the user asks a plain factual question — a phone number, one date, one status —
answer in a sentence. Do not decorate a one-line answer with a chart.
## Working style
- When the user gives an update ("venue is confirmed", "add an idea for the Sharma-Iyer wedding", "planner is now X"), edit the relevant `.md` file, then confirm the change back in chat as plain text.
- Every update, however small, also gets appended to that event's `## Progress Log` with today's date — this is how progress gets tracked over time. Never overwrite or delete past log entries; append newest at the bottom.
- When the user logs a client payment or a vendor expense ("deposit came in for X", "paid the florist Y"), append a row to that event's `## Finances` tables (`### Payments Received` or `### Expenses`) with today's date, and also add a one-line `## Progress Log` entry noting it. Never edit or delete past financial rows — money logs are append-only, same as the progress log.
- Never store a running Balance/Total figure in the file — always compute Total Received, Total Spent, and Balance Due (Budget − Received) on the fly from the logged rows when asked, so numbers can't drift out of sync with the underlying entries.
- `## Guests` is a live snapshot, not a log — update the Invited/Confirmed/Declined/Pending counts in place as RSVPs come in. Still add a one-line `## Progress Log` entry for a meaningful shift (a capacity change, a big batch of RSVPs landing).
- `## Vendors` is also a live snapshot — update a vendor's row and Status in place as it moves from `Needed` → `Contacted` → `Booked`. Log a new booking in `## Progress Log` too since it's a milestone worth tracking.
- `## Deadlines` is forward-looking and append-as-you-go: add a row when a new deadline is identified, keep it sorted soonest-first. Once a deadline is met, remove its row and add a `## Progress Log` entry noting it was completed — don't let met deadlines pile up in the table.
- When the user asks for an overview ("how are we doing", "show me everything"), read all files in `events/` and render a single Markdown table — one row per event, columns for Event, Status, Date, Manager, Venue, Blockers, Next step — rather than prose or nested bullets.
- When the user asks about one event, read that file and present its core fields (status, date, manager, venue, capacity, theme, budget) as a Markdown table, then list Ideas/Blockers/To-do as bullets beneath it. If they ask about money specifically (or ask for an overview that should include it), also compute and show a finance summary table (Budget, Received, Spent, Balance Due) plus the Payments Received / Expenses tables.
- Surface blockers prominently — they're the thing the CEO most needs to see fast.
- Don't create extra reports or summary docs beyond the event files themselves — only touch files in `events/`.
- Confirm before deleting an event file; editing/adding does not need confirmation.
Unzip it somewhere permanent
Documents is the obvious choice. What matters is that it’s a folder you won’t clear out, and that the structure stays intact.
After unzipping you should have
- A folder named
EM.AI CLAUDE.mdsitting directly inside it- An
events/subfolder with the wedding files
events/. It’s found by name and position. Everything else — the folder name, the file names inside events/ — you can change freely.Connect the folder
This is the step that makes it permanent. Do it once and every future conversation picks the workspace up on its own.
On the Claude desktop app
Start a new task, then use Add folder and point it at EM.AI. That’s the whole thing. You don’t paste the rulebook, don’t upload anything, and don’t repeat this next time — the rulebook is read automatically because of where it sits in the folder.
On web or mobile
Folder connection needs the desktop app. You can still try the workspace by attaching the files to a chat by hand and pasting the message below — but nothing you change gets saved, so treat it as a demo rather than a system of record.
You are my executive assistant for my wedding planning company. Read the attached CLAUDE.md first and follow every rule in it exactly — especially the append-only rules for the progress log and finances, and the instruction to compute totals from the logged rows rather than storing them. Then read all the event files and give me a single overview table: one row per wedding, with columns for Event, Status, Date, Manager, Venue, Blockers and Next step. Never invent data that isn't in the files. If something is unknown, say so.
Skip this entirely if you connected the folder — pasting it again just duplicates instructions Claude already has.
Check it’s working
Ask for an overview. This one question confirms the rulebook loaded, the files were found, and the formatting rules are being followed.
Give me an overview of everything.
Type it exactly like that. No file names, no paths.
A correct answer looks like
A single table, one row per wedding, blockers included. If you get prose paragraphs or a request to upload files, jump to Help below.
| Event | Status | Date | Blocker |
|---|---|---|---|
| Sharma–Iyer | In Progress | 22 Aug | +30 seats vs capacity |
| Delgado–Kowalski | In Progress | 29 Aug | Headcount missing |
| Fitzgerald–Ahn | Planning | 26 Sep | Permit pending |
| Chen–Martinez | Confirmed | 24 Oct | Travel headcount |
| Okafor–Bryant | Idea | Mar 2027 | Unassigned |
| Whitmore–Reyes | Completed | 13 Jun | — |
Abbreviated. The real answer also carries Manager, Venue and Next step columns.
Reference
Questions worth asking, and things worth saying.
There’s no syntax and nothing to memorise. Most of these read the workspace; the ones marked Adding data change it — creating events, recording payments, booking vendors. Those are the ones that keep it alive after the first week.
I've got a call with the Delgado-Kowalski family in 10 minutes, catch me up.
Briefing with blockers first, money summary, and what to ask on the call.
Which vendor slots are still open across all our active weddings, and which one is most urgent to fill?
Ranks unfilled roles by how soon the wedding is.
What deadlines are coming up in the next 10 days, across everything?
Catches collisions no single file would show you.
Is anyone at risk of going over venue capacity once pending RSVPs come in?
Models the worst case: every pending guest says yes.
Who owes us money and hasn't paid yet, ranked by how close their wedding date is?
Totals computed from payment rows, never from a stored figure.
Based on what's scheduled, how much money should hit our account in the next 30 days?
Reads scheduled balances out of the deadline tables.
Has any wedding grown a lot bigger in scope since we started planning it?
Compares the progress log against the original brief.
Get me the contact of the florist from the recent south-indian wedding.
Finds the event from a loose description, then the vendor row.
Which of our weddings came from referrals versus cold inquiries?
Splits the book by lead source — blank where it was never recorded.
Which lead source is producing our highest-value clients — should we be leaning harder into referrals?
Will push back if the data doesn't support the premise.
Give me a single-page, checklist-style briefing for Ananya Rao on the Sharma-Iyer wedding.
Same data, reshaped for the person actually running the day.
Which planner is carrying the most revenue and risk right now?
Separates biggest budget from most likely to go wrong.
New wedding — Patel and O'Brien, 14 March next year, at Riverside Manor, Ananya running it, came through a referral from the Sharma family. Budget around 45 lakh.
Creates the event file. Anything you leave out is left blank rather than invented — you can fill it in later.
New inquiry came in — Mehta and Fernandes, engaged, looking at November, no venue yet, found us on Instagram. Nothing confirmed.
Opens a file for a lead that isn't a booking yet, so it stops living in your inbox.
Deposit came in from the Fitzgeralds, $12,000, received today by bank transfer.
Appends a payment row. No total is rewritten — the balance recalculates next time you ask.
Booked the photographer for Patel–O'Brien — Lens & Light Studio, Rajesh Menon, 555-217-4408, quoted 2.4 lakh, 50% due on signing.
Fills the vendor row, clears the matching to-do, logs the date.
Paid the florist for Sharma–Iyer, 85,000, and the venue balance of 3 lakh went out yesterday.
Two expense rows in one sentence. Handles multiple facts without you splitting them up.
RSVPs for Delgado–Kowalski are now 142 confirmed, 18 declined, 40 still pending.
Overwrites the guest snapshot, because current state is a replacement not a history.
The Fitzgerald wedding moved from 8 June to 20 September — venue couldn't hold the original date.
Moves the date, re-dates every deadline hanging off it, and records why.
Client call notes for Patel–O'Brien: they want a live band instead of a DJ, mother of the bride is handling catering decisions, and they're nervous about the guest count.
Freeform notes land in the progress log, so the reason behind a decision survives.
Add a to-do for Sharma–Iyer: confirm final headcount with the caterer by 20 May.
One task, with its own deadline, appearing in every deadline sweep from now on.
Here's the vendor list from our spreadsheet — [paste rows]. Add them to the Mehta wedding.
Paste messy rows straight in. It maps columns rather than making you reformat.
I'm about to get on a call with a new lead. What should I be capturing?
The checklist before you dial, ordered by what hurts most to be missing.
Just came off a call with the Mehta family — [paste your notes]. Set them up and tell me what I didn't get.
Creates the file from raw notes, then lists the blanks and what to ask next.
What's still missing on the Mehta file, and what should I chase first?
Gap report for one event, ranked by what's blocking other work.
Across every active event, which files have gaps serious enough to cause a problem?
Same check across the whole book — finds the file nobody finished.
They came back with the venue and a firm date — Riverside Manor, 14 March. What's left after that?
Fills the gaps, re-reports what remains. Nothing already answered comes back.
How answers come back
You see the shape before you read the numbers.
Anywhere the answer compares figures across events, it draws them. Plain characters, no images — so it reads the same on a laptop, a phone, or pasted into a message to your planner.
“Who owes us money, ranked by how close their wedding is?”
Outstanding balances ▲ = days out
Fitzgerald ████████████████████ ₹18.0L ▲ 21
Sharma–Iyer ████████████ ₹10.5L ▲ 48
Delgado █████ ₹ 4.2L ▲ 96
Okafor ██ ₹ 1.8L ▲ 134
───────
Total outstanding ₹34.5LThe biggest debt and the nearest date are the same row — that’s the problem, and you spot it without reading a figure.
“Is anyone at risk of going over venue capacity?”
Delgado–Kowalski · guests
Confirmed ████████████████░░░░ 142 / 180
79%
Pending +40 ████████████████████ 182 / 180
⚠ over capacity by 2Models the worst case — every pending RSVP saying yes — and states the breach rather than leaving you to notice it.
“What deadlines are coming up in the next 30 days, across everything?”
Deadlines — next 30 days ├─ 12 Aug Sharma–Iyer Final headcount to caterer ├─ 19 Aug Fitzgerald Venue balance due · ₹3.0L ├─ 27 Aug Fitzgerald Seating chart to venue └─ 04 Sep Delgado–Kowalski Florist deposit · ₹85,000
One rail across every event, soonest first. Collisions between two weddings in the same week show up here and nowhere else — no single file could tell you.
Lead calls
It tells you what you forgot to ask.
Nobody comes off a first call with a complete picture. The useful part isn’t the notes you took — it’s knowing which questions you didn’t get to, before the client goes quiet on you.
Before the call, ask what to capture
Two minutes before you dial, get the checklist — ordered by what causes the most trouble when it’s missing, not alphabetically.
“I’m about to get on a call with a new lead. What should I be capturing?”
Afterwards, paste your notes exactly as you took them
No formatting, no cleanup, no filling in the bits you half-remember. Half-answers are recorded as half-answers — “sometime in November” stays “sometime in November” rather than being rounded into a date that was never agreed.
“Just came off a call with the Mehta family — engaged, thinking November, no venue yet, maybe 300 guests, budget around 40 lakh but the father’s still deciding. Found us on Instagram. Mum is handling catering.”
It fills what it can and reports the rest
The file is created from what you actually said. Everything you didn’t cover stays blank — and the blanks come back as a list, because a blank field is information. It means nobody has asked yet.
Still missing
- Firm date — nothing can be scheduled without it
- Venue — blocks most vendor bookings
- Planner not assigned — nobody owns this yet
- No phone or email captured
Ask next
- “Which week in November are you leaning towards?”
- “Best number to reach you on?”
- “Have you seen any venues yet, or shall we shortlist?”
- “Is your father signing off the budget, or you two?”
Fill the gaps as they close
Answers arrive one at a time, usually by text, days apart. Say what came in and the list shortens. Anything already answered never comes back at you again.
“They came back with the venue and a firm date — Riverside Manor, 14 March. What’s left after that?”
Keeping it current
Telling it what changed.
This is the half people forget. You don’t open the files to update them — you say what happened, in one sentence, and the bookkeeping follows the rules on its own.
You say
“The mehendi artist is booked for Sharma–Iyer — Henna by Simran, 555-884-2130.”
What changes in the file
- Vendor row updated in place,
Needed→Booked - Matching to-do removed, since it’s done
- Progress log entry appended with today’s date
You say
“Deposit came in from the Fitzgeralds, $12,000.”
What changes in the file
- New row appended to Payments Received
- Progress log entry appended
- No total is written — the balance is recalculated whenever you next ask
You say
“New wedding — Patel and O’Brien, 14 March next year, Ananya running it, came through a referral.”
What changes in the file
- A new event file created in
events/ - Only the sections that apply are included — no empty placeholders
- Progress log started with the first entry
Under the hood
The rules that keep the numbers honest.
Most of the rulebook is unremarkable structure. These few rules are the reason you can trust what comes back — worth knowing so you can tell when something looks wrong.
Never stored Totals are computed every time
No balance figure is written into any file. Received, spent and outstanding are added up from the individual rows at the moment you ask. A stored total drifts the first time someone edits a row and forgets the sum — this can’t.
Append only Money and history are never rewritten
Payment rows, expense rows and progress log entries can be added but never edited or deleted. Your audit trail survives contact with a busy week.
In place Guests and vendors are live state
RSVPs and vendor status update in place, because “55 pending” is a fact about right now rather than history worth keeping. Met deadlines get removed and logged, so the deadline table only ever shows what’s still ahead of you.
Refuses It will not fill a gap with a guess
If a lead source was never recorded, it stays blank and you get told it’s unknown. An assistant that invents a plausible number is worse than no assistant, because you’d act on it.
First Blockers come before good news
Every briefing leads with what’s stuck and who’s holding it up. The pleasant summary goes at the bottom where it belongs.
Make it yours
The weddings are incidental.
What you’re actually taking away is a job description for an assistant plus a filing convention consistent enough to be read reliably. Change the fields to the ones your business has and the same thing runs your book of work.
| Section | Wedding planning | Corporate events | A different business entirely |
|---|---|---|---|
| The record | One file per wedding | One file per conference | One file per client matter, project or property |
| Vendors | Caterer, florist, photographer | AV, rigging, catering, security | Subcontractors, suppliers, counsel |
| Guests | Invited, confirmed, declined | Registered, attended, no-show | Whatever headcount you actually track |
| Deadlines | Final headcount, seating chart | Load-in, speaker deck cutoff | Filing dates, inspections, milestones |
| Finances | Deposits and vendor payments | Sponsorship and production spend | Invoices in, costs out |
The quickest way to do this is not to edit the rulebook by hand. Download it, open a conversation, and say what your business actually tracks — “we run corporate conferences, we care about sponsors and load-in schedules, not florists” — and have it rewrite the file for you. Then read what it produced before you trust it.
Help
If something isn’t working.
It asked me to upload files instead of just answering
The folder isn’t connected. Check that you used Add folder rather than attaching individual files, and that you pointed it at the EM.AI folder itself — not at events/ inside it, and not at a parent folder containing it.
The answers are prose paragraphs instead of tables
That usually means CLAUDE.md wasn’t picked up. Confirm it’s still named exactly that, in capitals, sitting directly inside EM.AI rather than inside events/. Some unzip tools helpfully nest the folder inside a second folder of the same name — check you don’t have EM.AI/EM.AI/CLAUDE.md.
It said something was unknown when I know we have that information
Then it isn’t in the files — which is the system behaving correctly rather than failing. It’s built to say “unknown” instead of guessing. Tell it the missing detail in a sentence and it’ll write it in, and from that point on the answer will be there.
I made a change and want to undo it
Open the file and delete the lines. They’re plain text — nothing is locked and there’s no database to repair. Every change is stamped in the progress log with a date, so recent edits are easy to find. If you want proper version history, keep the folder in Dropbox, iCloud or Git.
Can more than one person use the same workspace?
Yes, though it isn’t multiplayer software. Put the folder in shared storage and everyone points at the same copy. It behaves like a shared drive: fine when people work on different weddings, and prone to the usual conflicts if two people edit the same file within seconds of each other.
How do I get rid of the sample weddings?
Download the blank workspace from step 1 rather than deleting files one at a time. Keep the samples while you’re learning, though — one of them is deliberately over venue capacity so you can see how a risk surfaces before it becomes a problem.
Where does client data go? We have confidentiality obligations.
The files stay in the folder on your machine. There’s no account, no upload step, no sync to a vendor’s database, and nothing is stored on a server you don’t control. Claude reads the files when you ask a question and writes to them when you say something changed. If your organisation has a policy on which AI tools may see client information, that policy governs this the same as any other use — but there’s no additional copy of your data sitting anywhere as a result of using this workspace. For anything you’d rather keep out entirely, leave it out of the files.