TL;DR: A tour operator's coordinator drafts every hotel, transport and activity request by hand, chases vendors who go quiet, and tracks hold expiry from memory. That caps how many trips one person can run. Msafara is a multi-agent workflow that drafts, sends, follows up, negotiates within set bounds, compares offers and produces the client proposal, over email and WhatsApp.
Built product · Product owner · Live demo (sample data)
Live demo · PRD · BRD · MRD · Spec · Code
Vendor sourcing for a multi-day trip is a long chain of small, repetitive steps. None is hard. Together they limit a coordinator to a handful of concurrent requests, and requests stall whenever a vendor goes silent.
The full flow has been run on one sample trip: a 12-person Kilimanjaro and Zanzibar itinerary, in rule-based mock mode with no API keys, from first vendor request through to a generated client proposal. It has not been used by a tour operator yet.
A LangGraph state machine wires the workflow. Inbound vendor replies and scheduled checks re-enter the graph, so a request moves forward whether a vendor answers, goes quiet, or replies with something unclear.
flowchart TD
A["Trip request<br>from coordinator"] --> B["Draft vendor requests<br>hotel, transport, activity"]
B --> C["Dispatch via<br>email / WhatsApp"]
C --> D{"Vendor reply?"}
D -->|"Silence"| E["Scheduled follow-up"]
E --> D
D -->|"Unclear or partial"| F["Escalate to coordinator"]
D -->|"Offer"| G["Bounded counter-offer<br>operator rules, capped rounds"]
G --> H["Track hold expiry"]
H --> I["Compare offers"]
I --> J["Client proposal (.docx)"]