DEMO DATA A fictional show. Real possibilities for your visit.

BoatShowPlanner.com

BoatShowPlanner turns a visitor's available time, boat interests, relevant event content and physical show locations into a suggested day. It now serves more than one show. Harbour Marine Show 2027 is a fictional demonstration with synthetic data. Balkans Sea Fair 2026 (16 to 18 October 2026, Marina Orikum, Albania) is a real show, public in Preview, using organiser-supplied data.

This README is the single authoritative record of what the application does, what has changed, what is live and what remains incomplete. The public page at /readme displays this file directly. The roadmap holds future intentions. Versioned show-data packages hold the datasets and source evidence.

The visitor should not have to become the algorithm.

The product hierarchy is: Boats → relevant exhibitors → relevant talks and demonstrations → food, facilities and navigation. Timing is the hard framework.

1. Product purpose

Boat shows present more choice than most visitors can assess in one day. BoatShowPlanner asks a small number of human questions, identifies the most relevant things to see, and places them into a practical timed route. It supports Boatshed Process 2, local presentation and showings; Process 3, buyer relevance and follow-up; and Process 5, the platform and toolbox.

The visitor interface is deliberately calm: one decision per question, one clear action per screen, sensible defaults and detail only when requested.

2. Current functionality

Sections 2 to 4 first described the Harbour demonstration as built in September 2026. That description is kept below. Current multi-show behaviour is in "Multiple shows" and the Change Log.

Implemented now

Demonstration status and limitations

For Harbour Marine Show, all event, vessel, exhibitor, price, session and facility information is synthetic. Balkans Sea Fair uses organiser data only. There is no live organiser feed, account, booking, availability or notification service. Plans live only in the visitor's browser. The sample inventory contains sailing yachts and motor boats; other boat-interest choices demonstrate an extensible classification but do not fabricate absent inventory.

3. Current visitor journey

  1. Which day are you coming? Only dates within the event are offered.
  2. What time will you arrive? Times are constrained to show hours.
  3. What time will you leave? Departure must follow arrival and remain before closing.
  4. What type of boat interests you? Up to three. “I'm not looking for a boat” is mutually exclusive.
  5. What would you use the boat for? Up to three. Skipped on the non-boat path.
  6. What price range should we work within? Broad ranges derived from the sample GBP inventory, with an optional small aspirational allowance. Skipped on the non-boat path.
  7. What else would you like to explore? Up to three equipment, service or learning interests.
  8. When a relevant demonstration session fits the attendance window, the visitor may include or decline it.
  9. BoatShowPlanner builds a timed suggested day. Details and refinements sit behind Adjust my day.

Visitors can also browse every vessel, inspect galleries, save boats manually, view the marina map and revise answers without losing saved items.

4. Current data model

The sample is split into typed data modules rather than embedded in pages:

Local browser records use boatshowplanner-visit-v2, boatshowplanner-dayplan-v1, boatshowplanner-preferences-v1 and boatshowplanner-answers-v1. Since October 2026 each key is namespaced per show, so plans for different shows stay separate. Saved Harbour plans under the old keys are migrated once.

5. Canonical schema direction

The stable core entities are Event, Event day, Location, Vessel, Exhibitor, Session, Facility, Media and Relationship.

Organiser data
        ↓
Import, mapping and classification
        ↓
Canonical event schema
        ↓
Questions, recommendations, routing and schedule

Future events such as Southampton, Annapolis, Baltic events or smaller marina shows may arrive as organiser spreadsheets, websites, brochures, PDFs, CSV files or APIs. Each source should be mapped and validated before the planner uses it. The schema should remain stable while controlled classifications and taxonomies remain extensible.

Locations must be generic, not permanently berth-only. Valid types include Berth, Pontoon, Stand, Booth, Hall, Stage, Demonstration area, Facility and Entrance. Locations should carry their own IDs, zones, map coordinates and walking connections. Relationships should connect vessels, exhibitors, brands, sessions and locations without assuming permanently that every vessel has one exhibitor.

Controlled tags provide dependable filtering and explainable choices. The same vocabulary should connect records, for example vessel sailing, bluewater, offshore, liveaboard; exhibitor sails, rigging, offshore, safety, navigation; session bluewater, passage planning, ocean safety. Semantic or vector matching may later interpret natural-language material, but must not be the sole decision mechanism.

6. Future expansion

Future capabilities, not implemented now, may include larger event inventories, fuller exhibitor and service categories, extensive sessions and demonstrations, new vessel arrivals, live capacity and boarding slots, relevant visitor notifications, post-show appointments and organiser or exhibitor analytics.

QR and the physical show

A future physical/digital layer may add qr_point, scan_event, availability_slot, booking and opportunity. Purposeful QR points could sit at entrances, pontoon heads, map junctions, selected vessels, exhibitor stands, stages and exits. A scan could confirm arrival, show “you are here”, open a nearby vessel or exhibitor, join a boat queue, request information, add a nearby item or arrange a later viewing.

Every QR must carry a contextual instruction such as “Plan your day”, “You are at Pontoon F”, “Book a boarding slot”, “See this boat's details” or “Join this demonstration”. A pilot should use a limited number of useful codes, not cover every object.

A future booking engine could calculate:

boat or exhibitor availability
∩ visitor attendance window
∩ free time in the plan
∩ walking time
∩ fixed sessions and appointments

This should not depend on continuous GPS. What3Words or a similar tool may help survey approximate positions, while the canonical map retains its own location IDs and connections.

Crowded events often have weak connectivity. A production approach should keep maps and personal plans lightweight and cacheable, retain short printed location references, retry safe operations, confirm bookings only after server acknowledgement, and keep basic show information available when live services fail. No offline infrastructure is implemented in this sample.

7. Stakeholder value

Visitors

Organisers

Exhibitors

These commercial outcomes belong in organiser and exhibitor material, not prominently in the visitor interface.

8. Future commercial possibilities

No commercial model has been selected. Possibilities include an organiser licence, a per-event platform fee, exhibitor premium tools, booking and lead-management services, clearly labelled sponsored recommendations, aggregated event intelligence and white-labelled event applications. Sponsored placement must never be disguised as visitor relevance.

9. Explicitly not built yet

10. README maintenance rule

Whenever material functionality, data structures, routes or future architectural decisions change, update this README in the same change. Keep current, planned and commercial functionality clearly separated. Never describe a proposal as implemented.

Technical reference

The application uses TanStack Start, React 19, TypeScript, Vite and Tailwind CSS. The home page / lists shows. Planner pages live under each show's address: /<show>/, /<show>/plan, /<show>/recommendations, /<show>/browse, /<show>/vessels/$id, /<show>/exhibitors, /<show>/events, /<show>/visit and /<show>/map. The older top-level addresses (/plan, /browse and so on) redirect to Harbour Marine Show. /readme shows this file. The root layout owns shared navigation, the demonstration-data strip and footer. Canonical sample data lives under src/data; deterministic recommendation and scheduling rules live under src/lib; presentation components live under src/components/planner.

Multiple shows

The home page lists every public show. Each show has its own address, for example /harbour-marine-show-2027 and /balkans-sea-fair.

Every planner page reads whichever show the visitor chose. Show status (awaiting data, Preview, ready) describes data completeness only and is derived from the data.

To load a show's data: save organiser sheets as CSV files in src/data/shows/<slug>/csv/ and run bun scripts/import-show.ts <slug>. The script lists every problem in plain words and writes nothing until all rows pass. Two narrower modes exist: --descriptions-only updates exhibitor descriptions without changing names, IDs or areas; --boats-only imports the boat catalogue (implemented and tested, not yet published).

Earlier wording, kept for history: on 30 September 2026 this section said Balkans Sea Fair was "Awaiting show data" and that planner pages read Harbour data only. Both are no longer true.

Raw organiser material is kept inside the relevant show folder with a dated source record. Map labels and other observations remain provisional until the organiser confirms their meaning. A numbered map space must not be treated as an occupied berth, stand, boat or exhibitor allocation without that confirmation.

Change Log

Status terms: Proposed, Approved, Implemented, Tested, Published and verified. "Publication requested" means publishing was started but the live site was not checked afterwards.

Multi-show structure and separate saved plans

Balkans Sea Fair configuration

What's On events programme

Balkans Sea Fair data package v0.1

Balkans Sea Fair Preview

Exhibitor descriptions (research workbook v0.2)

Exhibitor name search and Boats wording

My Visit: saved exhibitors and events

Boat catalogue import validation

Security checks

Testing

README record

README-only publication and live verification

Publication record follow-up and separate Preview wording

Deferred decisions

Pending wording proposal (not applied)

The site currently says "Preview: information still being added" on the show card and landing page, but the strip on every Balkans page still says "TESTING: PARTIAL DATA". Proposed single wording: "Balkans Sea Fair 2026 is currently in Preview. Exhibitor, boat and event information is being checked and updated as details become available." Awaiting approval.