Skip to content
RYBKIN ALEKSEI

CV

Aleksei Rybkin AI Engineer

I build language models into working products and take them to production. In a week built an LLM contract review service with verified quotes and a Word and PDF protocol; designed a headless content pipeline on the Anthropic API with an MCP connector — 500+ posts from one person; moved an online store onto Next.js with a 1C exchange, a Python parser and monitoring. I design the architecture myself, work with agents through Claude Code and accept results only after automated tests and code review.

Download CV (PDF)

Case studies: rybkin.dev/cases/contract-review, rybkin.dev/cases/roton · How this site is built: rybkin.dev/how

Experience

OCT 2026Project-⁠based

AI Engineer

Contract review — AI service for a B2B supplier github.com/chaoseye/contract-⁠review
Case study2.5 minto analyse a typical contract; the protocol takes seconds₽10–⁠20per 20-⁠page contract with Claude Sonnet, October 2026 prices
  • Built a web service that reviews a buyer’s supply contract with an LLM and issues a protocol of disagreements in Word and PDF: from the brief to a working system on the server in a week, working with Claude Code.
  • Made the model’s answer verifiable: a strict JSON schema (structured outputs) with one re-⁠ask, every quote matched against the contract text — exactly, then fuzzily — and clause numbers and annex references checked against the document markup.
  • Connected models through an OpenAI-⁠compatible API (RouterAI with Russian-⁠only servers, OpenRouter, Ollama, vLLM), the Anthropic API with streaming and prompt caching, and Codex CLI; the admin keeps prompt versions with a diff, rollback and a trial run on a contract.
  • Read real documents — docx from XML with Word’s numbering restored, doc and rtf through LibreOffice, PDF through pdfplumber, scans through Tesseract cell by cell — and built the protocol as a business document. A contract file is deleted once read and the review after 24 hours, texts never reach logs or backups; 450+ automated tests.
Python FastAPI PostgreSQL React TypeScript Ant Design Docker LibreOffice Tesseract OpenAI API Anthropic API
JUN — AUG 2026Project-⁠based

AI Engineer

Roton — medical supplies store roton-⁠med.ru
Case study+12%search traffic three months after the move20 ha month freed for a manager by the 1C exchange, by the client’s estimate
  • Moved a medical supplies shop off a hacked Bitrix site into a clean build on Next.js and WordPress/WooCommerce. Page load time (LCP) fell from 4.1 to 1.1 seconds. detailscollapse

    WordPress with WooCommerce stayed a sealed-⁠off admin; the public side runs on Next.js, with list pages built ahead of time and cards built on demand and held in a response cache that the exchange invalidates by webhook, only for the products it touched. Served from our own server behind Caddy with automatic TLS, and the WordPress object cache in Redis. Every Core Web Vital is in the green, and the server returns a product card in 0.3s.

    The old site had been compromised — 435 malicious files, web shells among them, in randomly named folders. Pulled the data into a clean build and carried none of the infected code across. Plus key-⁠only SSH, fail2ban and automatic HTTPS.

  • Set up the automatic 1C exchange and wrote a Python parser for product attributes: around 1,100 products with stock and photos now update on the site by themselves. By the client’s estimate that freed 20 hours of a manager’s time a month. detailscollapse

    The exchange runs over CommerceML every weeknight: products, categories, sizes, colours, stock and images — around 1,100 items and 2,300 offers in a quarter of an hour. The site and 1C can differ only until the next run. The exchange plugin needed fixing for PHP 8: 11 patches are applied by a script when the container starts, so reinstalling the plugin does not lose them.

    The parser reads the size reference. The client’s Size field packs up to five things into one string: size, side, girth in centimetres, compression class and garment length, with Cyrillic and Latin mixed in. Of 233 distinct values it reads 227 — 97%, and 99.7% of products by how often a value occurs; six non-⁠standard ones go to manual review. The rules are covered by 47 unit tests, written before the code. The storefront never parses: it looks values up in a prepared table, and an unknown one holds the product in quarantine until a person rules on it. Forty of 1,070 items sit there now, so 96% publish with no manual step. Sizes and colours became a choice inside the card, and 2,300 offers collapsed into 940 cards.

  • Kept the search traffic through the change of engine: every old address leads to the right page, and search positions were back where they had been within three weeks. detailscollapse

    A product is tied to its 1C row by that row’s identifier, so a repeat export updates the same page, and the address survives both a rename in 1C and the change of engine. Took an inventory of 1,192 addresses from the old site and covered them with 33 redirect rules, each landing on a live page that makes sense. Alongside that: structured data, a sitemap and readable transliterated URLs. Positions dropped no more than 5% in the first fortnight; organic traffic was up 12% by the end of the third month.

  • Built search with filters and ordering through a chat on the site: the message goes to the managers in Telegram, the reply comes back to the visitor in the same chat. detailscollapse

    Search runs on Meilisearch: instant results and filters by brand, size, section and garment type across a catalogue of a thousand items. The search engine computes the filter values and their counts itself, so the list never offers an option that finds nothing.

    Ordering needs no form and no account: the button used to hand the visitor off to a messenger and lose them. Chat conversion is 4.2%. The bridge later died quietly: the server lost its route to Telegram, and the managers went weeks without seeing enquiries. Found it, stood up our own relay on Cloudflare Workers and recovered the whole correspondence — not one enquiry was lost.

  • Set up monitoring of the exchange and backups with restore checks. Prepared the project for handover to another developer: documentation, automated tests, one-⁠command deployment. detailscollapse

    Three independent watchdogs: a night watcher holds the export window and reports the catalogue diff, a morning check catches stale data, and a third starts watching the moment 1C makes contact, so an export outside the schedule cannot pass unnoticed. Success is judged by a mark the exchange stamps on every parsed product — not by what the exchange replied, since the standard has it answer 200 OK to an error as well. The delivery channel is doubled: Telegram through our own relay, plus email.

    Encrypted nightly copies go to the cloud in chunks over four streams — a way around the provider’s 16 KB/⁠s per-⁠connection cap, which had been stopping them from arriving whole. A separate verify mode downloads a copy, decrypts it and loads the dump; the last run restored all 60 tables.

    Failures were taken down to their cause. The 1C import kept dying on a cache flush: a third-⁠party plugin called one every thousand XML elements, which with an external cache means wiping the whole Redis database — 20,290 times in a month. Once the flush missed its timeout and rolled the entire export back. Replaced it with an in-⁠process flush, moved the full one to the end of the exchange, and made a cache failure harmless to the page. Another: a night report showed 73 items fewer in stock and the client was about to audit the warehouse, but the reading had been taken in the middle of a background recount. Fixed the completion flag and told the client myself that the alarm was false.

    A reproducible Docker environment, one-⁠command deployment that rolls itself back on a failed build, 6,700 lines of documentation on deployment, recovery and operations, 16 operations scripts, 16 catalogue checks, 106 storefront tests. And a separate file of 157 diagnosed failures: what broke, why, and which signal catches it.

Built in tandem with Claude Code: I designed the architecture myself, broke the work into tasks for the agent and accepted results only after automated tests and code review. That is what let one person carry the whole migration.

Next.js React TypeScript WordPress/WooCommerce PHP Python 1C (CommerceML) MySQL Redis Docker
JAN — AUG 2026

Product Manager

OneTwo — Telegram games onetwo.gg
  • Designed and shipped a headless content generation pipeline. Claude writes the texts through the Anthropic API; NanoBanana makes the images through Higgsfield’s remote MCP server. The server is attached to the same call through an MCP connector: the model itself triggers generation and polls the asynchronous job until it is ready. A prompt template per format, few-⁠shot built from the brand’s own reference texts. A person selects and finishes.
  • Five months produced 500+ posts, 100+ a month, from one person instead of three — a content manager, a designer and a marketer: about 1.5M roubles of payroll a year. 56% of drafts shipped unedited, and time per post fell from four hours to twenty minutes.
  • Wrote the specifications for developers and designers: feature breakdowns, game mode logic, acceptance criteria.
  • Found divergences between the specification and the implementation during testing — 30 bugs closed before release.
  • Designed two battle passes and a reward ladder with parameters, dependencies and a target retention metric. D7 retention went from 22% to 31%.
  • Turned the results of community surveys into roadmap priorities.
  • Ran a competitive analysis of the Telegram games market — the findings fed features and promo campaigns.
Claude API NanoBanana MCP Telegram Game Design Roadmapping
JUN 2024 — DEC 2025

Project Manager

Madnomad Design — design and marketing agency madnomad.design
  • Moved advertising graphics onto generative models: banners for a property developer are assembled in NanoBanana and Recraft to the brand’s style. Four layouts a day against one, four times less time per layout. Adapting to platform formats and handling revisions stopped costing a separate round with a designer.
  • Automated the routine in Jira and Confluence: issue templates, automation rules, guides. Around 40 manual steps a week left the process.
  • Formalised requirement intake: checklists and briefs cut post-⁠delivery rework by 60%.
  • Assembled one documentation base in Confluence — onboarding went from ten days to three.
  • Kept the roadmaps and coordinated five parallel projects.
NanoBanana Recraft Jira Confluence Roadmaps
JAN 2023 — MAY 2024

Business Assistant

EMCD Tech — IT and fintech, Saint-⁠Petersburg emcd.io
  • Automated the handling of calls: meeting transcription with an automatic summary and a list of decisions. Manual minutes used to cost 14 hours a week of the participants’ time; now it is five minutes of proofreading after the call. Agreements stopped falling between meetings, and searching past discussions takes seconds instead of digging through chats.
  • Simplified work with Google Sheets: data consolidated between sheets automatically, reporting forms filled in on their own. Twelve manual steps left the weekly cycle, along with the copying between documents and the errors it produced.
  • Collected and visualised data, prepared analytical reports for management decisions.
  • Initiated and pushed the Notcoin integration: gathered the metrics from past integrations and the case for it, and brought warm contacts. The integration shipped.
  • Researched the competitive market and segmented the audience for the company’s positioning.
Meeting Transcription Google Sheets Google Apps Script Analytics

UNDER THE HOOD

I run the boring parts on purpose: deployment, monitoring and backups. Releases go out with one command and roll back on their own, backups are checked by restoring them, and a failed nightly sync never passes unnoticed.

Education

2020 — 2024Bachelor's degree

Software Engineer

SPbPU — Peter the Great St. Petersburg Polytechnic University spbstu.ru

Degree programme: Fundamental Informatics and Information Technologies.

Stack

Claude Claude
React React
Node.js Node.js
Python Python
Codex Codex

LLMs and agents

Claude Code, NanoBanana, Anthropic API, OpenAI API, MCP, Prompt Engineering

Backend and data

Python (Advanced), FastAPI, Node.js, REST APIs, SQL (Advanced), PostgreSQL, MySQL, Redis, Meilisearch

Frontend

TypeScript, React, Next.js

Infrastructure and integrations

Docker, Linux, Cloudflare Workers, 1C (CommerceML), Telegram, n8n

Full stack

Bright — used on commercial work. Muted — studied in theory or tried in personal projects.

Generative AI & LLMs

Prompt Engineering, OpenAI API, Anthropic API, NanoBanana, Recraft, MCP · LangGraph, LangChain, CrewAI, RAG Systems, Fine-Tuning (LoRA/QLoRA), LLM Evaluation, Context Engineering, HuggingFace Transformers, AWS Bedrock, Ollama, CUDA

Machine Learning & Deep Learning

PyTorch, OpenCV · Scikit-learn, TensorFlow, Keras, XGBoost, LightGBM, CatBoost, BERT/DistilBERT, NLP Pipelines, CNN, RNN/LSTM, Transformers

Backend Development

FastAPI, Node.js, REST APIs, GitHub Actions · Flask, Express, GraphQL, WPGraphQL, Pydantic, JWT Authentication, RBAC

Data & Vector Databases

Pandas, NumPy, Matplotlib, Meilisearch, PostgreSQL, MySQL, MongoDB, Redis · Seaborn, FAISS, Chroma, Pinecone, pgvector, Prisma

Languages

Python (Advanced), SQL (Advanced), TypeScript, JavaScript, PHP 8, C++, Java, Go, Bash

Tools & Platforms

Claude Code, Codex, Git, GitHub, VS Code, Figma, Framer, Notion, Jira, Confluence · Cursor, Copilot, Jupyter Notebook, Streamlit, Gradio, Google Colab, LangSmith

Web & Frontend

React, Next.js, HTML5, CSS3, WordPress / WooCommerce · React Native, Redux, Tailwind

Infra & Cloud

Docker, Cloudflare Workers, Linux, nginx, Caddy · Kubernetes, AWS, GCP, Firebase, Lambda, CDN

Automation

n8n, Slack API, 1C (CommerceML), Telegram, Google Sheets, Google Apps Script · Stripe