Skip to main content
This run demonstrates one scenario twice: a brief becomes a template-backed plan, questions are answered, the plan is reviewed, and one draft gig is created. The first pass starts in the web app and finishes with an agent. The second starts with an agent and finishes in the web app. Both passes work on the same saved plan.

Start the stack

EVENT_PLAN_EXTRACTOR=fixture reads the brief with a deterministic local extractor, so the run needs no AI Gateway key. To exercise the model, drop that variable and set AI_GATEWAY_API_KEY; the request is sent with zero data retention. Sign in as the seeded owner. The organization needs:
  • one gig template with a timed run of show, at least two staffing shifts, and a task checklist. Save any seeded gig as a template if none exists;
  • two saved venues with the same name in different cities, so the brief’s venue is ambiguous.

The brief

The brief has no year and no timezone on purpose.

Pass one: app first, agent second

1

Create the plan in the app

New gig → Plan from a brief, paste the brief, and submit. Expect the plan page, not a gig.
2

Choose the template

The corporate template ranks first with its reasons listed. Select it. Schedule entries, roles, and tasks appear labelled Template; doors and program show From brief with the template’s times kept beside them.
3

Answer the blocking questions

Expect exactly these under Needed to create the draft: the year for October 20 (offered as choices, none selected) and which The Echo is meant (nothing selected). The timezone shows as Suggested from the organization. Answer the year only, then close the tab.
4

Continue with an agent

Connect an MCP client to http://localhost:4000/mcp with the same user, and run the plan_event_from_brief prompt, or start CheckAI locally and ask it to continue the reception plan. The agent must list the existing plan rather than start a new one, present both venue candidates, and wait for your choice.
5

Review and create

Ask the agent to review the plan. It summarises by origin and lists what stays open. Ask it to create the draft: it must show a confirmation summary ending in “nothing is sent” and wait for your yes.
6

Reopen in the app

Reload the plan page: it shows Created and links to the gig. The gig is a Draft, its Overview lists the open decisions, and Planned from a brief links back to the plan.

Pass two: agent first, app second

Give the agent the same brief in a new conversation. After it asks its questions, stop. Open Gigs → Plans in the app: the plan is there, at the questions step, with the agent’s answers recorded. Finish the questions, review, and create the draft from the app.

Properties to check

Every column must be 0.

Automated coverage

The same properties are asserted without a browser in api-events:
  • src/db/eventPlanDraftWriter.integration.test.ts covers one gig per plan, concurrent creates, rollback, stale review, and nothing outbound.
  • src/db/eventPlan.integration.test.ts covers the version guard.
  • src/systems/event-plans/eventPlansOperations.integration.test.ts covers the full pipeline with the fixture extractor.