MK.
System onlineSofia, Bulgaria · AI Engineer · Multi-Agent Systems · RAG · Automation

Idesign,shipandoperateproductionAIsystemssolo,endtoend.

Two years of production experience at a digital marketing agency: multi-agent LLM pipelines, RAG over millions of documents, and AI products that real businesses pay for. Every system below is live or demo-ready, built end to end by one person.

7
production AI systems
180k+
lines of code shipped solo
1.5M+
vector chunks indexed
800+
automated tests
13-agent LangGraph pipeline in production1.54M vector chunks · agentic RAG2–4 hours of presales → 3 minutescovered by national media€3,700+ direct client revenue800+ automated tests76k LOC solo in 2.5 monthsLLM-as-judge · QA gates · fact guards
[01]

Selected work

Seven production systems. Every metric below is real and verifiable.

https://scout.netpeak.dev
Netpeak Scout dashboard
76k
LOC in 2.5 months
488
commits, solo
19
agent tools
10s
vs 30–60 min manual
Live · 20+ daily usersMar 2026 — present

Netpeak Scout

Sole architect & developer — internal AI analytics co-pilot

AI analytics co-pilot for 20+ project managers at Netpeak Bulgaria. PMs ask in plain Bulgarian, Russian or English — Scout answers in ~10 seconds with cited, real numbers from GA4, Search Console, Google/Meta/TikTok Ads, Gmail, Drive and a per-project knowledge base.

Problem

PMs burned 30–60 minutes per client question, clicking across five consoles and assembling reports by hand.

  • Agentic router: an LLM picks from 19 tool modules — trend, diagnosis, comparison, KB Q&A, email generation, reports
  • RAG knowledge base on pgvector + self-hosted bge-m3: files, Google Drive, Gmail and Telegram group messages
  • LLM-as-judge verification layer (Claude Haiku) checks every answer against the fetched data
  • Anomaly alerts, morning briefs, NL monthly reports, Telegram bot mirror — all on one €15/month VPS
PythonFastAPIpgvectorRedis/arqReact 19OpenRouterClaudeGA4/GSC/Ads APIsHetzner
View live
lead-agent · internal
3 min
vs 2–4 hours manual
$0.20
API cost per lead
13
agents in pipeline
28
test files
Live · used by sales teamFeb — May 2026

Netpeak Lead Agent

Sole developer — 13-agent LangGraph presales pipeline

A salesperson pastes a raw inbound lead — 3 minutes later they get a complete Bulgarian-language proposal: company research, website audit, SEO market data, budget forecast, matched services and meeting-prep questions. 13 agents orchestrated with LangGraph, QA-gated before a human ever sees it.

Problem

Presales research ate 2–4 hours of senior salesperson time per lead.

  • 6 research agents run in parallel: Perplexity web research, website auditor, Serpstat SEO, PageSpeed, Meta Ads, AI-bot accessibility
  • RAG matcher picks services from the internal knowledge base (Qdrant); Opus writes, a proofreader agent QA-gates at score ≥ 0.72
  • Resilience-first: one agent failing never kills the pipeline — partial results with graceful degradation
  • Real-time SSE progress, PDF export, per-proposal chatbot, admin panel with hot-swappable prompts and models per agent
PythonLangGraphFastAPIQdrantNext.js 16PostgreSQLDocker ComposeClaude Opus/SonnetPerplexity
discover · internal
13
compliance filters
$0.06
per article
168
automated tests
3 wk
spec → production
Live · revenue-generatingMay — Jun 2026

Discover Compliance Bot

Sole technical owner — first AI product the agency sells to an external client

An AI editorial linter and rewriter for a leading Bulgarian news publisher. Checks every article against a 13-filter Google Discover compliance checklist, then rewrites violations while preserving every quote, named source and number verbatim — the guardrail that makes AI safe for a newsroom.

Problem

Google Discover traffic is existential for publishers; a manual 13-filter checklist was slow and inconsistently applied.

  • Deterministic YAML rule engine first ($0, <50ms), then Haiku analyzer, then Sonnet rewriter — cost-tiered model routing at ~$0.06–0.12/article
  • Post-hoc guardrail verifies quotes, sources and numbers survived the rewrite verbatim
  • Bulk mode: ZIP/CSV in → ZIP + summary out, resumable SQLite-backed state, ~100 articles/day capacity
  • 168 tests with a fully mocked LLM layer, mypy --strict, dual deployment (VPS + Vercel) in 3 weeks from spec to production
PythonFastAPIClaude Haiku/SonnetYAML rule engineNext.js 15SQLiteDockerHetznerPlaywright
https://dabulgaria.bg/programa/chat/
Election chatbot UI
3,310
pages indexed
409
candidate profiles
3
national media covers
~$0
infra cost
Live · publicMar — May 2026

Election Chatbot for a National Party

Built end to end — covered by national media

Public AI assistant for the Bulgarian party "Da, Bulgaria" during the April 2026 parliamentary elections, embedded on the official party site. Voters ask anything about the program and 409 candidates — answers are grounded strictly in official material with numbered source citations. Covered by mediapool.bg, offnews.bg and clubz.bg.

Problem

Nobody reads a 2,000+ page program; one hallucinated answer in a political context becomes a news story.

  • Hybrid RAG: BM25 (FTS5) + vector search fused with Reciprocal Rank Fusion, then Cohere rerank — all inside an embedded SQLite database
  • Zero-infrastructure trick: the 59 MB vector DB ships inside the Vercel serverless bundle — no hosted vector store, near-zero cost under media traffic spikes
  • Prompt-injection defense, spoof-resistant rate limiting, 24h response cache, graceful degradation at every retrieval layer
  • Survived national media attention and adversarial public users; plus a polling-station finder on the official government registry
Node.jsSQLite + sqlite-vec + FTS5Gemini FlashCohere rerankVercel serverlessPlaywright
View live
https://belobradova-toolkit.vercel.app/chat
Legislation chat UI
1.54M
embedded chunks
26k
documents ingested
1997→
stenograms coverage
0
manual ops since launch
Live · publicMay — Jun 2026

Legislation RAG for an MP's Office

Built solo in 2.5 weeks — fully autonomous nightly pipeline

A public AI assistant over the entire corpus of Bulgarian legislation: every public consultation since 2008, plenary stenograms back to 1997, bills, committee sessions — 1.54M embedded chunks. Built for the cabinet of a Bulgarian MP; updates itself every night with zero human involvement.

Problem

Legislative data is scattered across two clunky government portals, much of it as scanned PDFs with no text layer.

  • Agentic RAG: a cheap planner LLM chooses among 7 corpus-specific retrieval tools and relaxes its own filters on empty results
  • Deterministic safety net runs in parallel with the agent — answers never depend on the planner alone
  • OCR backfill: 515 of 733 bills recovered from scans with Tesseract, nightly
  • Nightly eval harness: 6 golden questions run against production, regressions visible next morning; full corpus embedding cost ≈ 1 cent
Next.js 15TypeScriptpgvectorOpenRouterVercel AI SDKTesseract OCRPlaywrightHetzner
View live
skuptura · internal
€4.9k
client revenue
3,395
descriptions delivered
516
test functions
~90%
gross margin
Live · €4,900+ revenueDec 2025 — present

SKUptura — AI Content Platform

Architect & operator — paid client work, multi-tenant

Production content platform that turns a SKU + URL into a researched, fact-checked, SEO-formatted product page — at scale, straight into the client's ERP and Google Sheets. 3,395 descriptions delivered to Bulgarian e-commerce clients across 4 languages; new-client pipeline active.

Problem

Thousands of SKUs with no descriptions; manual copywriting costs hours per product — and naive LLM output invents weights, ingredients and medical claims.

  • 3-stage pipeline: researcher (Perplexity Sonar) → writer (Gemini) → proofreader, with per-client prompts and knowledge bases
  • Anti-fabrication layer: post-scrubber strips invented specs; buyer-critic agent reviews output; GTIN checksums, vet-product detection, confidence scoring
  • 8 documented client-feedback phases; cost per text engineered to ≈ €0.14 against €1–2 sale price
  • 516 test functions; React admin UI; supplier-feed enrichment engine classifying against a 222-category taxonomy
PythonFastAPILangChainPerplexityGeminiReact 19Google Sheets APInopCommerceDocker
parliament · internal
34k
LOC in 3 weeks
217
sessions transcribed
250
MPs tracked
66
test files
Demo-ready · 34k LOC in 3 weeksApr — May 2026

Parliament Tracker

Deepest end-to-end build: scrape → Whisper → diarization → RAG

Civic-tech system that makes Bulgarian parliament committee work searchable: a Python worker scrapes committees, transcribes session videos with Whisper, attributes speech to specific MPs via diarization + LLM, embeds everything into pgvector — and a Next.js dashboard serves transcripts, topic alerts and a citing RAG chat.

Problem

The real legislative work happens in committees — published as raw videos and scattered PDFs, with no search and no transcripts.

  • Full ML pipeline owned solo: faster-whisper transcription, speaker diarization, LLM attribution with per-session cost caps and cluster-hash caching
  • Hybrid retrieval (BM25 + pgvector ANN with RRF) feeding a Bulgarian RAG chat with locked system prompt and citation hydration
  • Real data: 6 committees, 217 sessions, 250 MPs, 3,146 transcript segments
  • Built via a documented 3-agent parallel AI development workflow with zone-ownership contracts — 181 commits in 3 weeks
Next.js 16PrismapgvectorPython 3.12faster-whisperCeleryClaude APIDockerMinIO
[02]

More projects

Live

Netpeak AI Consultant

Public marketing-consultant chatbot + embeddable one-script widget. RAG on pgvector, website analysis tool-chain, lead capture. 105 sessions and SQL-qualified leads in the first 10 days. Includes a live-incident rescue: migrated a dead managed DB to a self-hosted pgvector stack with zero client-code changes.

Next.js 16pgvectorClaudeVite widget
Internal tool

MSA Compliance Auditor

Pre-screens any website against 102 Microsoft Ads compliance checks before an ad account is opened. Dual-model cross-verification: Claude and GPT-4o analyze in parallel — a FAIL from either wins, disagreement goes to manual review. 73 commits in 6 days.

Next.js 16PrismaClaude + GPT-4oRDAP/WHOIS
Live

Telegram Analytics Bot

The v1 that became Scout: free-form multilingual questions → validated JSON intent → live GA4/GSC data → natural-language answer. Generalized to a second paying client in one day with zero code changes — config and a systemd unit.

Pythonaiogram 3GA4/GSC APIClaude
Case study

Creative-Intelligence Pipeline

115 Meta Ads creatives classified with GPT-4o Vision, adversarially re-rated by Claude Sonnet, inter-rater agreement measured with Cohen's kappa, clustered into 6 patterns — plus a funnel unit-economics model and a live prototype. 11 agent roles, 7 human-in-the-loop checkpoints, $3.13 total API spend.

GPT-4o VisionClaudeApifyPython
Newsroom AI

Editorial Style Engine

Clones a professional journalist's writing style from a scraped corpus into a machine-readable style card, then generates and edits news in that style — with a hard fact-protection validator that rejects any AI edit touching names, dates, numbers or quotes.

PythonGemini 2.5 ProTelegram Bot
Live · 3-day ship

Polling Station Finder

Personal site + national polling-station finder for a public figure, shipped in 3 days before the election peak. Reverse-engineered an undocumented government endpoint into a clean cascading address form; headless WordPress blog with n8n auto-import.

Next.js 16Headless WPGRAO APIVercel
2025–2026

Client Data Extraction (20 jobs)

~20 scraping and data-extraction jobs for agency clients across 15+ Bulgarian e-commerce and media sites: product feeds, canonical URL maps, a 9,100-row editorial audit. Playwright, Selenium, LLM enrichment, resumable runs, anti-block tactics.

PythonPlaywrightSeleniumPerplexity API
2025

n8n Automation Suite

Where it all started: self-hosted n8n orchestrator tracking task completion across 60 client projects for the CEO, GPT-4 SEO article generation from Sheets briefs, automated Search Console reporting. The origin story of every system above.

n8nDockerGPT-4Google APIs
[03]

How I ship this fast

AI-assisted development is my production method, not a shortcut. I own architecture and every integration decision — agents multiply my hands, guardrails keep the output honest.

01

Multi-agent workflows

Parliament Tracker was built by 3 parallel AI agents with documented zone-ownership contracts; the creative-intelligence pipeline ran 11 agent roles with 7 human-in-the-loop checkpoints. I design the process, agents execute, I verify.

02

Guardrails before trust

LLM-as-judge verification in Scout, a proofreader QA gate in Lead Agent, verbatim fact-preservation in the compliance bot, dual-model cross-checks in the auditor. No LLM output reaches a user unverified.

03

Cost engineering

Cheap-model-first routing, embedded vector DBs inside serverless bundles, response caches, rate limits. $0.20 per 13-agent pipeline run; ≈1 cent to embed a 1.5M-chunk corpus; €15/month VPS serving 20+ users.

04

Tests or it didn't happen

800+ automated tests across the portfolio: pytest with mocked LLM layers, Playwright e2e, mypy --strict, nightly golden-question evals running against production.

[04]

Two years, one arc

Apr 2024

Joined Netpeak Bulgaria

Executive Assistant to the CEO — finance ops, legal paperwork, event management, research across the group's entities.

2025

Automated my own job

Self-hosted n8n: a 60-project status tracker for the CEO, GPT-4 SEO content generation, automated client reporting. Then ~20 scraping jobs for agency clients.

Dec 2025

First AI revenue

SKUptura ships its first paid batch of AI product descriptions. The pipeline grows into a multi-tenant platform with €4,900+ revenue by mid-2026.

Mar 2026

The production sprint

Four live systems in four months: Scout (76k LOC), the 13-agent Lead Agent, the election chatbot covered by national media, the public marketing consultant bot.

May 2026

AI products clients pay for

Discover Compliance Bot becomes the first AI product the agency sells to an external publisher. Belobradova Toolkit ships 1.54M-chunk legislation RAG in 2.5 weeks. Parliament Tracker: 34k LOC in 3 weeks.

[05]

Stack

AI / LLM

LangGraphLangChainRAG (pgvector, Qdrant, sqlite-vec)Hybrid retrieval + RRF + rerankLLM-as-judgePrompt engineeringClaude APIOpenAI APIGemini APIOpenRouterPerplexity APIWhisperEmbeddings (bge-m3, e5, OpenAI)

Backend

PythonFastAPIasyncioPostgreSQLpgvectorRedisSQLitePydanticREST APIsJWT/OAuth2SSE streaming

Frontend

TypeScriptNext.jsReact 19Tailwind CSSViteEmbeddable widgets

Infra & Ops

Docker ComposeHetzner VPSsystemdNginx/CaddyVercelSupabaseMinIO/S3SentryGitHub

Automation & Data

n8nMake.comZapierPlaywrightSeleniumWeb scrapingGoogle APIs (GA4, GSC, Ads, Drive, Gmail, Sheets)Meta Ads APITelegram botsOCR (Tesseract)

Quality

pytestPlaywright e2eVitestmypy --strictGolden-question evalsMocked-LLM test layers
[06]

About

I'm 20, based in Sofia. I joined Netpeak Bulgaria as an executive assistant and turned the role into AI engineering: first automating my own duties with n8n, then building the agency's internal AI products, then products that clients pay for.

Outside work I run the tech side of a Bulgarian-Ukrainian community media project — grew its Facebook from 4,000 to 26,000 followers, published 3,000+ articles with an AI translation pipeline, and our OSINT work has been covered by Bulgarian National Television and referenced in the Bulgarian Parliament. I've also raised €10,000+ for charity through organized events.

Languages: Ukrainian and Russian (native), English (upper-intermediate), Bulgarian (intermediate). Currently doing a CS Master's at Neoversity.

Let's build something

Open to AI Engineer / AI Automation roles — Sofia or remote.

© 2026 Maksym Karmazynovskyi · Sofia, Bulgaria