DEV Community

Allo Maison
Allo Maison

Posted on

Lessons from building a home services marketplace in Morocco

I spent the last few months shipping Allo Maison, a home services marketplace for Morocco. Here's the tech stack and the hard-won lessons that might save you a week or three.

The stack

  • Next.js 15 App Router with SSG everywhere possible. 148 static pages at build time.
  • Tailwind CSS 3 + shadcn/ui for the design system.
  • Supabase for the artisan database (Postgres + RLS), plus a small Convex sidecar that runs the scraper pipelines.
  • Resend for transactional email, Netlify for hosting, Cloudflare for the DNS and root domain routing.

Morocco has ~250K–435K monthly searches across the home services category (plumbing, electricity, cleaning, AC). There was no programmatic SEO competitor covering all cities × services in French and Arabic, so that became the moat.

Programmatic SEO that actually indexes

I templated every service-city combination (16 services × 10 cities = 160 pages) and every service-ville-urgence (18 more). Each page has:

  1. Unique intro paragraph generated from a structured data file (service specifics, city particulars, local prices in MAD)
  2. A dynamic list of verified artisans from Supabase (average 6–12 per page)
  3. LocalBusiness + Service JSON-LD schema
  4. Hreflang pairs for fr-MA and ar-MA

For example, our plombier Casablanca page pulls real-time artisan counts, aggregates ratings, and surfaces an urgency CTA for night-time calls. Early ranking signals are encouraging for a brand-new domain.

What I'd do differently

1. Get Google Search Console set up on day zero

I lost three weeks debugging an indexation drop that turned out to be a misconfigured robots.txt rule. GSC's coverage report would have caught it in 24h.

2. Skip the headless scraper for sourcing

I built a Playwright scraper to source 1000+ artisans across MA directories. 40% of records needed manual cleanup anyway. For v2 I moved to a hybrid approach: WhatsApp verification + Google Places API + a lightweight cron that cross-references.

3. Structured data before content polish

Rich results in Google beat pretty copy for a new site. I should have shipped FAQPage + HowTo + BreadcrumbList schemas the first week, not month three.

4. French + Arabic from the start, not retrofitted

Arabic SEO in Morocco is under-served. Competitors ignore it. Going bilingual from v1 would have captured an extra segment that's now cold traffic I have to warm up.

Metrics after launch

  • 141 URLs submitted to sitemap
  • 9 high-DA backlinks acquired via content + directories in week one
  • Average Lighthouse Performance: 92 mobile / 98 desktop
  • Time-to-first-interactive on /plombier-casablanca: 1.3s

Takeaway

A small market with a programmatic SEO gap plus bilingual content plus shipped-this-week schemas beats another generic global SaaS any day. If you're eyeing a vertical nobody has technically taken, the playbook is still alive.

Happy to swap notes in the comments — especially with anyone bootstrapping directory-style products in emerging markets.

Top comments (0)