Status: Live — rachidexcursions.com
The problem
Independent local tour operators in Marrakech compete for the same visitors as international online travel agencies (OTAs). A visitor comparing tours on a phone can lose patience with slow page loads, confusing navigation, or hidden pricing. The operator needed a fast website with clear pricing, pages in several languages that search engines can read, and a direct path from the phone to WhatsApp instead of a checkout form.
My role
I served as the sole developer responsible for designing and implementing the frontend web application, establishing the multilingual content architecture, building a custom headless Chrome static prerendering pipeline for SEO, and conducting a comprehensive mobile UI and conversion audit.
What I built
- Modern frontend architecture: Built a responsive, mobile-first client application using React 18, Vite, TypeScript, Tailwind CSS, and shadcn/ui (Radix primitives), organizing tours across dedicated hubs (Day Excursions, Multi-day Sahara Desert Tours, Marrakech Activities, Airport Transfers).
- Automated 4-stage static prerender build pipeline: Because search crawlers and AI search agents struggle with client-rendered SPAs, I implemented an automated build pipeline that uses Puppeteer and headless Google Chrome to pre-render 200 individual localized HTML routes at build time, enforced with a strict
verify-seo-build.mjsverification gate. - Trilingual internationalization with localized SEO clusters: Configured i18next across English, French, and Spanish with route-prefixed URLs (
/fr/*,/es/*). Built 7 reviewed localized landing page clusters with completehreflangsets (en,fr,es, andx-default) directly injected into the static document head. - Comprehensive Schema.org structured data: Implemented valid JSON-LD graph metadata for
Organization,TravelAgency,TouristTrip,OfferCatalog, and sequentialBreadcrumbListschemas with explicit currency and starting price structures. - Direct WhatsApp conversion flows: Integrated contextual WhatsApp booking CTAs with prefilled inquiry parameters (tour name, duration, date, group size), accompanied by an authoritative sticky mobile booking bar for mobile users.
Mobile conversion audit & optimization
In addition to core development, I conducted a deep mobile conversion audit addressing mobile decision paths:
- Established a single structured product dataset to eliminate inconsistent pricing and duration labels across pages.
- Streamlined mobile tour listing cards by moving heavy narrative paragraphs to detail pages and removing multi-image carousels on cards to accelerate scanning and reduce DOM overhead.
- Reordered the mobile homepage around user booking intent (hero with direct CTAs, popular excursions, trust proof points, Google reviews, simple 3-step booking flow, and FAQs).
Results
I do not have access to Rachid Excursions' internal analytics or private WhatsApp conversion metrics, so no unverified booking volume or revenue claims are made here.
