happyin.work / ComfyUI

ComfyUI specialist - Anastasiia Butova

I build production image pipelines on ComfyUI, and have for two years, since 2024. I design the graphs, write the custom nodes underneath them, train the LoRAs they load, and run them headless over the ComfyUI API on GPU workers. Based in Belgrade, Serbia; working remotely; open to contract and full-time work.

In one line: Anastasiia Butova is a ComfyUI specialist and diffusion-model engineer, with 100 custom nodes in 16 packs of her own, ComfyUI graphs in production for a jewellery image SaaS, a photo app with 4M+ users and a Telegram bot, and LoRA training for FLUX.2 Klein and SDXL.

What I can build for you

Where my ComfyUI work has run

The nodes, counted

Counted on 15 September 2026 from each pack's node registration code: 100 distinct nodes in 16 packs of my own (104 registrations; four utility nodes are shared by two packs).

The repositories are private, so the count is stated here rather than linked.

How I work

A pipeline is built and debugged in the ComfyUI editor, then frozen: the graph exported in API format, the custom nodes pinned to the commits that were tested. After that nothing is clicked. The backend submits the graph with per-request inputs and collects the result. A new checkpoint or a node change is judged on fixed-seed sheets against the previous one, and what it gets wrong is written down next to what it gets right, the way the model cards on Hugging Face are.

Why the custom nodes are pinned

Production images carry a vendored snapshot of every custom node they use, updated on purpose and tested before it ships, so there is no surprise from somebody else's main branch. The same caution applies to what a node is allowed to do: a custom node is Python running with the server's permissions. I wrote the detection-and-removal runbook for a cryptominer, an XMRig variant, that had been injected into a ComfyUI container's execution.py.

Models and tools

FLUX.2 Klein 9B, FLUX, Qwen Image Edit, SDXL and SD 1.5, IP-Adapter, ControlNet, SAM3, Florence2, DINOv3, YOLO, NAFNet, SwinIR, HYPIR. The ComfyUI HTTP API, Diffusers, PyTorch, Python, Docker, RunPod, BullMQ, H100 and H200 GPUs.

Questions people ask

Can you build a custom ComfyUI node for our pipeline?

Yes. I have written 100 so far, in 16 packs. Most are one of three things: a model wrapped so it runs inside the graph, a decision the graph has to make (a gate, a router, a switch), or an image operation no existing pack does the way the pipeline needs.

Can you turn our ComfyUI workflow into an API or a product?

Yes, that is how every production project on this page runs. The graph goes into API format, a backend submits it with per-request inputs, a queue sits in front of the GPUs, and results come back by webhook.

Do you train LoRAs for FLUX or SDXL?

Yes. Per-person identity LoRAs trained on a user's own photographs, and edit LoRAs on FLUX.2 Klein 9B that restore faces, swap the background behind a car and correct its geometry, several of them published as model cards on Hugging Face.

Do you work with diffusion models outside ComfyUI?

Yes. Diffusers, training scripts, ONNX export and C++ inference for retouching models that run on the user's own computer. ComfyUI is where most pipelines are assembled, not the only place the models live.

Where are you based, and how do we work together?

Belgrade, Serbia, working remotely across European and US timezones, on contract or full-time. Russian native, English professional, Serbian working.

How to reach me

Telegram @happy_in_happy is fastest; email [email protected], or LinkedIn.

Elsewhere on this site

Anastasiia Butova - ML engineer, Belgrade, Serbia. Email [email protected] · LinkedIn · GitHub · Telegram · Hugging Face