Bilel Abdelmoula

Home › AI integration developer

AI integration · OpenAI · embeddings · OCR

AI integrations built into real product workflows

I build AI into the parts of a product where it saves people time: ranking candidates against jobs with persisted embeddings, reading CVs with OCR, and enriching records asynchronously so nobody waits for a model. Production features, not demos.

  • OpenAI APIs + text-embedding-3-small
  • Persisted embeddings + vector search
  • Google Vision OCR
  • Async AI workflows

Results

Measured on real projects.

  • ~35kcandidate pool ranked with persisted embeddings
  • 0–100client-defined match score after hard filters
  • ~32 ssynchronous CV workflow redesigned so candidate creation returns immediately; enrichment runs asynchronously
  • 1 workerserving Claude chat on many sites

Case studies

AI features I've built and shipped.

Production ATS, CRM & AI recruitment platform for a Spanish recruitment company

Built at Soraia (Italian AI/software agency) for a Spanish recruitment company · 2024–2026

  • Designed and built Potential Match: candidate profiles turned into clean semantic text, embedded with OpenAI text-embedding-3-small and stored in a dedicated table instead of regenerated per search.
  • Candidate changes trigger re-indexing; jobs use a comparable structure.
  • Ranking flow: ~35k candidates → language filter → distance filter → vector similarity → weighted signals → 0–100 score.
  • The first version embedded too much noisy text and matched poorly; I redesigned it with cleaner, separated representations (role, skills, experience).
  • CV ingestion: Google Vision OCR for scanned CVs plus OpenAI extraction, moved out of the request so the candidate is created immediately.
  • Input safety: prompt-injection sanitization, unsafe-markup handling and validation on public CV and application input.
  • React
  • TypeScript
  • PostgreSQL
  • Xano
  • OpenAI
  • WeWeb

site-assistant: Claude chat on any website (open source)

Cloudflare Worker · code on GitHub

  • One worker powers AI chat assistants on many sites; each site's facts live in its own JSON file.
  • API key stays on the server: origin allowlist, per-IP rate limit, message and history limits.
  • Safe fallback: if the AI API fails, the widget answers from its built-in FAQ.
  • Claude API
  • Cloudflare Workers
  • JavaScript

lsi-spark: semantic search engine (Master's thesis)

USTO-MB, 2022 · code on GitHub

  • Semantic search engine using TF-IDF + SVD (Latent Semantic Indexing).
  • Benchmarked the SVD stage on NumPy versus Apache Spark.
  • Python
  • NumPy
  • Apache Spark

AI work I can do for you

  • Semantic matching and search with persisted embeddings, plus hard filters
  • Document extraction: CVs and scanned files with OCR + OpenAI
  • Async AI workflows so users get an immediate response
  • Input and output safety for AI features fed by public data
  • Chat assistants on your site or app, with your API key kept on the server
  • Connect AI to your stack: PostgreSQL, Xano, React, Cloudflare Workers

FAQ

Quick answers before we talk.

Which AI models do you work with?

OpenAI (text-embedding-3-small for matching, plus chat models for extraction), Google Vision for OCR, and Anthropic's Claude API for chat assistants.

Will AI slow my app down?

Not if the workflow is designed for it. A CV upload used to wait ~32 seconds for OCR and AI. I redesigned it so the candidate and duplicate check return immediately, and enrichment appears a few seconds later.

Does the matching explain its scores?

It returns a 0–100 score built from hard filters (language, distance) and weighted vector similarity. It doesn't generate written explanations.

Do you use AI tools to code?

Yes. I used Claude Code extensively to speed up implementation and refactoring, while owning integration, validation, debugging and production behavior myself.

How do we start?

Book a free call or email me at abdelmoulabilel2000@gmail.com with the task you'd like AI to handle.

Let's build it properly

Tell me what's slow, messy or missing. A short call is enough to see if I can help.

Also see