The problem
The Saudi Tourism Authority wanted two assistants: Noura, a public travel assistant for visitors, and an internal assistant for its staff. Both had to answer from the authority's own content, in Arabic and English, and a visitor could never reach staff tools or data.
Approach
- Tools that answer with cards: destinations, events, visas, weather and trip plans for visitors; meeting rooms, leave and office requests for staff.
- Answers grounded in the authority's own documents and tourism content, with their sources shown.
- A person approves every action: booking a room, placing an order or building an itinerary waits for the user's yes.
- Arabic and English throughout, right to left and left to right, on desktop and phone.
- Answer quality and retrieval measured by evaluations, not assumed.
Screens
Screens from the apps, with personal data removed.
Noura, for visitors
-
Noura's home screen: top attractions and live events from Visit Saudi, with saved favourites. -
Noura answering in Arabic, right to left: a destination card for AlUla and a sourced summary. -
A one-day AlUla itinerary built from the traveller's preferences, including the sunset viewpoint they asked for. -
Noura on a phone: the same answers and follow-up suggestions in a narrow layout.
The staff assistant
Architecture
Capability view: one LangGraph agent serves visitors and staff; an audience gate decides what each session may use, answers come from the authority's own content with their sources, and every action waits for a person's approval. Figure 1
- Users and apps
-
- Visitors (Noura)
- Staff (staff assistant)
- Orchestration
-
- One LangGraph agent · 96 tools, 27 visible to visitors
- Models
-
- LLM
- Retrieval
-
- Retrieval with sources
- Data
-
- The authority's documents and tourism content
- Services
-
- Typed tools and cards · Destinations, events, visas, weather, trip plans, staff requests
- Quality
-
- Audience gate · Tools and knowledge per audience
- Human approval · Before any action
- Evaluation · Answer quality, retrieval
- Connections
-
- Visitors (Noura) to Audience gate
- Staff (staff assistant) to Audience gate
- Audience gate to One LangGraph agent (what each audience may use)
- One LangGraph agent to LLM
- One LangGraph agent to Typed tools and cards
- Human approval to Typed tools and cards (before any action)
- One LangGraph agent to Retrieval with sources
- Retrieval with sources to The authority's documents and tourism content
- Evaluation to One LangGraph agent
Outcome
- One agent serves both Noura and the staff assistant, kept apart by the audience gate.
- Noura was accepted in the client's user-acceptance testing (UAT) in September 2026.
- Every action waits for the user's approval, and answers show their sources.
Stack
- Orchestration
- LangGraph
- Retrieval
- RAG
- Services
- PythonFastAPIReactTypeScript
- Quality
- LLM evaluation
Where these facts come from. Everything on this page comes from details I confirmed for this site. Nothing is estimated: where no figure is public, the page describes what the system does.