Penpot is the free open-source design tool that bridges the gap between designers and developers.

Penpot enables true collaboration between designers and developers. Hand-off drama disappears, thanks to features like CSS Grid, Flex Layout and the Code Inspect tab.

Designers can create stunning designs, interactive prototypes, design systems at scale, while developers enjoy ready-to-use code and make their workflow easy and fast.

Penpot UI

It’s the only product design tool that can be web-based or self-hosted. The tool works with open web standards (SVG, CSS and HTML) giving you ownership of your files.

For more information, visit

Our Jobs

Software Engineer

⚖ How we value experience

For us, a senior is someone who, regardless of years on the job, has dealt with tough development issues, finding solutions and learning along the way. From our perspective, it’s possible that a senior might be someone with relatively “few” years of experience but who has faced complex development challenges. On the other hand, a mid-level might be someone who, despite many years in the workforce, has had a more specialized experience and hasn’t faced those types of challenges.

Step into our world: the challenges you’ll face with us

We want to share the challenges we encounter that keep us motivated and in constant learning mode. The following list doesn’t mean we expect you to handle all of them right away—your ability to tackle these will depend on your experience. But our goal is for you to grow with us so you can hit the ground running in the future.

  • Vector drawing development: implementing vector drawing with transformations using DOM/SVG as the rendering base requires knowledge of matrix calculations and a high awareness of DOM performance.
  • Editing system design and implementation:designing and implementing an editing system for the drawing engine, with a strong focus on redo/undo capabilities and concurrent editing.
  • Complex data structures validation:using and validating complex data structures for structural, semantic, and referential integrity. Given the high interactivity of our application, these structures are often eventually consistent.
  • Low-level language module development:developing application modules in low-level languages like C, C++, or Zig to transition parts of the application to WebAssembly (WASM).
  • Highly interactive interface development:creating a highly interactive interface that requires coordinating multiple sources of events (e.g., an SVG path editor).
  • Custom rich text editor development:developing an ad-hoc rich text editor with proper handling of RTL (Right-To-Left) text and IME (Input Method Editor), and integrating it with SVG texts.
  • Performance optimization:coming up with creative solutions to performance issues when pushing the limits of browser capabilities. For instance, using bitmap thumbnails to offload parts of the SVG DOM in a highly concurrent and eventually consistent environment, while correctly handling possible race conditions.
  • New functionality:adding new features using ClojureScript and Reactive Streams (RX).

Profile and skills

🪐 What you will be bringing to your new role

We believe that education can be acquired in many ways, not just through a degree. That’s why we don’t require specific formal education, but we do expect you to have experience in the following areas:

  • Functional language programming paradigm experience (Clojure/Clojurescript, Scheme, Haskell, Scala…).
  • Experience in or willingness to learn the Clojure/Clojurescript functional programming language.
  • Background as a frontend developer (with an emphasis on deep knowledge JS and Browser APIs).
  • Experience working with HTML and CSS.
  • Enthusiasm for crafting robust user interfaces.
  • Languages skills: proficient in spoken and written English (B2 level) and proficient in spoken and written Spanish (B1 level)

✨ Bonus points: elevate your profile

For us, your experience is defined by your ability to tackle and enjoy solving problems like the ones we face. If you’ve encountered similar challenges, you can probably check off several points from the following list.

  • Enthusiasm for exploring low-level programming languages (C++, Zig).
  • Experience working with JS frameworks (React or similar).
  • Experience in developing production code with thousands of users.
  • Knowledge of web front-end testing (Jest, Cypress, etc.).
  • Prior experience or a keen interest in open-source projects.
  • Experience or interest in agile methodologies in a professional setting.
  • Track record of collaborative engagement within cross-functional teams (including designers, marketing professionals, backend developers, etc.).
  • Ability to ask the right questions for effective product development.
  • Understanding how JavaScript performs (knowing about V8 and SpiderMonkey is a big plus).
  • A solid grasp of RxJS.

🫂 Who will you be working with?

At Kaleidos we have several teams: the Community team, the QA team, the Infrastructure team, and the Product team. We’re all rowing in the same direction to drive Penpot forward, but this position will be to join the daily day of the Product team. Would you like to take a peek at who we are?

🙌 What do we offer?

  • 💰 Salary:
    • [Mid-level] €40-50k (gross annual salary).
    • [Senior] €50-60k (gross annual salary).
  • 📜 Permanent contract. We’re looking for someone to stay with us for the long run!
  • ⏰ Flexible hours. Even better! We all work from 10am-2pm CET. You can work the rest of your hours whenever you want. Whether you’re an early bird or a night owl, you’ll be in good company!
  • 🌍 100% remote position. We maintain an office in Madrid (Spain), however, attendance at this location is discretionary. You are welcome to work remotely from any location with a reliable internet connection, provided that we share a time zone CET +/- 2 or you may choose to come to the office as often as you want.
  • 🏝 23 days of paid leave, plus December 24th and 31st, and the possibility to ask for 10 extra non-paid leave days. We’re super flexible with your dates, you just need to make sure it’s fine with your team.
  • 📅 Choose the holiday calendar of where you live or from the headquarters (Madrid).
  • 📚 Continuous learning with internal and external training, conferences, and events (as a general rule we usually cover 100% of the cost). You’re encouraged to experiment with new best practices!
  • 🇺🇸 🇪🇸 Language classes on the house (eng & span): classes paid for by the company as part of your work schedule.
  • 🤩 2 PIWEEKs per year! A PIWEEK is a freeform week-long hackathon where you pause your day-to-day work and focus, either alone or in a team, on a cool project! Penpot was one of the projects born in past PIWEEKs!
  • 🖥️ Elevate your workspace. We provide a budget every 3 years to renew the equipment and after 3 years you can keep the “old” computer equipment!
  • 🔝 An environment where your opinion matters. We have a culture of a consensus-driven decision-making process. You’ll quickly find yourself being involved in all Kaleidos’ things.
  • 🔓 An open-source company. Our products are open-source and we support the open source environment as much as we can. We’re fully committed.
  • 🤝 Self-organized teams: we believe that providing autonomy and independence is key for personal and collective accountability. Teams at Kaleidos operate internally with very little hierarchy and enjoy the freedom to better organize themselves.
  • ❤️ Alan’s health insurance through flexible compensation (coverage only in Spain).
  • 🏹 Monthly activities for those who want to, of course, do something fun as a group: ice skating, bowling, archery, kayaking…

➡️ What is the process like?

Send an email to with the subject line “Software engineer”, tell us where you saw the job offer, and don’t forget to attach your CV. You will receive a response from us as soon as possible.

  1. If your CV meets our requirements, we will invite you to have a 15-mins chat to understand your profile and your desires better.
    At that point, if we’re aligned, we would love you to write a cover letter about your experience and why you’re interested in joining Kaleidos.
  2. 1.5-hour culture interview, to get a sense of how you see our culture, clear up any questions, get to know you more deeply, and for you to also get to know us.
  3. 1.5 hour technical interview. We’ll take this time together to review your projects. The aim is to explore how you approach things, your reasoning, and how you tackle the challenges.
  4. 1-hour interview with Pablo, our CEO. Consider this step an interview to dive deeper into Kaleidos and ask whatever you’d like!
  5. Optional: meet with two people from Kaleidos for a private conversation to ask any questions you may have about the company and the position.