Resume · Generative AI since November 2025

Nikita

AI Engineer · ComfyUI · LoRA · Python pipelines for image and video

Built a production pipeline for April, a virtual influencer. It writes the story, generates photos and videos in ComfyUI on cloud GPUs with custom-trained LoRAs, edits the clip and publishes it. April lives on Instagram.

“I live and breathe neural networks. Goal: build something big.”
What I bring
Character LoRA

Trained April's LoRA on Flux, Qwen-Image 2.1 and Fibo 2 with ai-toolkit. Datasets and captions curated by hand.

LoRA stacking

Combine my LoRA with ready-made ones: realism, phone-camera style, lightning/turbo at 4–8 steps. Weights tuned per task.

ComfyUI

24 custom workflows: ControlNet (depth, pose), multi-reference, masked face upscale, image→video and ref→video with audio.

Python & cloud

~26,000 lines of my own Python. ComfyUI via API, RunPod provisioning built into the automation, automatic QC of every generation.

Auto-editing

Remotion or HyperFrames. Any vertical social format: build it by hand once, then turn it into a working pipeline.

Agent engineering

A multi-agent system on Claude Code: each agent has a role and reads only what its task needs, heavy work goes to sub-agents via files. “Done” counts only after a deterministic gate passes, not because an agent says so.

Work

Clips made by the pipeline

Motion analysis

A script detects steps from pose, the edit cuts clips to the beat.

Outfit spin

Outfit of the day at real Minsk locations. LoRA + camera style.

Ref → video

MiniMax H3 from 4 references: face, outfit and pose hold for the whole clip.

TrendNot vid2vid · generated from scratch

A Reels trend recreated without the source video: every frame and every motion generated anew.

Showcase

A hyper-realistic story, made end to end by the pipeline

StoryA thrift-store bomber jacket bought for about $1, and a stranger on the street offers hundreds of dollars for it. Script, shots and on-screen text written by the agent.
FramesQwen-Image 2.1 + April's LoRA: real Minsk streets, her room, a second character in the shot, identity held in every frame.
TimeAbout 1 hour on a single RTX 5090 for the whole production.
CostNo paid APIs: open-weight models only, the only expense is GPU time.
AutomationThe whole format is a dynamic template: a new story goes in, a finished, edited clip comes out.

On-screen text is in Russian, April's audience language. Turn on sound.

Full pipeline

From idea to post, hands-off

Each step is a separate module. Steps hand files to each other and are checked by gates, so a failure shows up immediately and never reaches publishing.

Story

Claude · character diary

An agent runs April's life and decides what to shoot today: outfit, place, action.

References

Pinterest · OpenCLI · own library

Finds references for clothes, places and poses, crops them and adds them to the job.

Cloud GPU

RunPod API

Rents a suitable GPU, installs ComfyUI, nodes and weights from HuggingFace, watches idle time and limits.

Frames

ComfyUI · Qwen-Image 2.1 / Fibo 2 + LoRA

Batched, with ControlNet and multi-reference; face upscale as a separate graph.

Video

ComfyUI · MiniMax H3 i2v / ref2v

Clip with audio from a frame, RIFE interpolation, SageAttention speed-up.

QC

Python gates

Automatic checks: artifacts, face, size, duration. Rejects never move on.

Edit

Remotion / HyperFrames · pose and music analysis

Track selection, cuts on the beat, text and subtitles.

Publish

Upload-Post · Telegram bot

Post to social media and a Telegram report: what shipped, what failed and why.

LoRA

A character you recognise in every frame

Dataset frame 1 Dataset frame 2 Dataset frame 3 dataset → training →
LoRA generation, frame 3 LoRA generation, frame 5 LoRA generation, frame 7 LoRA generation, frame 8
ModelsFlux, Qwen-Image 2.1, Fibo 2
Trainingai-toolkit, rank 16, flowmatch, adamw8bit, bf16, quantization
Dataset43 frames, captions “trigger + scene”, facial features left out
Checkpoint pickcompared checkpoints from 250 to 3000 steps
LoRA stack per framecharacter 1.0 + camera style 0.7 + turbo
Video LoRAsrealism and turbo for MiniMax H3
ComfyUI

My own workflows

Screenshots from a live ComfyUI. Tap an image to enlarge.

LoRA stack: character shot at a location

LoRA stack graph, full viewLoRA nodes and sampler
LoraLoaderModelOnly ×2Qwen-Image 2.1 int8KSampler res_2m/betamulti-ref encode

My LoRA + camera-style LoRA; the location comes in as a reference.

ControlNet depth: placing the character into a location

ControlNet depth graph, full viewControlNet nodes
Qwen-Image Fun ControlNet UnionDiffSynth ControlNetModelPatchLoader

Scene depth keeps the geometry of the place, the LoRA keeps the face.

ControlNet pose: portrait from a pose

ControlNet pose graph, full viewPose nodes
ControlNet poseKSamplerAdvancedLoRA

Pose from a skeleton, two-stage sampling.

Masked face upscale

Face upscale graph, full viewMask and composite nodes
ImageCropFeatherMaskImageCompositeMaskedColorMatchdenoise 0.45

The face is cropped, redrawn with the LoRA and pasted back without a seam.

Ref → video: 4 references into a clip with audio

MiniMax H3 ref2v nodesSampler and video LoRA
MiniMaxH3ReferenceToVideoturbo LoRA 4 stepsSamplerCustomAdvanced

Face, outfit, pose and place as separate references.

Treadmill: 5 frame → video chains in one graph

Treadmill graph with five chains
Flux 2 Klein multi-referenceRIFE and video assembly
Flux 2 Klein MultiRefsubgraphs ×5RIFE VFIVideoCombinecleanGpuUsed

5 prompts go “prompt → frame → video”; the output is 5 finished clips.

Image → video with audio and acceleration

MiniMax H3 i2v and acceleration nodesInterpolation and audio
MiniMaxH3ImageToVideoSpectrumSageAttentionSolAttnVAEDecodeAudio

Speed optimisation on 4090/5090 without losing quality.

Multi-reference editing

Multi-reference edit graphReferences and Qwen encoder
Qwen-Image 2.1 Edit3 references

Replaces IP-Adapter: face, clothes and place go into the text encoder as images.

API integrations

Services I've wired together

Reference search

  1. An agent writes the query
  2. OpenCLI → Pinterest collects results
  3. Filtering and cropping in Python
  4. Upload to ComfyUI input

Cloud generation

  1. RunPod REST: GPU choice, retries, price cap
  2. Weights bootstrap from HuggingFace / Civitai
  3. ComfyUI /prompt → /history → download
  4. Pod deleted when done

Text and scripts

  1. Claude plays roles: writer, generation, editing
  2. OpenRouter / Gemini for one-off tasks
  3. Outputs checked by gates

Publishing and comms

  1. Upload-Post / Zernio publish the clip
  2. Telegram Bot API: reports and decision buttons
  3. Comment and stats collection
Python

The code behind it

Comfy_generation/tools52 files · 8.8k lines
ComfyUI API, RunPod, graphs
persona/tools22 files · 7.5k
references, comments, stats
Remotion/vision9 files · 5.1k
pose, steps, music rhythm
automation4 files · 2.3k
orchestrator, schedule, gates
telegram2 files · 1.5k
bot reports
autoposting6 files · 0.9k
publishing
# comfy_client.py — queue a graph in ComfyUI and wait for the result
def queue(url, graph):
    r = requests.post(f"{url}/prompt",
        json={"prompt": graph, "client_id": str(uuid.uuid4())}, timeout=30)
    data = r.json()
    if data.get("error") or data.get("node_errors"):
        raise RuntimeError(f"ComfyUI error: {data}")
    return data["prompt_id"]

def wait(url, prompt_id, timeout, interval=5):
    start = last_contact = time.time()
    while time.time() - start < timeout:
        job = poll_history(url, prompt_id)
        if job: last_contact = time.time()
        if time.time() - last_contact > UNREACHABLE_AFTER:
            raise RuntimeError("pod stopped or crashed")
        if job and job["status"].get("status_str") == "error":
            raise RuntimeError(error_details(job))  # which node failed and why
        if job and job["status"].get("completed"):
            return job
        time.sleep(interval)
Stack
PythonasynciorequestsTypeScriptRemotionHyperFramesComfyUIai-toolkitQwen-Image 2.1Fibo 2Flux 2MiniMax H3ControlNetRunPodHuggingFaceClaude CodeMCPGitLinux / macOS Agent engineering · advancedCloud GPU · advanced