Skip to content
AI-native

Feri Horvath, Product Designer

I solve complex problems for startups and larger companies, and design visuals from pitch decks to coded landing pages.

Case studies

  • A UX audit, a starting point that fills itself in, and a coded prototype that ended up being the thing decisions were made on.

  • Bringing GitHub PR-style review into the GraphQL federation workflow.

  • A multi-chain DeFi portfolio app, redesigned from a basic build into a clear, scalable product.

About

Feri Horvath taking a selfie on a river, holding a kayak paddle, smiling in a white cap and sunglasses
I really love paddling.

Product Designer, 8+ years in design. SaaS B2B [Grafbase], DeFi [KeyFi], and crypto [SelfKey]. Started in 2014 in frontend, marketing sites in iGaming [Mr Green], then a hybrid UI design and frontend role at SelfKey. A dedicated Product Designer from KeyFi on.

Independent since January 2026, working with teams from startups to enterprise.

  • Product DesignerIndependent · Product design for startups to enterprise · Remote
    to now
  • Product DesignerGrafbase · SaaS, GraphQL Federation platform · Remote
    to
  • Product DesignerKeyFi · DeFi, multi-chain portfolio and yield platform · Remote
    to
  • Full Stack UI DesignerSelfKey · Blockchain, digital identity · Remote
    to
  • Front End Web DeveloperMr Green · iGaming, online casino marketing sites · Malta
    to
  • Front End Developer and UI DesignerStateshifter Labs · Web apps and prototyping · London, UK
    to

References

  • Signal, The Problem section from the landing page
  • Grafbase, Agent Security section
  • Grafbase branching feature
  • Grafbase brand visual
  • Grafbase VX-001, variant 2
  • Grafbase VX-001, variant 3
  • Grafbase career page, code-as-job-listing UI
  • Grafbase AI overview
  • Grafbase Nexus product page
  • Intelligent Waveforms 011, music cover
  • Intelligent Waveforms 007, music cover
  • KeyFi mobile dashboard
  • KeyFi mobile borrow flow
  • Designhorf brand visual 001
  • Designhorf brand visual 002

Closing the gap

I work on the gap between design and development, and try to bring the two closer with every project.

Across several projects, iterating in a coded prototype and handing that over, instead of a Figma file, proved more efficient, and the teams chose to keep working that way.

This is how a new feature gets built now: a prompt, the design rules and a short research, two or more directions to pick from, then the code rules and a pull request.

Once the tokens and components were in place, feedback came faster and iterations got shorter. The team could walk every path themselves, and thanks to the rule set they could try out new features while the result stayed on brand and consistent.

  1. In the terminal, on the branch feature-pricing-section, the prompt is typed: add a pricing section.
  2. The design rules are read and saved to the session memory. At the same time a research page collects real pricing pages and draws two pricing sections in the rules, each with a Free and a Pro card: one centered with smaller prices, one left aligned with a dark Pro card and an outlined button on Free.
  3. The left aligned direction with the dark Pro card is picked.
  4. The code rules run: the existing PricingCard component is reused, a hardcoded colour becomes the component token pricingCardFeaturedBackground, and lint, types and the design system guards pass.
  5. The result runs on localhost as a working prototype: the cursor hovers the Pro card and its Get started button, and pull request 42 is ready with an Open PR button.

Blog

  • I didn't have access to the code.

    There was a project where the repo existed, but I had no access to it. No Figma file either, just a live app and a browser inspector — how I map an existing design system before building anything on top of it with AI.

  • Zero to production: How I design from Terminal, without Figma

    Multiple projects, no Figma. A complete landing page with a design system, mobile responsiveness, and animated components — built entirely from the command line.