Rome
Roma · Italy
3,740 ingested places
Constraint-checked city planning
GraphTravel builds schedules from sourced places, recorded opening hours, and travel-time data. Missing evidence stays visible, and every supported edit is re-planned on the server before the trip is marked feasible.
No account is required to generate a plan. Accounts are optional for a cross-device trip dashboard.
GraphTravel treats trip planning as a constrained topological graph optimization problem. Every itinerary is generated through four deterministic, unit-tested pillars.
We evaluate supported OpenStreetMap opening_hours rules with a deterministic interval parser. The solver models split days, day-of-week rules, and minimum dwell times. If opening hours are unrecorded or unsupported, the plan labels that evidence gap instead of presenting the visit as verified open.
// opening_hours evaluation
const intervals = parseOpeningHours("Tu-Su 09:00-19:00; Mo closed");
const isOpen = intervals.isOpenThroughout(visitStart, visitEnd);
if (!isOpen) return Feasibility.conflict("Venue closed at scheduled arrival");The ingestion pipeline can build pedestrian matrices with Valhalla and records when an estimate was used instead. A strict readiness gate can require routed coverage, so a fallback calculation is never silently marketed as street-level routing.
// A missing route is an explicit conflict
const edge = matrix.lookup(poiA.id, poiB.id);
if (!edge) return Feasibility.conflict("No usable route");
return { seconds: edge.seconds, source: edge.source };The solver partitions candidate sights into geographic day clusters. Within each cluster, a 2-opt local search tests route swaps against the stored travel matrix, reducing avoidable crossings without claiming a globally optimal tour.
// 2-opt route crossing untangling
while (improved) {
for (let i = 1; i < tour.length - 1; i++) {
for (let k = i + 1; k < tour.length; k++) {
if (delta(i, k) < 0) { 2optSwap(tour, i, k); improved = true; }
}
}
}Ingested places retain source identifiers from OpenStreetMap and Wikidata where available. The planner exposes missing hours and other evidence gaps in its feasibility summary rather than upgrading incomplete records into verified facts.
// Provenance badge schema
export type PoiSource = {
source: "osm" | "wikidata" | "commons";
ref: "way/1029384" | "Q220";
observedAt: string;
};Published destinations
This list comes from the database readiness gate at request time. It is not a hand-written catalogue and does not include cities whose routing or place coverage is below the publishing threshold.
Roma · Italy
3,740 ingested places
Lisboa · Portugal
3,209 ingested places
京都 · Japan
2,291 ingested places
An honest comparison
Wanderlog is a mature trip organizer with AI planning, collaboration, reservation imports, and mobile tools. GraphTravel is currently narrower: it focuses on generating constraint-checked schedules for supported cities and showing where the underlying data is known or uncertain.
Official Wanderlog pages
Its official pages currently describe AI itinerary creation, collaboration, reservation organization, mobile apps, offline access, and additional Pro features. Those links—not an inferred benchmark—are the source of this summary.
GraphTravel today
Schedules are produced by a deterministic solver from sourced place, opening-hours, and travel-time data. Unknown inputs stay visible instead of being silently presented as facts.
GraphTravel gaps
A hosted offline basemap, public multi-city and road-trip planning, native mobile apps, and broad destination coverage are not shipped. Internal planning or ingestion foundations are not presented as traveler-facing features.
We do not infer absent capabilities, performance, accuracy, or quality from marketing pages. The Wanderlog summary above was checked against these official pages in August 2026: Wanderlog home, AI trip planner, Wanderlog Pro.
Everything you need to know about the deterministic engine and knowledge graph.
Large Language Models are useful for ideas and preferences, but a fluent answer does not prove that a venue is open at a specific time or that every transfer fits. GraphTravel uses a mathematical constraint solver over sourced place and routing data. Language models may help with taste and prose, but they are not treated as a source for actionable facts.