# Federico Meini > Freelance senior software engineer (Italy, CET, remote). WhatsApp Business Platform, real-time distributed systems in Elixir, PostgreSQL and Elasticsearch at scale, AI agent orchestration and evals, and agentic coding for engineering teams. Six years building a WhatsApp platform at Turn.io used for health services worldwide. Contact: federico.meini@gmail.com. Engagements: fixed-scope reviews, builds, or part-time embedded senior engineering. Languages: English and Italian. ## Services - [WhatsApp Business Platform](https://fedme.dev/services/whatsapp-business-platform.md): Freelance engineer for the WhatsApp Business Platform. Cloud API integrations, webhooks, templates, bulk messaging, chatbots, AI agents and voice, built to survive production. - [Real-time systems](https://fedme.dev/services/realtime-systems.md): Freelance Elixir and distributed systems engineer. High-throughput messaging pipelines, backpressure, rate limiting, job systems on Oban, Phoenix LiveView, and Kubernetes. - [PostgreSQL & Elasticsearch](https://fedme.dev/services/postgres-elasticsearch.md): Freelance PostgreSQL and Elasticsearch performance engineer. Table partitioning past 1 TB, query tuning, replicas, pgvector, and index lifecycle management for search at scale. - [AI agents & evals](https://fedme.dev/services/ai-agents-evals.md): Freelance AI engineer for agent orchestration and evals. Multi-agent handover, sandboxed tools, guardrails, simulation evals, LLM-as-judge, OpenTelemetry tracing and model selection. - [Agentic coding](https://fedme.dev/services/agentic-coding.md): Help rolling out Claude Code and agentic coding to engineering teams. Setup, conventions, custom skills and PR review automation, so engineers get real work out of it. ## Blog - [Testing a medical triage agent with LangWatch Scenario and pytest](https://fedme.dev/blog/testing-medical-triage-agents-with-langwatch-scenario.md): How I test a medical triage AI agent with LangWatch Scenario: a simulated user, judge criteria, scripted and free-running conversations, in pytest and CI. - [Building a reliable WhatsApp Cloud API webhook receiver at scale](https://fedme.dev/blog/whatsapp-cloud-api-webhooks-at-scale.md): How to build a WhatsApp Cloud API webhook receiver that holds up: signature checks on the raw body, fast 200s, dedup, per-contact ordering and media handling. - [Backpressure in Elixir: sending millions of WhatsApp messages without falling over](https://fedme.dev/blog/backpressure-bulk-whatsapp-sends-elixir.md): Designing a bulk WhatsApp send engine in Elixir: demand-driven Broadway pipelines, per-number token buckets, retries with jitter and batched status tracking. - [How to partition a 1 TB PostgreSQL table without downtime: the default-partition method](https://fedme.dev/blog/partitioning-a-1tb-postgres-table-without-downtime.md): Partition a live 1 TB Postgres table without downtime: attach it as the DEFAULT partition, copy history out with Oban jobs, then swap in one short transaction. - [PostgreSQL partitioning in practice: partition keys, pruning, indexes and retention](https://fedme.dev/blog/postgresql-partitioning-in-practice.md): How PostgreSQL partitioning behaves in practice: choosing the key and size, checking pruning with EXPLAIN, indexes, keys, retention and the Ecto gotchas. - [Letting AI agents run code safely in Elixir with tv-labs/lua](https://fedme.dev/blog/lua-sandbox-for-ai-agent-tools-in-elixir.md): How tv-labs/lua gives AI agents a sandboxed Lua runtime inside Elixir: exposing safe functions, setting limits and wiring code execution into the agent loop. - [Serving MedGemma 27B on Modal: FP8, vLLM sleep mode and 21-second cold starts](https://fedme.dev/blog/serving-medgemma-27b-on-modal-vllm.md): How I self-host MedGemma 27B as a scale-to-zero, OpenAI-compatible API on Modal: FP8 quantisation, GPU snapshots, two vLLM bugs and Gemma 3 tool calling. - [Designing AI agents that know when to hand over: to other agents, to rules, to humans](https://fedme.dev/blog/agent-handover-architecture-whatsapp.md): A practical architecture for AI agents that hand over safely: multi-agent transfers, a deterministic rules engine for high-risk calls, sandboxed tools, evals. - [Simulation evals: letting an LLM play the user to test your chatbot before real users do](https://fedme.dev/blog/simulation-evals-for-llm-chatbots.md): How to build simulation evals for LLM chatbots: persona-driven simulated users, LLM-as-judge rubrics, error rates for high-stakes flows and a feedback loop. - [CPUSim: the CPU simulator I built for Zanichelli](https://fedme.dev/blog/cpusim-a-cpu-simulator-for-zanichelli.md): I was reminded today of CPUSim, a browser CPU simulator I built for Zanichelli in 2020 to show students how machine code runs, one glowing register at a time. - [Keeping custom state across the Überauth OAuth flow in Elixir](https://fedme.dev/blog/2021_08_12_ueberauth_state.md): Überauth now uses the OAuth state parameter for CSRF protection, so custom state gets overwritten. Keep it in the session between request and callback instead. ## Italiano - [WhatsApp Business Platform](https://fedme.dev/it/services/whatsapp-business-platform.md): Consulente WhatsApp Business API freelance: integrazioni Cloud API, webhook, template, invii massivi, chatbot, agenti AI e voce, progettati per la produzione. - [Sistemi real-time](https://fedme.dev/it/services/realtime-systems.md): Sviluppatore Elixir freelance per sistemi distribuiti: pipeline ad alto throughput, backpressure, rate limiting, job con Oban, Phoenix LiveView e Kubernetes. - [PostgreSQL ed Elasticsearch](https://fedme.dev/it/services/postgres-elasticsearch.md): Consulente PostgreSQL ed Elasticsearch freelance: partizionamento PostgreSQL oltre 1 TB, tuning delle query, repliche, pgvector e index lifecycle management. - [Agenti AI ed eval](https://fedme.dev/it/services/ai-agents-evals.md): AI engineer freelance per orchestrazione e valutazione di agenti AI: handover, tool in sandbox, guardrail, simulazioni, LLM-as-judge e tracing OpenTelemetry. - [Agentic coding](https://fedme.dev/it/services/agentic-coding.md): Consulenza per introdurre Claude Code e l’agentic coding nel tuo team di sviluppo: setup, convenzioni, skill su misura e review automatica delle PR. - [Testare un agent di triage medico con LangWatch Scenario e pytest](https://fedme.dev/it/blog/testing-medical-triage-agents-with-langwatch-scenario.md): Come testo un agent AI di triage medico con LangWatch Scenario: utente simulato, criteri per il judge, conversazioni libere o a copione, in pytest e in CI. - [Costruire un receiver di webhook affidabile per la WhatsApp Cloud API su larga scala](https://fedme.dev/it/blog/whatsapp-cloud-api-webhooks-at-scale.md): Webhook della WhatsApp Cloud API su larga scala: verifica della firma sul body grezzo, risposta 200 immediata, deduplica, ordine per contatto e media. - [Backpressure in Elixir: inviare milioni di messaggi WhatsApp senza crollare](https://fedme.dev/it/blog/backpressure-bulk-whatsapp-sends-elixir.md): Progettare un motore di invio massivo WhatsApp in Elixir: pipeline Broadway guidate dalla domanda, token bucket per numero, retry con jitter e stati in batch. - [Come partizionare una tabella PostgreSQL da 1 TB senza downtime: il metodo della default partition](https://fedme.dev/it/blog/partitioning-a-1tb-postgres-table-without-downtime.md): Partiziona una tabella Postgres da 1 TB senza downtime: agganciala come DEFAULT partition, copia lo storico con job Oban e fai lo swap in una transazione breve. - [Il partitioning di PostgreSQL in pratica: chiavi di partizione, pruning, index e retention](https://fedme.dev/it/blog/postgresql-partitioning-in-practice.md): Come si comporta davvero il partitioning di PostgreSQL: scelta della chiave, pruning verificato con EXPLAIN, index, vincoli, retention e le insidie di Ecto. - [Far eseguire codice agli agenti AI in sicurezza in Elixir con tv-labs/lua](https://fedme.dev/it/blog/lua-sandbox-for-ai-agent-tools-in-elixir.md): Come tv-labs/lua dà agli agenti AI un runtime Lua in sandbox dentro Elixir: funzioni sicure esposte, limiti di esecuzione e integrazione nel loop dell’agente. - [Servire MedGemma 27B su Modal: FP8, sleep mode di vLLM e cold start da 21 secondi](https://fedme.dev/it/blog/serving-medgemma-27b-on-modal-vllm.md): Self-hosting di MedGemma 27B con vLLM su Modal: API compatibile OpenAI con scale-to-zero, quantizzazione FP8, GPU snapshot, cold start da 21 s e tool calling. - [Progettare agenti AI che sanno quando passare la mano: ad altri agenti, alle regole, alle persone](https://fedme.dev/it/blog/agent-handover-architecture-whatsapp.md): Un’architettura pratica per agenti AI con handover sicuro: passaggi tra agenti, motore di regole deterministico per decisioni critiche, tool in sandbox ed eval. - [Eval con simulazioni: far interpretare l’utente a un LLM per testare il tuo chatbot prima degli utenti reali](https://fedme.dev/it/blog/simulation-evals-for-llm-chatbots.md): Come costruire eval con simulazioni per chatbot LLM: utenti simulati con persona, rubriche LLM-as-judge, tassi di errore nei flussi critici e ciclo di feedback. - [CPUSim: il simulatore di CPU che ho costruito per Zanichelli](https://fedme.dev/it/blog/cpusim-a-cpu-simulator-for-zanichelli.md): Oggi mi è tornato in mente CPUSim, il simulatore di CPU nel browser creato per Zanichelli nel 2020 per mostrare agli studenti come gira il codice macchina. ## Optional - [Full profile, services and posts in one file](https://fedme.dev/llms-full.txt) - [About](https://fedme.dev/about): background, skills and experience - [Selected work](https://fedme.dev/work): case studies from Turn.io - [Contact](https://fedme.dev/contact): how engagements work