Skip to content

nicolotognoni/Wayfarer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wayfarer

Wayfarer

Your AI travel companion that talks, searches, and calls restaurants for you.

Talk to Wayfarer to discover restaurants, get local news, find events — and let it call places on your behalf in 15 languages.

License MIT iOS 17+ Node.js 20+ Built with Firecrawl Voice ElevenLabs ElevenLabs Hackathon

Features · Demo · Quick Start · Architecture · Project Structure


Features

  • Voice AI Assistant — Talk naturally with Wayfarer to find restaurants, get news, discover events. Powered by ElevenLabs Conversational AI with WebRTC (echo cancellation, low latency).

  • Smart Place Search — Google Places for structured data (ratings, photos, reviews, hours). Firecrawl for web search, news, and events with location customization.

  • Place Cards in Chat — When you ask for restaurants, Wayfarer shows interactive cards with photos, ratings, and reviews right in the conversation.

  • AI Phone Calls — Wayfarer calls restaurants on your behalf to check availability or make reservations. The AI speaks in the local language with a native voice via ElevenLabs + Twilio.

  • Real-time Local Info — News, events, traffic, weather — all powered by Firecrawl search with location customization and time filtering.

  • Map + Explore — Full map view with nearby places, restaurants, attractions, cafes & bars.

Demo

wayfarer-2-compressed.mp4

Tech Stack

Layer Technology
iOS App SwiftUI, MapKit, CoreLocation, ElevenLabs Swift SDK (WebRTC)
Backend Node.js, Express, TypeScript
Voice AI ElevenLabs Conversational AI — chat agent + phone call agent
Web Search Firecrawl — search, news, events with location & time filters
Places Google Places API — ratings, photos, reviews, hours
Phone Calls Twilio + ElevenLabs managed outbound calls
AI Text Anthropic Claude API
Deploy Railway

Architecture

┌─────────────────────────────────────────────────────────┐
│                   iOS App (SwiftUI)                      │
│                                                         │
│  ┌────────┐  ┌───────────────┐  ┌────────┐  ┌───────┐ │
│  │  Map   │  │  Voice Chat   │  │Explore │  │ Calls │ │
│  │(MapKit)│  │(ElevenLabs    │  │(Cards) │  │(Live) │ │
│  │        │  │ Swift SDK)    │  │        │  │       │ │
│  └────────┘  └──────┬────────┘  └────────┘  └──┬────┘ │
└─────────────────────┼───────────────────────────┼───────┘
                      │                           │
                Direct WebRTC              REST API
                      │                           │
            ┌─────────▼──────────┐  ┌─────────────▼────────────┐
            │  ElevenLabs Agent  │  │   Backend (Express.js)    │
            │  (Conversational)  │  │                           │
            │                    │  │  Google Places  → places  │
            │  Tools:            │  │  Firecrawl      → search  │
            │  • search_places ──┼─>│  Firecrawl      → news    │
            │  • web_search   ──┼─>│  Firecrawl      → events  │
            │  • search_news  ──┼─>│  ElevenLabs     → calls   │
            │  • search_events──┼─>│  Twilio         → phone   │
            └────────────────────┘  └──────────────────────────┘

Quick Start

Prerequisites

Backend

cd wayfarer-backend
cp .env.example .env          # Fill in your API keys
npm install
npm run dev                    # Starts on port 3000

iOS

  1. Open Wayfarer.xcodeproj in Xcode
  2. Wait for SPM to resolve the ElevenLabs SDK
  3. Update Wayfarer/Core/Utilities/Constants.swift with your backend URL
  4. Build & Run on device (Cmd+R)
  5. Allow location and microphone access

Info.plist must include NSMicrophoneUsageDescription and NSLocalNetworkUsageDescription.

Deploy to Railway

cd wayfarer-backend
railway login && railway init && railway up
railway domain    # Get your public URL

Required API Keys

Service Get it at Purpose
Firecrawl firecrawl.dev Web search, news, events
ElevenLabs elevenlabs.io Voice AI agent, phone calls
Google Places console.cloud.google.com Place search, photos, reviews
Twilio twilio.com Outbound phone calls
Anthropic console.anthropic.com AI text generation

Firecrawl Integration

Wayfarer uses Firecrawl extensively:

Feature How
Web Search Real-time info (traffic, weather, prices) with location customization
News Local news filtered by country + language + time (tbs: qdr:w)
Events Concerts, shows, exhibitions with time filter (tbs: qdr:m)
Agent Tools All 4 voice agent tools use Firecrawl-powered backend endpoints

Phone Call Flow

User taps "Call" on a restaurant
         │
    ┌────▼─────┐
    │ Find the │ → Google Places + Firecrawl scraping
    │ phone #  │
    └────┬─────┘
         │
    ┌────▼──────────┐
    │ Select voice  │ → Country → Native voice (15 languages)
    │ & language    │
    └────┬──────────┘
         │
    ┌────▼──────────────┐
    │ ElevenLabs        │ → Managed outbound call
    │ outbound-call API │   (Twilio bridge + AI conversation)
    └────┬──────────────┘
         │
    ┌────▼──────────────┐
    │ AI speaks to the  │ → Asks for availability / books table
    │ restaurant        │   in the local language
    └───────────────────┘

Three call modes: Information · Reservation · Custom message

Voice Mapping

15 native voices, one per country:

Country Voice Country Voice
🇮🇹 Italy Marco 🇬🇧 UK George
🇫🇷 France Theo 🇺🇸 US Chris
🇪🇸 Spain Santiago 🇯🇵 Japan Shohei
🇩🇪 Germany Ben 🇰🇷 Korea Yohan
🇵🇹 Portugal Paulo 🇨🇳 China Xin
🇳🇱 Netherlands Koen 🇸🇦 Arabic Adeeb
🇵🇱 Poland Mikołaj 🇹🇷 Turkey Adilcan
🇬🇷 Greece Georgios

Project Structure

Wayfarer/
├── Wayfarer/                          # iOS App
│   ├── Core/Models/                   # Place, NewsItem, EventItem
│   ├── Core/Services/                 # Network, Location managers
│   ├── Features/Conversation/         # Voice AI chat (ElevenLabs SDK)
│   ├── Features/Explore/              # Home page cards
│   ├── Features/PlaceDetail/          # Place detail view
│   ├── Features/Call/                 # Phone call flow
│   ├── Features/Map/                  # MapKit views
│   └── DesignSystem/                  # Colors, typography
│
├── wayfarer-backend/                  # Node.js Backend
│   ├── src/routes/                    # API endpoints
│   ├── src/services/                  # Firecrawl, Places, Calls
│   ├── src/prompts/                   # Phone agent prompt builder
│   └── src/types/voices.enum.ts       # 15 voice configurations
│
└── assets/                            # Logo, demo video

Hackathon

Built for the ElevenLabs Hackathon. Wayfarer showcases ElevenLabs Conversational AI (WebRTC voice chat + managed outbound phone calls) and Firecrawl (location-aware web search, news, events).

License

MIT

About

Your AI travel companion that talks, searches, and calls restaurants for you. Talk to Wayfarer to discover restaurants, get local news, find events — and let it call places on your behalf in 15 languages.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors