Tunis, Tunisia

I ship LLM and agentic systems into client environments — reading documents no template could parse, watching sensor streams no fixed rule could cover, and routing both through a pipeline a team can run unattended. I build with Claude Code every day, and I treat evaluation as part of the system, not an afterthought.

How I work
01

Scope the real data

Pull the actual documents or sensor feed first. Ground truth before a single prompt is written.

02

Build the pipeline

Ship behind a service, not a notebook — it has to keep running when I'm not watching it.

03

Evaluate alongside it

Regression tests, latency, cost, accuracy by field — built with the system, not bolted on after.

04

Verify against source

Every output traces back to where it came from, so it can be checked before anyone acts on it.

Selected work
Industrial client · anomaly detection

Alerting and clustering for a production line

An anomaly-detection system for a manufacturing client's sensor data. Operating curves are first clustered into regimes — day shift, night shift, rated throughput, start-up — so a threshold means the same thing in every one of them. A PyTorch autoencoder, trained only on healthy periods and conditioned on regime, reconstructs each variable from all the others: a machine that's failing but still inside its normal range shows up as a residual, not as an outlier that a simple rule would miss. Every alert traces back to one machine and one variable, and a recalibration agent re-checks the model on a schedule — deciding whether to retune or hold, never touching production without a dry run and a canary step first.

PyTorch autoencoder Unsupervised clustering Regime-conditioned thresholds Autonomous recalibration agent SQL
Financial & insurance software · Vermeg

Sentiment & classification for insurance documents

Part of a multi-agent system built for a financial and insurance software vendor. Documents are parsed with spaCy, then run through a BERT model I fine-tuned in PyTorch to classify sentiment and intent on insurance correspondence, before an open-source LLM — served via Ollama, with retrieval through LangChain and ChromaDB — produces the analysis a case handler reads. Shipped as secured Python microservices behind REST APIs, with Docker and GitLab CI/CD, feeding a dashboard business teams use directly.

CrewAI BERT fine-tuning spaCy LangChain + ChromaDB Ollama
Public sector · EUMATRIX

Document extraction & OCR pipeline

An LLM extraction pipeline for a public-sector client: incoming PDFs go through OCR, then an LLM (DeepSeek) turns the recognized text into structured, validated data — and the same pipeline drafts the client's reports automatically, instead of someone retyping numbers off a scan.

OCR DeepSeek Structured extraction Automated reporting
Open source · github.com/benothmen12/distill

Distill — a small model, graded like a big one

Fine-tuned an open-weight 4B model (Qwen3-4B, QLoRA) into a 12-tool agent, served locally with vLLM and llama.cpp — no API calls. The harness is the point as much as the model: ground-truth labels, leakage-free train/test splits, a noisy regression set, accuracy scored per tool and per argument, p50/p95 latency, clarification and refusal tests, versioned schemas, and CI running on every push.

QLoRA vLLM llama.cpp Pydantic schemas GitHub Actions CI
30×
smaller than the teacher model it's benchmarked against — matched on held-out tasks.
Experience
Jul 2025 — Present
Software Engineer / AI Engineer· Quermes — Remote
An anomaly-alerting system for multiple industrial pipelines — clustering, an autoencoder, and an autonomous recalibration agent.
Feb 2025 — Aug 2025
AI Engineer Intern· Vermeg, financial & insurance software (Tunis)
Final-year project: a multi-agent extraction, classification and analysis system shipped as microservices.
Jul 2024 — Sep 2024
Cloud & API Engineer Intern· GoPartner (Tunis)
Benchmarked AWS, Azure and Google Cloud AI services with a reproducible test protocol that decided which the company adopted.
Skills
LLMs & agents
LLM extraction pipelines RAG CrewAI LangChain LangGraph MCP Tool calling
Evaluation & LLMOps
Ground-truth datasets Regression tests Latency & cost tracking Pydantic schemas CI/CD
Models
Qwen DeepSeek vLLM llama.cpp Ollama QLoRA BERT PyTorch
Engineering & data
Python SQL FastAPI Docker GitHub Actions GitLab CI/CD AWS · Azure · GCP
About

I'm a software engineer (Bac+5, ESPRIT, 2025) who ended up specializing in applied AI — the part of the job where a model has to survive contact with a client's real documents, real sensors, and real deadlines. I build with Claude Code every day, and most of what I ship runs behind an API or a scheduled job rather than in a demo.

Professional English, fluent French, native Arabic. Based in Tunis, Tunisia.

Education

Software Engineering, ESPRIT2022–25
Prep. classes (maths & physics), IPEIT2020–22

Certifications

Machine LearningKaggle
ML & AI FundamentalsAWS
Intro to Generative AIGoogle
Contact

Open to Software Engineer roles building AI systems.

The fastest way to reach me is email. I usually reply within a day.

Emailonsbenothmen4@gmail.com
Phone+216 95 406 778
LinkedInlinkedin.com/in/ons-benothmen
Open
GitHubgithub.com/benothmenons
Open