The problem
Businesses answer the same customer questions every day: prices, opening hours, what's in stock, how to order. Most chatbots either don't understand Arabic well or invent answers, which is worse than no answer.
What I built
Faheem (فهيم, "the one who understands") is a multi-tenant SaaS platform:
- Bring your own knowledge. A business uploads documents, spreadsheets or product lists. Faheem builds a Neo4j knowledge graph and a Pinecone vector index from them.
- Grounded answers. Gemini writes the answer from the business's own data. Follow-up questions are rewritten into standalone questions, so "how much is it?" resolves to the product the customer was just asking about.
- Actions, not just answers. An intent classifier routes messages to menus, bookings, orders or a human.
- Every channel. A web chat widget, WhatsApp (businesses connect their own number through Meta's embedded sign-up), Messenger, Instagram and Telegram.
- A dashboard for each business: conversations, analytics, settings and its own persona and tone.
Keeping answers honest
- An off-topic guard: questions outside the business's data get a polite refusal instead of a guess.
- A link check on every outgoing answer, so a reply never points at the wrong product.
- Defences against prompt injection hidden in uploaded documents or chat messages.
Running it
A Python web app and background worker on a Linux server with PostgreSQL, deployed by GitHub Actions with the test suite as the gate.


