Home / residential address (where the client stays)
Delivery & extra services
R
R
R
Number of travellers (pax)
Enter a number, or leave this blank.
Notes
Discount (optional)
List a few named package options at different price points — the items above become the standard breakdown shown alongside them.
No items selected yet — tap + on anything in the list.
Quote history (this computer)
Quotes anyone on the team generates will appear here.
Recent activity
Catalog and quote changes show up here.
📥 New WhatsApp enquiries
Customer travel enquiries from WhatsApp land here automatically. Click “Build quote” to turn one into a quote — the customer and their trip details fill in for you. Groups, greetings and status updates are filtered out so you only see real leads.
📢 Announcements
Post updates for the team. Everyone signed in sees them, newest first.
New announcement
Recent
Loading…
✅ Tasks
Issue tasks to the team, set who and when, track to done.
Issue a task
Task list
Loading…
🗄️ Inventory archive
Items you removed from inventory. Restore one back to your stock, or delete it permanently.
Loading…
🗺️ Itineraries
Build a day-by-day trip itinerary and share it with the client via a link.
Build itinerary
✈️ Flights
Saved itineraries
Loading…
🧳 Trip departures
Scheduled group departures with seat capacity and an automatic waitlist when full.
Add / edit departure
Scheduled departures
Loading…
📆 Payment plans
Split a trip into a deposit and instalments, and track what's paid.
Create / edit plan
Quick split
into from
Payment plans
Loading…
🤝 Partners
Travel-agent accounts with commission tracking, plus promo codes for campaigns.
Travel agents
Loading…
Promo codes
Loading…
🧩 Add-ons
Optional extras travellers can choose on the public booking page (transfers, excursions, insurance…).
Create / edit add-on
Add-ons
Loading…
💱 Currencies
Exchange rates against the Rand, and a quick converter. Used for multi-currency pricing.
Add / edit currency
Quick converter
= R 0.00
Currencies
Loading…
💸 Payouts
Money going out — payments to suppliers and payouts to agents/organisers, with what's still owed.
Record a payment
Payments
Loading…
⚖️ Procurement
Tender to contract, with the controls enforced on the server: segregation of duties,
declarations of interest, quorum, tax & CSD compliance, preference points, and a deviation
register the system writes itself.
New tender
Whoever writes the specification is recorded — and cannot later evaluate bids on it.
Capture a bid
Tax compliance and CSD registration are gates, not notes. Without both, the server
refuses to award — because that is precisely where irregular expenditure begins.
Score a bid
Scoring . Your score is write-once: a revision needs a
reason, keeps the original beside it, and raises a deviation. Silently changing a score after seeing
everyone else's is the most common way an evaluation gets steered.
Record a sitting
Minuted as it happened. If it was not quorate, that is recorded, a critical deviation is
raised automatically, and an award on the resolution will be refused.
Raise the contract
Only possible after an award. The server refuses a contract on a tender that has not
been awarded.
📈 Executive dashboard
Every figure aggregated in SQL at read time. Nothing cached, nothing seeded.
🗂️ Projects
Every trip run as a project. The AI writes the plan; arithmetic guards the deadlines.
You have no project manager — this is one.
New trip project
Every task is dated backwards from departure, so the departure date is required.
The AI reads this to write trip-specific tasks. The more you say, the better the plan.
🤖 Assistant
Reads your real catalog, bookings and inventory. Won't quote a price it hasn't
looked up. Drafts — never sends.
📦 Inventory
What you actually own, and how much of it is available right now. Click any column header to sort, or type in the row below it to filter.
🧑💼 HR — Staff Registry
Everyone appointed at Halal Tourism South Africa, whether or not they use this system. Click any column header to sort, or type in the row below it to filter.
🗂️ Org chart
Reporting structure, based on each employee's manager.
🌴 Leave
Requests and balances across all staff.
Request leave
Create system access
This creates a real login for . Every employee is registered here whether or not they get one — most casual/event staff won't need one.
🏭 Suppliers
Vendors for equipment, consumables, maintenance, and third-party delivery/setup/collection services.
Add supplier
Banking (for payment)
Performance
📦 Purchase orders
Every order placed with a supplier, and where it stands.
New purchase order
Line items
Total: R0
Receive goods
Enter the quantity actually received for each line — stock updates automatically.
🔁 Reorder suggestions
Items at or below their low-stock threshold with a preferred supplier set. Refreshed each time this opens — not a live background process.
💰 Supplier budget
Monthly spend against budget, per supplier.
🧾 All quotes
Every quote your team has generated. Click any column header to sort, or type in the row below it to filter.
📋 Proposals
Richer, multi-option proposals your team has put together — build a new one from the Proposal Builder tab using the "Package tiers" section, then Generate proposal.
📅 Bookings calendar
Every confirmed and tentative event, at a glance.
🖨 Booking sheet
What the team needs to prepare — client, goods, date, and payment status.
👥 Contacts
Every customer and company you've dealt with, in one place. Click any column header to sort, or filter using the row below it.
Add contact
Address
✨ AI Quote Assistant
Paste any customer request — a WhatsApp message, an email, notes from a phone call, however it arrived — and AI will read it, match items against your catalog, and draft a quote for you to review. Nothing gets created until you check it over and generate the quote yourself. Add an Anthropic API key in Business Details to turn this on.
Paste or type the customer's request
Incoming requests — WhatsApp, Facebook & Instagram (auto-collected via webhook)
Optional: send this template to make replies easier to read
💰 Invoices
Every invoice your team has generated.
📝 Signed agreements
Every hire agreement signed for your team — whether signed in person on a staff device, or remotely by the customer via an e-signature link.
👤 Users
Only administrators can create accounts or change roles. Staff accounts can generate quotes, book events, generate invoices, and send them to clients — nothing else.
🔧 System status
Checks which version of each backend file is actually live on this server — catches "the fix is built but never got uploaded" before it causes confusion.
❓ Help
Modules and licence, your compliance evidence register, and the assistant.
Help needs an Anthropic API key to work. Add one under 🏢 Business → "Anthropic API key", then come back here.
📣 Advertising
Ready-to-use Facebook & Instagram ad content. Pick what you want to advertise, then copy it straight into Meta Ads Manager.
⏳ Pending Approval
Every quote and proposal that hasn't been signed yet — nothing here has a completed agreement.
🔍 Audit Trail
Every recorded action across the app — who did what, and when. Administrators only.
Add a user
Edit access
📊 Business Dashboard
Everything below is computed from your quotes, bookings, and invoices — nothing is sent anywhere unless you use the AI sections.
Revenue by month
Booking status
Top items quoted
Top themes
🤖 AI summary
💬 Ask about your business
🎨 Themes
The themes customers can pick on a quote. Link catalog and inventory items to a theme so they're easy to find together.
Add theme
Linked items
Check any inventory item that belongs to this theme. Changes save immediately.
New booking
Reserves equipment for a specific date. Confirms automatically once the deposit threshold is received.
Defaults to the following Monday after the event — adjust if needed.
Add inventory item
Linking to a catalog item keeps price and stock in sync both ways. Leave the link blank to create a brand-new catalog item automatically from this one.
Click to upload, or copy an image and paste here (Ctrl/Cmd+V)
Add employee
Identity
Contact details
Employment
Leave balances
Banking (for payroll)
ID verification
A copy of ID/passport and a selfie, for verification — same standard used for client hiring agreements.
Click to upload, or paste (Ctrl/Cmd+V)
Click to upload, or paste (Ctrl/Cmd+V)
Click to upload, or paste (Ctrl/Cmd+V)
Other documents (contracts, qualifications, work permits)
System access
My account
Change password (optional)
Two-factor authentication
Checking…
Scan this in Google Authenticator, Authy, or your password manager.
No code? Type the setup key in by hand.
Setup key
⚠️ Save these recovery codes now
They are shown once. Only the hashes are kept, so nobody — not even an
administrator — can show them to you again. Without them, and without your phone,
you cannot get in.
Business details
Shown on every quote. Saved on this computer.
Click to upload, or copy an image and paste here (Ctrl/Cmd+V)
Delivery & extra-service fees
Charged on the straight-line distance from your address (above) to the event address. Set it a little higher than your true per-km cost to account for the round trip.
Where incoming enquiries are read from. Defaults to this site's whatsapp-inbox-api.php — leave the default for the laptop auto-grab below.
Turns on the automatic grab of WhatsApp enquiries from the office laptop. Click Generate, Save, then paste the same value into the bridge's config.json. New enquiries then appear in the smart sheet under the Proposal Builder.
💾 Save a PDF copy on this computer
On this computer only: every quote and invoice you generate is also saved as a PDF into a folder you choose (e.g. Halal Tourism Quotes and Invoices), named by number and client. Nothing is uploaded — it stays on this machine.
Not set up yet.
💬 WhatsApp — where to get it
Go to developers.facebook.com → My Apps → Create App → choose "Business" as the type → add the "WhatsApp" product. Meta gives you a free test number automatically to try this with before connecting your real business number. Under WhatsApp → Configuration, set the Callback URL to the Inbox URL above and pick your own Verify Token (also set in whatsapp-webhook.php).
📘 Facebook — where to get it
In the same Meta app used for WhatsApp above, add the "Messenger" product. You'll need to connect a Facebook Page you manage (Halal Tourism's page). Under Messenger → Settings, subscribe the page to webhook events, using the same Callback URL and Verify Token as WhatsApp.
📷 Instagram — where to get it
Also in the same Meta app, add the "Instagram" product. Your Instagram account needs to be a Business or Creator account, linked to the same Facebook Page used above — Meta requires that link for messaging access. Same Callback URL and Verify Token again once it's connected.
Without this, WhatsApp messages must roughly follow the template. With your own key, messy free-text messages get understood too.
Stored only on this device, sent only to Anthropic. Get one at console.anthropic.com — it's billed separately from any Claude subscription, a few cents per message.
Both come from setting up push notifications on the webhook — see PUSH-NOTIFICATIONS-SETUP.txt. Once set, "Notify me instantly" appears next to Check Inbox in the WhatsApp import screen.
Both come from setting up email sending — see EMAIL-SETUP.txt. Once set, an "📧 Email" button appears on quotes and invoices, sent from pcharacters@gmail.com.
Field names shown here follow PayFast's convention as a starting point — if you pick a different provider, let me know and I'll adjust the labels and connect the actual payment flow. For now this only stores your credentials for when you're ready to go live.
Add a new item
Adding an item here also creates a matching Inventory record automatically, so it's immediately usable on quotes.
Are you sure?
Add
Record a payment
💰 Finance
Receipts, expenses, receivables, banking, refunds, damage recovery and reports — every figure tied back to your bookings and invoices.
Record receipt
Record expense
New refund
New damage charge
Add account
This is a standard account — its code and type are locked, but you can rename it or set it inactive.