Skip to content
L O A D I N G
L O A D I N G

Multidisciplinary Creative

Bill Kirtsos

I make things people use,
watch, hear, and play.

The short story

About Me

1234 /4

I started at 12, writing lyrics and composing songs. Nobody taught me. I just kept making things, and each thing taught me the next one: music led to recording, recording led to video, video led to design, design led to websites, and websites led to code. That is still how I work today.

At university I studied Economics, and during those years I understood what I really wanted to do. So I left, went all in on creative work, and never looked back. Since then I have co-owned a recording studio, co-founded a booking platform for live music, played and produced in bands, and in 2019 I opened savage.design, my own creative studio in Thessaloniki.

Because I learned every craft by hand, I can direct AI tools with judgment and taste. I build websites, web apps, and games by guiding AI, and I understand the code well enough to shape the architecture, review the output, and fix what is wrong. The same goes for images, video, and music: I generate first, then I edit and finish the work myself.

I care about honest work, clear communication, and simple solutions. When I take on a project, I treat it like my own.

“I learned each craft by hand, so I can guide AI tools with judgment and taste.”

Quick Facts

QUICK FACT 1

Based in Gudensberg, Germany

QUICK FACT 2

Running savage.design since 2019

QUICK FACT 3

15+ years in the creative industry

QUICK FACT 4

Learning German

1234 /4

Skills

What I Do

I work across the full creative stack. Not everything at once, but the right mix for each project.

UX/UI and visual design. I wireframe, prototype, and test in Figma, design responsive interfaces, and build brand identities from logo to print.

UX/UI design · Wireframing & prototyping · User testing · Branding & identity · Print & digital graphics · Figma · Photoshop · Illustrator

I build websites, web apps, and games by directing AI tools, mainly Claude Code and DeepSeek. I am not a traditional hand-coding developer, and I am not just prompting either. I guide the architecture, review every output, and fix what is wrong. These are the stacks I have shipped with:

Next.js & React · TypeScript · Node.js · PHP & Laravel · Astro · PostgreSQL & MySQL · Stripe payments · Tailwind CSS · GSAP animation · WordPress · HTML & CSS · SEO

Music has been with me since I was 12. I compose and produce, design sound, and edit video in Premiere Pro. With AI, I generate first, then edit and finish the result myself.

Music composition · Production · Sound design · Video editing · Premiere Pro · Audition · Suno · ElevenLabs · Kling.ai

I plan and run the digital marketing that supports the creative work: search, social, email, and the numbers behind them.

SEO & SEM · Social media strategy · Email campaigns · Analytics · Content creation

I have run my own studio since 2019. I handle projects end to end: scope, budget, timeline, team, delivery, and the client relationship.

Project management · Budgets & timelines · Client communication · Team coordination

Selected work

Favourite Projects

Gold Couture-P monogram above the PRESTIGE COMMUNICATIONS wordmark on black
Project 1 of 7

Prestige Communications

Logo & Brand Mark

A bespoke 'Couture P' monogram for an Athens marketing agency, with a chat bubble hidden inside the letterform.

savage.design homepage with the wordmark in front of a glowing white ring on black
Project 2 of 7

savage.design

Multilingual Creative Studio Website

My studio's flagship site: seven languages, a THREE.js fractal-orb hero and a WebGL lens effect on the portfolio grid.

greeksimmers.com hero reading 'Your Flight Starts Here' over an aircraft in cloud
Project 3 of 7

greeksimmers.com

Full-Stack Web Application

A flight-simulator booking platform with Stripe payments, a loyalty programme and an admin panel.

Poster frame from the video “SANCO Open Bin 5LT”
Project 4 of 7

SANCO Open Bin 5LT

A pure cylindrical form in bronze mat. Quiet, architectural, and timeless.

Split screen: an AI chat thread in Greek on the left, a live preview of a bakery website on the right
Project 5 of 7

Magic Admin

Conversational Website Management

A multi-tenant panel where clients edit their own sites by talking to an AI, with a live preview open beside the conversation.

Three-panel game screen: character sheet, Greek narration over a watermill scene, and a location panel
Project 6 of 7

What Do You Do

AI-Narrated RPG

A browser role-playing game where an AI narrates the world and a deterministic rule engine owns every dice roll.

Menu editor with category and item rows, each name repeated across English, Greek, German and Spanish fields
Project 7 of 7

Paper86

Restaurant Operations Platform

A multi-tenant platform for restaurants and cafés — menus, floor plans, staff and QR self-ordering, multilingual from the schema up.

Gold Couture-P monogram above the PRESTIGE COMMUNICATIONS wordmark on black

Graphic Design

Prestige Communications

Logo & Brand Mark

Role
Brand Designer
Timeline
2 weeks

I designed the complete logo identity for Prestige Communications, a digital marketing agency in Athens. The mark is a bespoke 'Couture P' monogram — a refined custom letterform that hides a chat-bubble silhouette inside its curve, a quiet nod to the heart of what Prestige does. The system pairs the monogram with an Orpheus Pro 'PRESTIGE' wordmark and a tight-tracked 'COMMUNICATIONS' sub-line for editorial presence and quiet authority. The brand is built on four pillars — Elegant, Influential, Bespoke, Trusted — and a deliberately restrained palette: Prestige Gold (#BF9B5C), Deep Black (#000000), and Soft Cream (#F5F0E8), with Poppins as the body companion typeface. A full logo suite — dimensional, gradient, and solid variants across horizontal, stacked, and symbol-only lockups in light and dark — was delivered in AI, EPS, PDF, SVG, and PNG, alongside in-context mockups (gold-foil embossed business cards on black cotton stock, brushed-brass signage on walnut, and red-carpet event activations).

The challenge

Designing a wordmark that conveys premium agency credibility without slipping into generic luxury clichés — and building a monogram that hides a meaningful detail (a chat-bubble silhouette referencing the agency's work) without compromising the elegance of the letterform.

What I did

Drew the 'Couture P' as a bespoke serif letterform with sculpted curves, hiding a chat-bubble silhouette inside the bowl as a subtle metaphor for communication. Paired it with Orpheus Pro for the 'PRESTIGE' wordmark and a Poppins body face, all anchored by a restrained Prestige Gold + Deep Black + Soft Cream palette. Delivered a full suite (dimensional / gradient / solid, horizontal / stacked / symbol, light / dark) in AI/EPS/PDF/SVG/PNG with real-world mockups across business cards, brushed-brass signage, and event activations.

Built with

  • Adobe Illustrator
  • Logo Design
  • Brand Identity
  • Bespoke Letterform
  • Typography (Orpheus Pro, Poppins)
  • Color System
  • Brand Guidelines
Visit project
savage.design homepage with the wordmark in front of a glowing white ring on black

Web Development

savage.design

Multilingual Creative Studio Website

Role
Designer & Developer
Timeline
Ongoing

I designed and built savage.design, the flagship site for my freelance creative studio working out of a mountain village in Greece. The visual centerpiece is a THREE.js shader-driven fractal orb that persists across PJAX page transitions, paired with a custom WebGL 'inversion lens' hover effect on portfolio cards built on a shared renderer and an LRU texture cache. Architecture: vanilla PHP (no framework) with a custom PJAX router that enforces per-page init/cleanup contracts to prevent listener leaks and CSS contamination, GSAP and Lenis for motion and smooth scroll, and a PHPMailer-backed quote API with CSRF, honeypot, session rate-limiting, and GDPR consent. The site ships in 7 languages (EN / EL / DE / FR / ZH / DA / ES) with clean URL rewrites, hreflang alternates, language-aware Google Business reviews, and a comprehensive JSON-LD graph (Organization, CreativeWork, Service, AggregateRating, Review). Accessibility is WCAG 2.2 AA: skip link, modal focus traps, route announcements via a live region, keyboard-driven accordion and language switcher, prefers-reduced-motion handling. Deployed on LiteSpeed with custom deploy/rollback skills and a 24-project portfolio rendered server-side from JSON for SEO.

The challenge

Delivering a single-page experience with persistent WebGL animations across navigation, supporting 7 languages with clean URLs and hreflang, and shipping a custom WebGL lens hover effect that scales to dozens of portfolio cards without GPU contention.

What I did

Built a PJAX router with strict init/cleanup contracts to manage GSAP tweens and event listeners across pages, used a shared THREE.js renderer with an LRU texture cache for the portfolio lens, and structured i18n around URL prefix + cookie + Accept-Language fallback with hreflang for every alternate.

Built with

  • PHP
  • Vanilla JavaScript
  • THREE.js (WebGL)
  • GSAP
  • Lenis
  • Custom CSS
  • PJAX Router
  • Multilingual (7 languages)
  • JSON-LD / SEO
  • WCAG 2.2 AA Accessibility
  • PHPMailer
  • Quote API
Visit project
greeksimmers.com hero reading 'Your Flight Starts Here' over an aircraft in cloud

UX/UI DesignWeb Development

greeksimmers.com

Full-Stack Web Application

Role
Full-Stack Developer & Designer
Timeline
2 months

I designed and developed greeksimmers.com, a full-stack web application for a flight simulator business in Greece. The platform features a robust booking system with Stripe payments, a tier-based loyalty program, a magazine/blog system, and a comprehensive admin panel. Key features include dynamic working hours and closure periods, email templates for bookings and rescheduling, multilingual support (Greek/English), and GSAP scroll animations with glassmorphism effects. I implemented high security patches, responsive design across all pages, and optimized images with automatic WebP conversion. The project involved extensive client communication and iterative development across 4 phases.

The challenge

Building a complex booking system with overlapping slot protection, loyalty tiers, and secure payment processing while maintaining a polished user experience.

What I did

Implemented robust calendar validation, Stripe integration for live payments, dynamic admin settings that propagate across the site, and WCAG AA compliant responsive design.

Built with

  • Next.js
  • React
  • Tailwind CSS
  • Stripe
  • GSAP
  • Email Templates
  • Admin Panel
  • Authentication
  • Multilingual
  • Responsive Design
Visit project

Social Media Videos

SANCO Open Bin 5LT

Runtime
0:29
Format
Landscape 16:9
Published
27 May 2026

A pure cylindrical form in bronze mat. Quiet, architectural, and timeless.

Designed to bring balance and discreet elegance to the bathroom space.

How I made this

Created from scratch using AI-generated visuals and motion design.

I first designed a minimal Aegean-inspired bathroom atmosphere, focusing on warm plaster, natural light, and quiet architectural texture. Then I created a still wall image as the base visual, matching the same luxury bathroom mood.

Using that image as a reference in Kling, I animated only the smallest details: a very slow zoom into the wall and subtle movement in the soft shadows, as if sunlight was passing through nearby branches.

To complete the atmosphere, I added ambient sound design: distant gentle sea waves outside the bathroom and soft shower water running off-camera, creating a calm, immersive luxury hotel feeling.

Built with

  • Kling AI
Split screen: an AI chat thread in Greek on the left, a live preview of a bakery website on the right

Products & Platforms

Magic Admin

Conversational Website Management

Role
Product Design & Full-Stack Development
Timeline
Ongoing

Magic Admin replaces the traditional CMS with a conversation. Each client gets a split screen — an assistant on the left, a live preview of their own site on the right — and asks for changes in plain language, in English or Greek. The assistant reads and edits the real files, shows every tool call as it runs, and stages the result as a draft.

It runs as a single multi-tenant instance alongside the agency's existing client sites, with per-tenant credit accounting, a media library, webhooks, and an agency-side billing view over the top.

The challenge

A conversational editor has to be trusted with a live website. Every change needed to be reversible, every tenant's files had to stay sealed off from every other tenant's, and the cost of each model call had to be metered accurately enough to bill on — all while the reply streams in token by token.

What I did

Edits land in a draft layer rather than on the live site: publishing takes a lock, writes atomically, and records a snapshot that rollback can replay. Tenancy is enforced in the query layer, scoped by a tenant id taken from the session and never from the request. Usage is metered per call and converted to credits with an integer-safe formula, and the model sits behind a provider interface so a backend can be swapped without the chat route knowing. The front end is vanilla JavaScript with no framework and no build step, on a token system that carries AA-contrast pairs through both themes.

Gallery

Built with

  • Node.js
  • Fastify
  • MySQL
  • Vanilla JavaScript
  • Claude API
  • DeepSeek
  • Server-Sent Events
  • Sharp
  • PM2
  • Nginx
Three-panel game screen: character sheet, Greek narration over a watermill scene, and a location panel

Products & Platforms

What Do You Do

AI-Narrated RPG

Role
Product Design & Full-Stack Development
Timeline
Ongoing

What Do You Do is a browser RPG in which the game master is a language model. It narrates the world and voices its characters, while a deterministic TypeScript rule engine owns everything mechanical — dice, damage, travel, quests — so the story can be improvised without the rules ever becoming negotiable.

Characters are built in five steps and finish by answering an in-character questionnaire, which the model turns into a backstory, traits, fears and motivations. The narrator's language is chosen in that first step and locked for the life of the character, because the synthesized backstory, the memories and the entire exchange history are written in it.

The challenge

A language model will happily invent a rule, a number, or an outcome that suits the story it wants to tell. If the narrator decided whether an attack landed, nothing in the game would be falsifiable — and a second language could not simply be a translation layer, because the character's own history is generated prose.

What I did

Mechanics never leave the rule engine. The narrator receives the result of a roll and is asked to describe it, not to determine it: the perception check in the first screenshot is rolled, compared against a difficulty class and reported before a word of prose exists. Greek is a first-class narrator language rather than an interface translation — it is fixed at creation and the generated backstory, memories and exchanges are all written in it. State lives in Postgres with pgvector for recall, and the multiplayer server is separate from the web app in a Turborepo workspace.

Gallery

Built with

  • TypeScript
  • Next.js
  • Colyseus
  • PostgreSQL
  • pgvector
  • Drizzle ORM
  • Turborepo
  • Claude API
  • Better Auth
  • Docker
Menu editor with category and item rows, each name repeated across English, Greek, German and Spanish fields

Products & Platforms

Paper86

Restaurant Operations Platform

Role
Product Design & Full-Stack Development
Timeline
Ongoing

Paper86 is a multi-tenant platform for restaurants and cafés: menus, floor plans, staff and roles, waiter ordering, a kitchen display, and QR self-ordering for guests. One owner runs several stores under a single organization, each on its own subscription.

It is multilingual in a way that matters operationally. The interface ships in English, Greek and German, but a store's menu content is not limited to those — an owner picks whichever languages they actually serve in, and every content form grows a field per language. A guest scanning the QR code at their table reads the menu in the language they choose, prices and modifier groups intact.

The challenge

Restaurant content is not one language with translations bolted on. A taverna in Athens wants Greek and English; a place in Berlin wants German and Turkish; a hotel restaurant may want six. The set is not known when the schema is written, and hard-coding a column per language would have meant a migration for every new market.

What I did

Store content locales are free-form ISO codes with English as the required primary, so adding a language is a settings change rather than a migration. Content forms render one input per configured locale and the server actions parse fields dynamically from the store's own locale list, so the same code path serves a two-language store and a ten-language one. Everything else is scoped by tenant: an organization owns stores, stores own menus, tables and staff, and the data layer runs inside a tenant context rather than trusting an id from the request.

Gallery

Built with

  • Next.js
  • TypeScript
  • PostgreSQL
  • Drizzle ORM
  • Tailwind CSS
  • better-auth
  • next-intl
  • Zod
  • Stripe
  • Vitest
  • Playwright

Sound