Appearance
Cross-Vertical
The platform's verticals don't exist in isolation. A real trip involves a DMC, hotels, restaurants, experiences, and transportation. Cross-vertical capabilities make the platform actually useful.
Unified Search
A "find me everything in Tokyo" query should return DMCs, hotels, restaurants, experiences, and transportation options — ranked and filtered together.
@mcp.tool()
def search_destination(
destination: str,
verticals: list[str] | None = None, # default: all
) -> DestinationSummary:
"""Search all verticals for a destination."""
...
This is a Platform Core feature (post-spike, ~40–60 hrs).
Entity Resolution
A DMC might also appear as a hotel partner or experience operator. The platform resolves entities across verticals so we don't have three records for the same company.
class EntityResolver:
def resolve(self, vertical: str, entity_id: str) -> ResolvedEntity:
# Match by name + website + phone + email combinations
...
Entity resolution is hard. It's also a post-spike TODO — for now, verticals are separate.
Cross-Vertical Itinerary Construction
Given a destination and a trip profile, construct a candidate itinerary pulling from multiple verticals:
@mcp.tool()
def suggest_itinerary(
destination: str,
duration_days: int,
traveler_profile: TravelerProfile,
) -> Itinerary:
"""Suggest a multi-vertical itinerary for a destination."""
...
This is the highest-leverage cross-vertical capability and the natural endpoint of the platform. It's well downstream — the verticals need to be solid first.
Cross-Vertical Schemas
Some concepts span verticals (location, contact info, hours of operation). The platform defines shared base types:
# models.py
class Location(BaseModel):
address: str | None
city: str
country: str
latitude: float | None
longitude: float | None
neighborhood: str | None
class Contact(BaseModel):
emails: list[str]
phones: list[str]
website: str | None
social: dict[str, str]
Every vertical's models inherit from or compose these. Consistency here is what makes cross-vertical search work later.
What the Spike Does Today
The spike implements one vertical (DMCs) in isolation. Cross-vertical is by design deferred. The DMC spike's MCP tools are vertical-specific; cross-vertical tools come after more verticals ship.