Skip to content

El Mahdi Moubarak

Curriculum vitae

Software & AI Engineer · Full-Stack, LLM Systems, Agents

Book a call

Profile

Full-stack engineer shipping production software since 2019 in cybersecurity, healthcare and fintech, often as the only engineer on the product. Since 2026 I build AI-native: a browser agent that tests my SaaS as real users with the database as judge, LLM features whose models are picked by attacking them, and Claude Code as my main engineering environment.

Lille, France · Remote across Europe · French (native) · English (C1, TOEIC) · Spanish (professional)

Approach

How I work with AI

I build AI into products, and I build with AI every day. These are the principles I work by, each with a place where you can check it.

Done means observed, not claimed

An agent saying "done" is a claim. I give it ways to check its work against reality: screenshots at real screen widths, a browser agent that uses the deployed app as a given kind of user, and a database query as the final judge.

Case study: jev-check

An AI feature starts with its threat model

Anything a model reads can be written by an attacker. Before writing the prompt, I decide what the feature must never do, then choose models by testing them against that, not by price or reputation.

Case study: the AI card scanner

Fast where it is safe, strict where failures are silent

Most changes ship without ceremony. Billing, permissions and anything touching money or another account's data get mandatory checks, and a review by a different model from the one that wrote the code.

Case study: Piktechs

Measure before believing

Models are non-deterministic and backtests flatter. I ask the same question many times, test out of sample, and try to break my own results before I trust them. Sometimes the honest verdict is that there was nothing there.

Polymarket Up/Down Lab

Correct the workspace, not the chat

When an agent gets something wrong, the fix goes where the next session will find it, in the narrowest place that works. A rule that fails twice stops being a sentence and becomes a check the tooling enforces.

Article: what I kept correcting

Lazy, on purpose

If I do something twice, a machine does it the third time. An agent can work alone when it has an end condition, a budget, a way to check itself and a way to call me. The work is making it safe to walk away.

Article: lazy by design

Career

Experience

Mar 2026 – Present

France

Piktechs

Co-Founder & CTO

B2B SaaS for events & networking: digital business cards (NFC/QR), lead capture and CRM, team workspaces.

  • Sole engineer: took a two-week prototype to a complete production B2B SaaS for event lead capture, with Claude Code as the main engineering environment.
  • Agentic QA with jev, Browser Use's browser agent: it signs in to the test app as each account state (free, Pro, lapsed, team member, frozen team) and follows a plain-English goal, then a SQL query, not the agent, gives the verdict. 16 standing checks on plan gates and permissions; its before/after screenshots on closed tickets surfaced 3 follow-up bugs. Open-sourced as jev-check.
  • Shipped an AI business-card scanner: vision LLM with strict JSON output, a per-user quota and on-device OCR as the last resort; chose the cross-provider fallback by prompt-injection testing (2 of 4 candidate models obeyed an injected card).
  • Live Stripe billing (checkout, customer portal, webhooks, per-seat team plans, scheduled reconciliation) and multi-tenant workspaces secured by Postgres row-level security and role-based permissions; billing and permission code is reviewed by a different model from the one that wrote it.
  • Android app live on Google Play and iOS build from the same codebase (Capacitor), Apple and Google Wallet passes, CRM sync and a Zapier integration.
  • Unit and Playwright tests gate CI/CD across separate test and production environments.

Stack · React · TypeScript · Vite · Tailwind · Supabase (Postgres, RLS, Edge Functions) · Stripe · Capacitor · OpenRouter · Resend · Playwright · Vitest · jev (Browser Use) · GitHub Actions · Cloudflare Pages · Claude Code

Mar 2026 – Present

Lille, France · Remote

EMM

Founder & AI / Full-Stack Engineer

Independent software engineering practice: web apps, SaaS and AI automation for founders, SMEs and agencies, from requirements to production.

  • Self-hosted AI agents: installing, configuring and securing agent runtimes on a client's own server or VPS (OpenClaw, Hermes Agent, GPT- and Claude-based agents, or a custom stack), connected to their tools (Slack, WhatsApp, Telegram, CRM, Google Workspace), with custom skills and MCP.
  • AI browser automation with jev (Browser Use's jev-ultrafast): my own task runner drives dedicated browsers from the terminal to enter, extract and update data in back-offices that have no API, hands over to a human for logins, captchas and 2FA, and logs every step with a screenshot and its cost.
  • Rescuing AI-generated MVPs (Lovable, Bolt, Cursor, Claude Code): code audit, security (auth, Supabase RLS, exposed API keys), refactoring, tests and deployment.
  • LLM and RAG integration into existing products: OCR + LLM pipelines, chatbots over documents, OpenAI / Claude / Gemini in production.
  • AI-native workflow: a versioned Claude Code workspace shared across two machines, where repeated corrections become hooks and skills, and a weekly pass mines my own sessions for what I keep correcting.

Stack · TypeScript · Python · Next.js · Node.js · Supabase · Docker · OpenAI, Claude, Gemini APIs · MCP · Browser Use · Claude Code

Mar 2026 – Present

France · Morocco

KSUR Services

CTO

Agence-KSUR is a digital agency building tailor-made web and mobile applications, e-commerce platforms, and AI-driven automation workflows for SMEs and enterprises.

  • Own the agency's full technical stack and delivery, from architecture to production.
  • Design and build tailored web & mobile applications from the ground up.
  • Architect and deploy AI-powered automation workflows to streamline internal and client operations.

Jul 2026

Paris (Hybrid)

DRIVECO

AI Trainer

Corporate AI training for DRIVECO teams, an operator of electric-vehicle charging infrastructure.

  • Designed and delivered two tailored AI training sessions (FR/EN), with live hands-on use cases built on the company's real workflows and OpenAI ecosystem.

Mar 2023 – Feb 2026

Paris (Remote)

Board of Cyber

Full-Stack Engineer

Mostly front-end, in a team of 20 developers, on Security Rating®, a SaaS cyber-rating platform used by 200+ organizations: client platform, back office and manager office.

  • Built Angular components, worked on the Angular version upgrades, added test coverage (Spectator) and fixed bugs in a high-cadence release cycle.
  • Built a Python vulnerability-scanning probe on nmap that automated attack-surface data collection for the ratings.

Stack · Angular · TypeScript · Python · nmap · Spectator · Docker · CI/CD

Sep 2021 – Sep 2022

Lille (On-site)

ALTAO Santé

Full-Stack & AI Engineer

Sole engineer on a greenfield medical platform for hospital discharge summary correction, replacing a fragmented multi-tool legacy workflow.

  • Processed 5,000+ documents through the platform, saving hospitals €700,000.
  • Ran requirement sessions directly with doctors, wrote specs, integrated ML algorithms from the Data Science team.
  • Deployed and monitored the full AWS infrastructure autonomously (EC2, Route53, Amplify).

Stack · Vue.js · Django · Python · PostgreSQL · AWS (EC2, Route53, Amplify)

Mar 2021 – Jun 2021

Lille (Remote)

Deuspi

Mobile Software Engineer

Sole mobile engineer on the first version of a React Native grocery delivery app, transitioning the product from web-only to native mobile.

  • Owned the full frontend from designer wireframes to production-ready interface.
  • Implemented a gamified UX direction defined by the product team to drive customer retention.
  • Co-defined API contracts with the backend developer for real-time order tracking and inventory sync.

Stack · React Native · JavaScript · REST APIs

Apr 2019 – Aug 2019 · Internship

Seclin (On-site)

Worldline

Full-Stack Engineer

Built an internal R&D debugging tool improving team development speed by 70%.

  • Designed and built a centralized dashboard automating the creation, storage and replay of complex payment test sets.

Stack · Vue.js · Spring Boot · Java · MQTT · Docker

Studies

Education

2017 – 2022

Engineering Degree (Master's level) in CS, Networks & Telecoms

IMT Nord Europe · Lille, France.

2017

Scientific Baccalaureate, Math Major

Lycée Français Louis-Massignon · AEFE network · Casablanca, Morocco.

Stack

Technical expertise

AI & Automation

AI AgentsAgentic DevClaude Code (skills, hooks, subagents)MCPBrowser agents & agentic QA (jev, Browser Use)LLM APIs (OpenAI, Claude, Gemini, OpenRouter)LLM evaluation & prompt-injection testingLocal LLMs (llama.cpp, ExLlamaV2)RAGVectorizationOCR & Vision pipelinesElevenLabsVoice AI

Web & Mobile Dev

TypeScriptJavaScriptNext.jsReactReact NativeCapacitorAngularVue.jsNode.jsPythonDjangoFlaskPostgreSQLSupabase

Cloud & DevOps

AWS (EC2, Route53, Amplify)DockerGitCI/CDVercel

E-commerce

Shopify APILiquidStripeSEO

Languages

French (Native)English (C1, TOEIC)Spanish

Work

Projects

With previews

Off screen

Beyond code

Guitar

17 years. Former VP of the Music Club at IMT Nord Europe.

Philosophy

Perception, reality, and applied metaphysics.

Strength Training

Consistency and physical resilience.

Take it with you