CONTACTS
Casablanca, Morocco
[e-mail]
[téléphone]
[lien]
[lien]
[lien]
SKILLS
Backend: Go, Node.js, TypeScript, REST, GraphQL
Data: PostgreSQL, MongoDB, Redis, Elasticsearch
Messaging: Apache Kafka, Avro, KSQL, BullMQ
Frontend: React, Next.js, Tailwind CSS, tRPC
Infra: Docker, Kubernetes, GitHub Actions, Travis CI, Spinnaker, Grafana
AI / LLM: OpenAI API, Gemini API, LLM pipeline design
AI Tools: Cursor, Claude Code, OpenCode
ACHIEVEMENTS
Cut ad moderation time from 2–7 minutes to ~40 seconds by replacing a manual-review stack with an AI pipeline handling 9,000+ decisions a day
Built multilingual search synonyms
(French, Arabic, Darija) in Elasticsearch, improving zero-result queries on Morocco's largest marketplace
Designed access control (ABAC) for a platform spanning 2,000+ startups in 30 countries
Cut KPI dashboard load times from minutes to under 500 ms for 20,000+ users
EDUCATION
2015 – 2018
Licence Professionnelle en Génie
Informatique
École Supérieure de Technologie, Casablanca
LANGUAGES
Arabic — Native
French — Professional
English — Professional
[nom]
Software Engineer
I'm a backend-focused engineer with 5+ years building production systems, the last two on Morocco's largest classifieds platform. I like owning features end to end — from Kafka topics and database schemas to the React chart that sits on top.
Preferences
Go · Backend · TypeScript · Node.js · React · PostgreSQL · Elasticsearch · AI Pipelines
PROFESSIONAL EXPERIENCE
[lien] | Backend Engineer · Casablanca, Morocco
Mar 2024 – Present
Own the ad lifecycle across 10+ Go microservices (feed ingestion, AI moderation, CRUD, performance tracking) at 10,000+ new ads per day.
Stack: Go, Kafka, Elasticsearch, PostgreSQL, Redis, GraphQL, React, Kubernetes
Key achievements:
Built an AI moderation pipeline (Kafka + Avro, Gemini and OpenAI) that decides on 9,000+ ads a day at ~40s median latency, down from 2–7 minutes of manual review; low-confidence cases escalate to humans
The pipeline raised per-moderator throughput ~2.5× (5K → 13K ads/month) and let the team consolidate from ~29 reviewers to 2
Shipped cross-service features end to end: ad performance tracking (Redis accumulators, batched Elasticsearch sync, GraphQL API, React charts), a phone contact-type system on KSQL streams, and a WhatsApp payment notification pipeline
Added a Kubernetes CronJob that watches the moderation queue and reconciles stuck items, so upstream incidents no longer fail silently
Led Go 1.20 → 1.22 upgrades across the fleet and maintain Elasticsearch infra: French/Arabic synonyms, custom analyzers, v8 → v9 migration
StartupSquare | Full-Stack Software Engineer · Casablanca, Morocco
Feb 2021 – Mar 2024
Built end-to-end modules for a startup-program management platform — Programs, KPIs, Analytics, Events, Booking — backend API and Next.js UI in the same feature cycle.
Stack: TypeScript, Node.js, Next.js, React, MongoDB, Prisma, Redis, BullMQ
Key achievements:
Designed a booking module with two-way Google Calendar OAuth2 sync, timezone-safe UTC handling and automated reminders; rolled out across 500+ programs, replacing Calendly and saving ~$200/month
Built ABAC authorization scoping access for 2,000+ startups and 20,000+ users across 30 countries
Cut KPI dashboard load times from 1–5 minutes to under 500 ms with MongoDB aggregation pipelines and Redis caching
PROJECTS
Classify · [lien]
Go HTTP microservice for text classification through LLM APIs — Redis response caching, OpenAI
→ Gemini provider fallback, and per-key rate limiting.
Stack: Go, OpenAI/Gemini APIs, Redis, Docker
KafkaScope · [lien]
Terminal UI for watching a Kafka cluster in real time: consumer-group lag, partition leadership and topic throughput at a glance.
Stack: Go, Sarama, Bubble Tea
CronDeck · [lien]
Self-hosted social post scheduler; a BullMQ worker fans out jobs at the chosen time and retries platform-side failures, built to survive rate limits and partial outages.
Stack: Next.js, TypeScript, PostgreSQL, Prisma, tRPC, BullMQ
CubeMail · [lien]
Webmail client built directly on the Gmail API — read, label, search and send with optimistic local state and a threaded view.
Stack: React, Gmail API, Chakra UI