Panagiotis (Panos) Gkilis

Machine Learning Engineer — Production ML Systems · MLOps · Speech & Language AI

Thessaloniki, Greece · open to Remote / Athens / Oslo · bedvibe@bedvibe.studio · Greek, English, Norwegian (all fluent) · EU citizen, Norwegian-registered business (ENK)

Everything below is live, running and open to inspection — please look before you decide.

ai.bedvibe.studio/work — start here: everything I have built and published, on one page, with the links into all of it.

tts.bedvibe.studio/portfolio — 36 project write-ups you can open right now: architecture, screenshots, evaluation reports and the failures I found in my own work.

ai.bedvibe.studio/articles — engineering notebook: how each system was debugged, measured and gated, written up in full.

Summary

Six years of end-to-end production ML: models trained from scratch, deployed behind live APIs, and operated for paying customers. Sole engineer of BedVibe Studios — a multilingual speech-AI platform built on a ~730M-parameter TTS model trained on consumer GPUs across 13 languages, running on FastAPI, PostgreSQL/Supabase, Docker and Linux/Nginx with Stripe-billed usage. Seven published research records with Zenodo DOIs — five publications and two software releases. Four open-source Python libraries — three installable from PyPI, the fourth on GitHub — plus a real-time telemetry engine in Rust.

How I build

I develop with AI coding agents — Claude Code and Codex, cross-checked against each other through MCP tooling — and treat their output as untrusted until it clears a gate: automated evaluation suites, ASR-validated model QA, and static checks. All four of my open-source libraries are those gates: ttsproof (TTS failure-mode QA), trainproof (training-run linter), spkproof (speaker-verification measurement checks) and notchecked (coverage accounting — what was checked, what could not be, and what was never in scope, as typed states rather than pass/fail). The method is why a LoRA collapse and a live RAG regression were caught before release, not after.

Core Skills

ML & modeling — transformer training from scratch (AR + NAR neural codec LM), LoRA fine-tuning, speaker embeddings (ECAPA-TDNN, WavLM, ResNet), SentencePiece tokenization, Whisper/WhisperX ASR & forced alignment, retrieval/RAG evaluation, LLM-output benchmarking

MLOps & deployment — FastAPI inference APIs, async job queues, release-gating automated evaluation suites (ASR-validated WER/CER), distributed tracing (OpenTelemetry + Langfuse joined on a shared trace id, Jaeger), LLM gateways with per-key quota, token metering, bounded admission and deadline-aware failover, monitoring & production debugging, systemd service management, nginx/TLS reverse proxying, firewall hardening, GPU inference, ONNX export, Docker, Linux, HTTPS/domain routing, CI/CD (GitHub Actions, PyPI trusted publishing)

AI orchestration & data — LangChain/LangGraph stateful validate-retry graphs, CrewAI (evaluated against LangGraph on eight fault scenarios and rejected on measurement), MCP servers and clients with schema-validated responses, RAG pipelines with pluggable vector backends (FAISS IVF/FlatIP, Qdrant HNSW, brute-force baseline) benchmarked on recall@k against an exact index, hybrid retrieval (dense + BM25), schema-enforced output (Pydantic), self-hosted n8n; speech-dataset curation (100+ hours), metadata schema design (1.55M records), custom binary training formats

Backend & languages — Python, SQL, JavaScript, Rust, HTML/CSS · PostgreSQL (schema design, RLS, plpgsql), Supabase, REST, JWT/auth, Stripe & idempotent webhooks, AWS SDK, Deno/TypeScript edge functions

Professional Experience

Founder / Machine Learning Engineer · BedVibe Studios
2020 – Present · Greece / Remote · Norwegian-registered sole proprietorship (ENK)
Norwegian Language Teacher · globalcitizen
Sep 2013 – Jun 2019 · North Athens

Taught Norwegian to Greek- and English-speaking adults through B2; designed curricula and explained complex material across three languages.

Natural Sciences Teacher · Aristarhos Private High School
Sep 2014 – Jun 2017 · Peraia

Taught chemistry and natural sciences; prepared students for university-track examinations.

Research & Publications

Intra-Speaker Vocal Variation and Speaker-Embedding Displacement: A Matched-Content Replication Across Three Encoder ArchitecturesZenodo, Aug 2026 · DOI 10.5281/zenodo.21921958. Four speakers, matched sentences, three encoders (ECAPA-TDNN, ResNet, WavLM); 30/30 speaker × condition × encoder cells negative. Diagnoses differential measurement error in F0 tracking (Fisher p = 2.4×10⁻¹¹); pre-registered, with the adversarial prior-art audit and a withdrawn p = 0.013 result published in full.
The Loss Curve Is Not a Sufficient Statistic: Silent Objective Failures from Sentinel–Class Collisions in Neural Codec Language ModelsZenodo, Aug 2026 · DOI 10.5281/zenodo.21864659. A sentinel–class collision makes masked cross-entropy silently delete an entire class — usually the end-of-sequence token — while the loss curve still descends normally. Reproduced in 40 lines on CPU.
BedVibe-TTS: An Engineering Report on a Multilingual Neural Codec Language Model with Multi-Axis ConditioningZenodo, Apr 2026 · DOI 10.5281/zenodo.19781414. Architecture, data pipeline, training diagnostics and ablations, plus a reproducibility finding on attention-backend × precision interactions across GPU generations.
An Automated Failure-Mode QA Framework for Neural Text-to-Speech SystemsZenodo, Jun 2026 · DOI 10.5281/zenodo.20757553. 130 edge cases × 3 voices (390 samples), zero structural audio defects; blinded human validation of the 42 ASR-uncertain cases (controls 15/15) split 45/55 real failures vs ASR false-negatives, confirming quarantine-for-review.
Diagnosing Hierarchical Retrieval Failure in Long-Document RAGZenodo, Jun 2026 · DOI 10.5281/zenodo.20692451. Stage-level ablation isolating first-stage chapter-selection error compounding (27/80) and neighbour-expansion dilution (32/80); oracle-chapter routing recovered recall to 0.7844.
LongBook Verifier — Evidence-Grounded Evaluation of Long-Document Retrieval and AI-Generated AnswersZenodo, 2026 · DOI 10.5281/zenodo.20513116. Retrieval baselines, model-output scoring and a 240,767-word stress-test benchmark, released as a research package.
A 2D Linear-Elasticity Finite Element Solver Written from First Principles, Validated Against the Kirsch Stress Concentration FactorZenodo, Aug 2026 · DOI 10.5281/zenodo.21892064. Hand-written Delaunay mesher, isoparametric elements and CG solver; no FEA library, no scipy. Recovers the analytic stress concentration factor as 3.00002 against an exact 3 the code never receives. Ten gates pre-registered; nine pass, the failure published.

Selected Production Systems — live and publicly verifiable

BedVibe TTS Platform — multilingual emotional TTS with auth, token wallet, subscriptions and an async generation queue. Paying customers. tts.bedvibe.studio
ttsproof, trainproof, spkproof & notchecked (open source) — TTS failure-mode QA built from the published framework, benchmarking closed-source engines via a SpeechSDK integration; a training-reliability linter (90 rule IDs, 274 tests, 5 log formats, standard library only) that flagged a real run whose best checkpoint was step 99 while every saved checkpoint came from step 1600+; deterministic F0-contamination checks for speaker-verification studies (6 rule IDs, exact tests, zero dependencies); and coverage accounting that reports what a validator could not check as eight typed terminal states instead of silence. github.com/Mormolykos
Grounded Portfolio AI Agent (RAG) — retrieval-augmented Q&A over my work, hardened against 32 adversarial cases (prompt injection, credential invention), shipped with a public evaluation report; the eval suite re-runs on every corpus change and has caught a live model regression. Three vector backends behind one interface — brute force 0.86 ms, FAISS 0.035 ms, Qdrant gRPC 1.3 ms — with the simplest one shipped on measurement, and the whole answer path traced span by span (request p50 12.41 → 2.91 ms once tracing showed a model client being rebuilt on every answer). …/portfolio/agent-evals
basalt — LLM model gateway (open source) — one OpenAI-compatible endpoint over several backends: per-key quota, token metering, bounded admission, deadline-aware retries and failover. Removing backpressure let 32 callers all receive HTTP 200 while 31 arrived after they had given up — a 100% success rate and one usable answer; bounded admission raised that to six. github.com/Mormolykos/basalt
slate — MCP retrieval server & client (open source) — exposes a production RAG corpus to any agent over the Model Context Protocol, with typed responses instead of JSON strings so a drifting tool schema fails loudly rather than returning a confident wrong answer. Measured protocol overhead: 1.85 ms on top of 2.04 ms of retrieval. github.com/Mormolykos/slate
aether — real-time aerospace telemetry (Rust, open source) — live ADS-B ingestion with per-axis Kalman tracking and closed-form conjunction screening, exposed over a C ABI. A controlled A/B took rejection of valid observations from 16.1% to 1.9%. github.com/Mormolykos/aether
GEO Observatory — AI-crawler observability: append-only event ledger, deterministic deduplication, rule-based bot classification, public dashboard, automated daily collection on a hardened systemd deployment. geo.bedvibe.studio
AI Companion (desktop, Unity/C#) — supervises a 5-process local AI fleet (Rust VAD, Whisper, llama.cpp, FFmpeg) with CPU-specific model builds, MAC-bound licensing and Stripe; local inference to cloud TTS.

Nine further live systems — BookProof, Audio Drama Studio, Audiobook Studio Editor, Talking Avatars, The Mirelands browser game, a public API tester, a Rust/Axum Amazon Polly service, an MCP mail assistant and a forced-alignment microservice — with screenshots and technical write-ups at tts.bedvibe.studio/portfolio.

Education & Languages

Hellenic Open University — BSc Natural Sciences programme, final year: 222 ECTS completed, 11 of 12 required modules (mathematics, physics, chemistry, biology; six laboratory courses). Final module scheduled September 2026.

Greek (native) · English (fluent, professional technical writing) · Norwegian (fluent) · advanced technical documentation in Greek and English.