← Back home Experience

Freelance

AI Software Architect & Consultant · 2021 – present

My independent practice (Edvantage): end-to-end consulting and product development —applied AI, backend and infrastructure— for clients, and the umbrella under which I co-founded Baboon Technologies and Rackety TV. From idea to production: agentic chat wired to each client’s tools, RAG, AI document processing and full infrastructure.

Projects

Chat Engine

PythonLangGraphRAGpgvectorMCP

A multi-client agentic chat engine with RAG, external tools and generative BI, isolated per client.

The problem
Give each client an assistant that answers any question about their documents and data, connects to their tools and generates charts and dashboards, while keeping data isolated.
Stack decision
FastAPI + LangChain/LangGraph, RAG indexing with pgvector and Cohere Rerank, orchestration of several LLMs by quality/price (OpenRouter, Gemini, Deepseek) and tools via MCP/FastMCP. Fully traceable with Langfuse.
The technical challenge
During indexing, automatically clustering information, detecting discrepancies and allowing manual curation; and isolating data by project_id in a reusable multi-tenant engine.
Impact
A reusable engine in production for several clients (financial Q&A, margin and profitability monitoring with charts).

AI order extraction & validation

PythonAzure Document AIOpenAI LLMpdfplumberSAPOutlook Add-in

A generic document-processing engine that, from an Outlook add-in, extracts the order from each email and validates it against SAP in a split document/data screen.

The problem
Turning orders that arrive by email —heterogeneous documents, a different layout per client— into structured orders validated against SAP, solving that the products in the document match neither the name nor the format of those in the client’s database.
Stack decision
A generic document-processing engine combining pdfplumber for structured PDFs, Azure Document AI for complex layouts and an OpenAI LLM for the unstructured parts. Extraction is materialized as a per-client "mask" that is reused on every later order of the same layout, avoiding reprocessing. The Outlook add-in triggers the flow from the email itself, and a split screen sets the attached document against the extracted data —editable and wired to SAP— with automatic price calculation to sanity-check the order.
The technical challenge
Building the generic reusable extraction-mask engine and, on top of it, a learning engine: any user correction (product name, format, SAP mapping) is detected automatically and proposed as a learning to validate. Even a product’s correct format was inferred from the price the client itself set in the order, given that each client had its own pricing.
Impact
Processes around 600 orders a month straight from Outlook. By reusing each client’s mask, recurring orders are resolved without reprocessing, and the learning engine improves extraction with every user-validated correction.

PrismaRiders

PrismaRiders
Next.jsFastAPIPostgreSQLStripeOpenRouteService

A platform for at-home therapists with a slot optimizer that minimizes travel and waiting time.

The problem
Cutting travel and waiting time for at-home therapists, bringing several roles (therapists, patients, centers, guardians, admin), clinical records, calendar and payments into a single platform.
Stack decision
Next.js/React + FastAPI/SQLAlchemy on PostgreSQL; Stripe (recurring payments and Connect), Google Calendar (two-way sync) and OpenRouteService for real distances/times.
The technical challenge
The slot optimizer: it scores (0–100) each therapist’s gaps and places every patient in the best one using real locations, penalizing dead waiting time and travel.

Ecosystem infrastructure & observability

DokployDockerTraefikCloudflareUptime Kuma

The cross-cutting infrastructure that orchestrates, deploys and monitors every service and project.

The problem
Managing multiple services and platforms in a reproducible, well-monitored way, with continuous deployment, backups and alerts.
Stack decision
Dokploy + Docker for orchestration, Traefik as reverse proxy, DNS on Cloudflare, WireGuard VPN, SSH tunnels with socat, daily S3 backups and job monitoring with Uptime Kuma plus centralized observability.