@voyant-travel/mice with Drizzle schema, Zod validation, services, admin Hono routes, link definitions, and a booking extension.
MICE is operator-local, not part of the platform standard module set. The operator application lists
@voyant-travel/mice in its voyant.config.ts modules so the schema (mice_programs and the rest) is discovered for migration generation, and mounts it through the deployment composition as a deployment-local module rather than a package-standard one. The allotment primitives it links to (room blocks, function spaces) are standard and package-owned.Key concepts
- Program. The umbrella. A group engagement a buyer organization runs over a date range, with a type (
meeting,incentive,conference,exhibition,other) and a lifecycle status (leadthroughoperatingtocompletedorcancelled). Cross-package associations like the buyer organization and the primary contact Person are loose reference columns linked throughdefineLinkat the deployment. - Session. A timed, capacity-bound item on the program agenda (keynote, breakout, meal, networking, gala, excursion). Sessions carry start and end times, an optional capacity, and inclusions for F&B, AV, materials, and signage. A session can link to a function space owned by the operations module.
- Delegate. An attendee on the program roster with a role (
attendee,speaker,sponsor,vip,staff,exhibitor,organizer) and a lifecycle status (invited,registered,confirmed,checked_in,no_show,cancelled). A delegate references a CRM Person and, once confirmed, a Booking. It carries no PII of its own. - Rooming. A first-class rooming manifest. A rooming assignment links to a room block and room type, and a shared room is one assignment with many delegates through an explicit join.
- RFP and bid. The sourcing funnel: an RFP is issued, suppliers are invited, they submit bids with line items, the bids are scored against weighted criteria, and an award atomically accepts the winning bid and rejects the rest.
What it owns
The module owns these Drizzle tables, each with a TypeID prefix:
A separate
booking_mice_details sidecar table (prefix bkmd) links a Booking to its program and delegate. It ships through the ./booking-extension subpath as a HonoExtension and uses a loose text key, so the package does not depend on bookings.
The RFP-to-bid funnel
An RFP movesdraft to issued to closed to awarded (or cancelled). Invited suppliers submit bids that move draft to submitted to under_review to a decision. Awarding is atomic: it accepts the winning bid and rejects the rest in one step.
Working with it
Standard modules are not registered by hand.@voyant-travel/mice is part of the standard product graph, so its routes, services, subscribers, and jobs are resolved into the application at build time. See Configuration.
Programs that run delegate enrollment, rooming replacement, and session-inclusion writes inside a database transaction. The module declares requiresTransactionalDb, so route /v1/admin/mice/* to the transactional database.
Call the services directly to create a program and award an RFP:
mice.rfp.awarded signal rather than inline route logic.
Links to other modules
- Relationships. A program’s buyer organization and primary contact are loose references to relationships records, linked through
defineLinkat the deployment. A delegate references a CRM Person. - Accommodations. Rooming assignments link to room blocks and room types owned by the accommodations module.
- Operations. Sessions link to function spaces owned by the operations module.
- Bookings. The
./booking-extensionsidecar links a Booking to its program and delegate. A confirmed delegate carries abookingId. - Distribution. RFP invitations and bids reference suppliers as loose columns.
Next steps
Accommodations
The room blocks and room types behind the rooming manifest.
Operations
The function spaces sessions are scheduled into.
Bookings
The Bookings the delegate roster confirms against.
Links
How MICE associates programs with organizations, suppliers, and spaces.