PORTFOLIO · 2026LIOR ZITSER
000 / 100

LIORZITSER

A visual designer and creator working at the intersection of design, technology, and machine intelligence, where human craft directs the system, and the system never directs back.

CREATIVE DESIGNER // AI SOLUTION ENGINEER
TEL AVIV, IL

SCROLL

02 / ORDER // DISORDER

“You don't need a license to have fun. I infuse every project with a sense of adventure and exploration, experimentation and playfulness lead to innovative solutions.”

I'm two things at once. A designer who sets type, builds systems and directs images by hand, and an engineer who writes the code that generates them. Design, to me, is the human act of pulling order out of a machine's noise. One hand on the craft, one on the code.

03 / SELECTED WORK

Seven projects.

Educational, commercial and personal: product systems, brand direction, generative film, editorial and type. Each is a finished frame. Each can be peeled back to the source that made it.

01 / Desktop App · Engineering

Spork

A small, fast, native Git client. Pure black, all monospace.

Role
Design & Engineering
Context
Personal
Year
2026
Discipline
Product Design / Rust / Tauri / React / Open Source
Tools
Rust · Tauri 2 · React 19 · TypeScript · shiki

Spork is an open-source desktop Git client with a pure-black, all-monospace interface. It drives the git you already have installed: clone, history with graph lanes, staging, commits, sync, stashes, tags, and a syntax-highlighted file browser, while authentication stays entirely with your system git's credential helper. Built with Rust, Tauri 2, React 19 and shiki, it runs locally with no telemetry, and is hardened against hostile repositories (no shell, clone-protocol guards, symlink containment, strict CSP).

Spork
Spork
Spork
Spork

02 / Generative AI · Film

Siberian Prison

A short film about my great-grandmother, exiled to a Siberian prison under Stalin. She never spoke of it.

Role
Direction, AI Pipeline, Edit
Context
Academic
Discipline
Generative AI / Film / Storytelling
Tools
Midjourney · Photoshop · Kling AI
Siberian Prison

As part of a workshop with Liron Kroll, I made a short film about my great-grandmother, who was exiled to a Siberian prison in her early adult life during the reign of Stalin, something she never spoke of. Every image was generated in Midjourney and refined in Photoshop, then brought to motion with Kling AI. The result is a quiet, haunting reconstruction of a memory that was never told.

Siberian Prison
Siberian Prison

03 / Product · UX/UI

Sneakercon Live

A dual-app marketplace that turns a sneaker convention into a real-time trading floor.

Role
Product & Visual Design
Context
Academic
Discipline
Product Design / UX/UI / Design System
Sneakercon Live

Sneakercon Live is a comprehensive, dual-app ecosystem that transforms the convention into a dynamic, real-time sneaker trading platform. It unifies inventory management, market analytics, interactive mapping and negotiation tools under a single minimalist design system: a neutral palette with strategic color accents that keep the focus on the product and the deal.

Sneakercon Live
Sneakercon Live
Sneakercon Live
Sneakercon Live
Sneakercon Live
Sneakercon Live
Sneakercon Live

04 / Promo · Music

EDEN: Crash

A promo film for EDEN's Barcelona show, built on the narrative of the song “crash”.

Role
Concept & Direction
Context
Academic
Discipline
Promo / Music / Direction
EDEN: Crash

EDEN, real name Jonathan Ng, is an Irish singer, songwriter and producer known for blending electronic, indie and alternative music. For his show at Sala Apolo in Barcelona, I created a promotional video built on the narrative of the song “crash”, combining a nostalgic aesthetic with melancholic color to emphasize EDEN's storytelling.

EDEN: Crash
EDEN: Crash
EDEN: Crash

05 / Product · Brand

Guini.io

All the creative visuals and direction for an early-stage event-supply marketplace.

Role
Visual and Creative Director
Context
Professional
Discipline
Brand / Product / Art Direction
Guini.io

As the former visual and creative director of this early-stage start-up, I was in charge of all creative visuals and direction for the app, tailored to help anyone organizing an event easily find and place an order with different suppliers. I set the brand language, the product visuals and the overall art direction.

Guini.io
Guini.io
Guini.io
Guini.io

06 / Editorial · Art Direction

Jun Takahashi

An artist's book and its online counterpart for an imagined Jun Takahashi exhibition.

Role
Editorial & Web Design
Context
Academic
Discipline
Editorial / Artist's Book / Art Direction
Jun Takahashi

Jun Takahashi is the soul behind UNDERCOVER, and the center of attention for an exhibition I curated entirely in my own head. I designed what the catalog (an artist's book) would look like, as well as its online counterpart: a study in pacing, image and restraint worthy of the work it documents.

DRAG OR SCROLL →

Jun Takahashi
Jun Takahashi
Jun Takahashi
Jun Takahashi
Jun Takahashi
Jun Takahashi
Jun Takahashi
Jun Takahashi

07 / Typography · Generative

Generative Typography

A triptych of posters for a Hebrew-language conference, drawn by code and printed on neon paper.

Role
Design & Creative Code
Context
Academic
Discipline
Typography / Generative Code / Print
Tools
p5.js
Generative Typography

A triptych of posters for the “First Language” (לשון ראשון) conference in Rishon LeZion, a two-day celebration of the Hebrew language spanning literature, comedy, music and media. The imagery is generated with p5.js code, letting the system improvise within typographic constraints; the final posters were printed on neon paper for a charged, physical presence.

Generative Typography
Generative Typography
Generative Typography

GENERATIVE SKETCH · DRAG THE LETTERS

11 / THE ENGINE ROOM

Where design becomes a tool.

The engineering half of the practice: where design intent becomes a tool and the workflow becomes programmable. I ship 16 custom ComfyUI nodes in Python (lzits-nodes). Pick any of them and read the real source.

16 SHIPPED NODES · SELECT TO INSPECT

PROMPT & MODEL UTILITIES

IMAGE & DETECTION

BERNINI-R DIFFUSION

nodes/bernini_runner.py·BerniniRunSingleGPU[excerpt]OPEN ON GITHUB ↗
1class BerniniRunSingleGPU:
2 """Run ByteDance/Bernini infer_single_gpu.py from ComfyUI.
3
4 Kijai-inspired wrapper shape: keep heavy model code out of ComfyUI import,
5 expose typed config/case/generation helper nodes, and stream subprocess logs.
6 """
7
8 CATEGORY = "lzits nodes/Bernini"
9 DESCRIPTION = "Runs upstream Bernini infer_single_gpu.py in a subprocess. Prefer connecting Bernini Model Config + Case Builder + Generation Settings for cleaner graphs."
10 RETURN_TYPES = ("STRING", "STRING", "STRING", "STRING")
11 RETURN_NAMES = ("output_path", "case_json", "command", "log")
12 FUNCTION = "run"
13 OUTPUT_NODE = True
14
15 @classmethod
16 def INPUT_TYPES(cls):
17 return {
18 "required": {
19 "bernini_repo_dir": ("STRING", {"default": str(Path.home() / "Bernini"), "tooltip": "Fallback if bernini_config is not connected."}),
20 "python_executable": ("STRING", {"default": sys.executable, "tooltip": "Fallback if bernini_config is not connected."}),
21 "config": ("STRING", {"default": str(Path.home() / "Bernini-R-Diffusers"), "tooltip": "Fallback if bernini_config is not connected."}),
22 "high_noise_ckpt": ("STRING", {"default": "", "tooltip": "Optional fallback if bernini_config is not connected."}),
23 "low_noise_ckpt": ("STRING", {"default": "", "tooltip": "Optional fallback if bernini_config is not connected."}),
24 "prompt": ("STRING", {"multiline": True, "default": "A cinematic shot of a marble statue coming to life."}),
25 "task_type": (TASK_TYPES, {"default": "t2i"}),
26 "guidance_mode": (GUIDANCE_MODES, {"default": "t2v"}),
27 "output_path": ("STRING", {"default": "outputs/bernini_output.png"}),
28 "num_frames": ("INT", {"default": 1, "min": 1, "max": 241, "step": 1}),
29 "width": ("INT", {"default": 848, "min": 64, "max": 2048, "step": 8}),
30 "height": ("INT", {"default": 480, "min": 64, "max": 2048, "step": 8}),
31 "num_inference_steps": ("INT", {"default": 40, "min": 1, "max": 100, "step": 1}),
32 "seed": ("INT", {"default": 42, "min": 0, "max": 2147483647, "step": 1}),
33 "timeout_seconds": ("INT", {"default": 1800, "min": 60, "max": 86400, "step": 60}),
34 },
35 "optional": {
36 "bernini_config": ("BERNINI_CONFIG", {"tooltip": "From Bernini Model Config. Overrides repo/python/config/checkpoint widgets."}),
37 "bernini_case": ("BERNINI_CASE", {"tooltip": "From Bernini Case Builder. Overrides prompt/media widgets."}),
38 "generation_args": ("BERNINI_GENARGS", {"tooltip": "From Bernini Generation Settings. Overrides generation widgets."}),
39 "case_json_override": ("STRING", {"multiline": True, "default": "", "forceInput": True, "tooltip": "Optional raw JSON override if not using bernini_case."}),
40 "image_path": ("STRING", {"default": ""}),
41 "video_paths": ("STRING", {"multiline": True, "default": ""}),
42 "reference_images": ("STRING", {"multiline": True, "default": ""}),
43 "negative_prompt": ("STRING", {"multiline": True, "default": ""}),
44 "system_prompt": ("STRING", {"multiline": True, "default": ""}),
45 "max_image_size": ("INT", {"default": 848, "min": 64, "max": 4096, "step": 8}),
46 "fps": ("INT", {"default": 16, "min": 1, "max": 120, "step": 1}),
47 "flow_shift": ("FLOAT", {"default": 5.0, "min": 0.0, "max": 20.0, "step": 0.1}),
48 "omega_V": ("FLOAT", {"default": 1.25, "min": 0.0, "max": 20.0, "step": 0.05}),
49 "omega_I": ("FLOAT", {"default": 4.5, "min": 0.0, "max": 20.0, "step": 0.05}),
50 "omega_TI": ("FLOAT", {"default": 4.0, "min": 0.0, "max": 20.0, "step": 0.05}),
51 "omega_scale": ("FLOAT", {"default": 0.8, "min": 0.0, "max": 20.0, "step": 0.05}),
52 "eta": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}),
53
54 # excerpt: full class (215 lines) on GitHub

REPRESENTATIVE GRAPH

INPUTLoad Image
NODEYOLO Get Boxes
NODEImage Outpaint
NODELoRA Selector
GPUBernini Run · GPU
OUTPUTLoad Output
Role
Engineering
Context
Open Source
Year
2025
Discipline
AI Engineering / ComfyUI / Python
Tools
Python · ComfyUI
VIEW lzits-nodes ON GITHUB ↗

12 / BIOGRAPHY

The human behind the system.

I'm Lior Zitser, a creative designer and AI solution engineer based in Tel Aviv. Right now I'm a Creative AI Specialist at PLAYSTUDIOS, working where games, design and generative systems meet.

I hold a B.Des in Visual Communication from the Holon Institute of Technology (HIT), graduated 2025. Before that I built my foundation across HackerU and Colosseum, and served as visual and creative director at Guini, an early-stage start-up where I owned all of the creative direction.

My practice runs on two tracks that I refuse to separate. On one, I design: systems, brands, editorial, film, type. On the other, I engineer the machines that generate images: custom ComfyUI nodes in Python, diffusion pipelines, p5.js, and hands-on work with Midjourney, Kling AI and Stable Diffusion.

I infuse every project with a sense of adventure and exploration, because you don't need a license to have fun.

CURRICULUM VITÆ

2025 / NOW
PLAYSTUDIOSCreative AI Specialist
2025
HackerUAI Design Lecturer
2021 / 2025
Holon Institute of TechnologyB.Des Visual Communication
2023
ColosseumTeaching Assistant
2022 / 2023
GuiniVisual and Creative Director

13 / CONTACT

Let's develop
something.

lzitser23@gmail.com

ALWAYS OPEN TO COLLABORATIONS & GOOD CONVERSATIONS · FROM TEL AVIV

contact · zsh
lior_zitser portfolio // type 'help' to talk to the machine.
lior@lz:~$