<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Turo López Sanabria]]></title><description><![CDATA[Head of DesignOps at Adevinta]]></description><link>https://turolopezsanabria.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!iHWp!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a76b7e7-35c8-4ecf-8426-71f5dbcbb158_751x751.png</url><title>Turo López Sanabria</title><link>https://turolopezsanabria.substack.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 07 Jul 2026 22:08:46 GMT</lastBuildDate><atom:link href="https://turolopezsanabria.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Turo López Sanabria]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[turolopezsanabria@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[turolopezsanabria@substack.com]]></itunes:email><itunes:name><![CDATA[Turo López Sanabria]]></itunes:name></itunes:owner><itunes:author><![CDATA[Turo López Sanabria]]></itunes:author><googleplay:owner><![CDATA[turolopezsanabria@substack.com]]></googleplay:owner><googleplay:email><![CDATA[turolopezsanabria@substack.com]]></googleplay:email><googleplay:author><![CDATA[Turo López Sanabria]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Agentic Design Systems: The Agreement Has a New Reader ]]></title><description><![CDATA[On Design Systems, AI agents, and the undeniable value of human decisions.]]></description><link>https://turolopezsanabria.substack.com/p/agentic-design-systems-the-agreement</link><guid isPermaLink="false">https://turolopezsanabria.substack.com/p/agentic-design-systems-the-agreement</guid><dc:creator><![CDATA[Turo López Sanabria]]></dc:creator><pubDate>Thu, 28 May 2026 12:43:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iHWp!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a76b7e7-35c8-4ecf-8426-71f5dbcbb158_751x751.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There is a question I ask at the start of every Design System I build: how do we name things? How do we name, say&#8230; the token for the blue colour?</p><p><code>brand-color. main. primary. blue. sky.<br><br></code>Every team has a name, and every name carries a different meaning, a different role, a different place in the hierarchy. They are not interchangeable. And figuring out which one, and why, deserves a real conversation before a single line of code is written.</p><p>This has been my obsession for many years. Not the colours. Not the components. The agreement on the basics, before anything else is built on top of them.</p><p>When we built Panot at Fotocasa Group, we settled on <code>main</code>. A variable in Figma. In CSS, <code>--colors-main</code>. In Kotlin, a resource reference. In Swift, something else again. Every platform translated it differently. Every platform called it the same thing.</p><p>I did not know, when we made that decision, that there would be a fifth reader of that token within a year. An AI agent. But when it arrived, <code>main</code> was already there, waiting, legible. Not because we could read the future. Because we had agreed.</p><div><hr></div><h2>The agreement has always had more readers</h2><p>I have been building Design Systems since 2017. At eDreams. At Schibsted, and then across Adevinta, which was the umbrella for Kleinanzeigen, Leboncoin, and many others. Across countries and companies that often had nothing in common except the problem they were trying to solve. The tools changed: Sketch became Figma, Sass became CSS Variables, JS became TypeScript, KSS became SUI Studio, SUI Studio became Storybook, then MDX. The problem never did.</p><p>The problem is always: how do you make a decision that survives the gap between the person who made it and the person who needs to execute it? That gap started between two humans in the same room. Then between designers and developers on different floors. Then between teams in different countries, working in different codebases. Each time it widened, the system had to become more legible, more structured, more explicit.</p><p>The agent is just the newest reader across that same gap. But the most unforgiving one. A developer can ask a question. An agent cannot. A developer can infer your intent from context, history, and the coffee conversation last Tuesday. An agent reads what is written. Nothing more.</p><p>If a pattern is broken and undocumented, the agent copies the broken pattern. If a decision was made in a Slack thread that nobody saved, the agent has no access to it. If your token naming is inconsistent, the agent interprets the inconsistency as intent.</p><p>This is not a new problem. It is the oldest Design Systems problem, running faster and at greater scale than ever before.</p><div><hr></div><h2>Rules still come first</h2><p>I have moved my work from one tool to another a Million times. Corel to Flash, from Flash to Photoshop, from Photoshop to Fireworks, from Fireworks to Sketch, from Sketch to Figma. Each move felt significant at the time. Each tool changed how I worked, what I could do, how I communicated with developers.</p><p>None of them changed what came first.</p><p>Rules. Then processes. Then tools.</p><p>This remains true in the era of AI. I hear conversations every day about which AI tool is the right one: Cursor or Claude, Lovable or something else, GitHub Copilot or a custom agent. These are not the wrong conversations. But they are the third conversation. The first conversation is: what are the rules your system operates by? What are the agreements? What is the source of truth?</p><p>An AI agent given access to a poorly governed Design System will not fix it. It will accelerate it. The entropy compounds faster. The inconsistencies multiply with every generation. Governance has never mattered more than it does right now, precisely because the tools are so powerful.</p><p>Adoption of a Design System will be easier with AI. Any developer can now use a well-documented component without deep system knowledge: the agent can translate the intent into correct code. But diverging from the Design System will be easier too. Anyone can generate a bespoke component in seconds. The pull away from the system is faster than it has ever been.</p><p>Direction, governance, and vision are not administrative overhead. They are the product.</p><div><hr></div><h2>What it means to build for a reader who cannot ask questions</h2><p>A Design System that can be read by agents needs the same thing as one that can be read by developers from a different country, speaking a different language, working in a different codebase: explicit decisions, structured naming, and documentation that does not assume shared context.</p><h3>The token work is the foundation.</h3><p>Semantic naming is not an aesthetic preference. It is the contract. The agent needs to know not just what colour to use, but why that colour exists, what surface it belongs to, what it signals to the user. Tokens without semantics are just variables. Semantics without documentation are just intentions.</p><p>The agent needs to know what to reuse and what to respect.</p><ul><li><p><strong>For reuse:</strong> examples for every component, clear prop definitions and types, and test coverage that confirms the component behaves as specified. Without this, the agent defaults to whatever pattern it has seen most often in the wild. And the most common pattern on the web is not your brand. It is everyone else&#8217;s.</p></li><li><p><strong>For respect:</strong> automated tests that catch regressions, and human sign-off before components reach production, which is not a bottleneck but where the agreement gets enforced.</p></li></ul><h3>Documentation is easier to produce than it has ever been.</h3><p>An AI can generate documentation for a component in seconds. The problem is maintenance. The problem is changelogs. Current AI workflows do not track history. They do not know that this component used to work differently, or why the decision was made to change it. Documentation that cannot be maintained is not documentation. It is debt that looks like progress.</p><p>The organisations that will build the best agentic Design Systems are the ones that treat documentation as infrastructure, not output. That means versioning, changelogs, decision records, and a culture of writing down not just what, but why.</p><div><hr></div><h2>AI earns its place. Just not at the top of the org chart.</h2><p>There is a version of the AI-first workflow story that goes like this: AI generates the options, AI selects the best one, AI ships the result. Humans review, optionally, when there is time.</p><p>IMO, that&#8217;s the wrong version. Not because AI is unable to generate good options: it can, and watching it work is genuinely remarkable. But because taste is not a filter applied at the end of a process. Taste is the process. And taste is where brand lives.</p><p>If you let the machine decide which of its own outputs is best, you will get competent, legible, optimised experiences that look like everything else on the web. The homogenisation of digital products is not a distant risk. It is already visible. It is what happens when every team uses the same tools, the same models, and the same defaults, without a human in the room who has a point of view.</p><p>The human&#8217;s job in an AI-first workflow is not to approve or reject. It is to set direction, hold the brand, and make the calls that the machine cannot make: not because the machine is incapable of generating an answer, but because the answer requires conviction, not calculation.</p><h3>Here is what only humans can do in this new model.</h3><p><strong>Adoption</strong>. Building a Design System that people actually use requires humans to trust that other humans are going in the right direction. You cannot automate that trust. I have seen it at every scale: Developers by a coffee machine at eDreams, ten brands across four verticals at Adevinta Spain, twenty builders and hundreds of consumers across four countries at Spark. The technology was never the hardest part. The belief was.</p><p><strong>Agreements under conflict</strong>. When a team is divided on a direction: which pattern to adopt, which brand aesthetic to commit to, which tradeoff to accept, a machine will give you its most statistically likely answer. But organisations do not run on statistical likelihood. They run on intentions and agreement. And that requires a human to say: we are going this way, and I am accountable for that decision.</p><p><strong>Visibility and advocacy</strong>. An agent can generate a dashboard, track adoption metrics, produce a report. What it cannot do is walk into a room full of sceptical designers, PMs, and engineers and make them believe the system is worth committing to. That is a human activity. It always has been.</p><p><strong>The craft itself</strong>. There is something about how we design together: in a shared canvas, handing work between collaborators, watching someone else continue what you started, that is core to the profession. AI agents can do something that looks like this. But they are taking out the experience of designing. The friction of collaboration is not inefficiency. It is where the ideas improve.</p><div><hr></div><h2>The greatest moment for the craft</h2><p>None of this makes me pessimistic about AI. It gives me clear confidence: This is the greatest moment in the history of our craft.</p><p>For as long as I have been designing, there has been a drawer. Every team has one, physical or metaphorical. It is where the good ideas go when development capacity runs out. The beautiful flow that was too expensive to build. The interaction that was technically correct but nobody had time to code. The experience that would have been spectacular and never shipped because the cost was prohibitive.</p><p>That drawer won&#8217;t be needed anymore. The distance between an idea and a working prototype has collapsed. Designing spectacular experiences is no longer expensive. It is fast. What was a constraint of resources is becoming a constraint of imagination only.</p><p>The constraints that shaped how we worked are falling away one by one. Designers will finally work with real data: actual content, actual users, actual edge cases, not representative samples and placeholder text. The blank page is disappearing, replaced by ten starting points in the time it used to take to open a new file. And the pitch deck is ending. Everything can now be a living prototype. A design leader in a strategy meeting can show, not tell.</p><p>In a world where everyone can ship, the rarest thing is not execution. It is vision. When any developer with an AI agent can build a functional interface in an afternoon, the question is no longer can we build it. It is should we, and does it feel like us, and does it serve our users better than what we had yesterday.</p><p>Designers will not lead with prototypes in this era. They will lead with direction. With opinion. With the kind of point of view that makes other people want to follow. Ideas matter more than ever. Not the ability to execute them: that gap has narrowed dramatically. The ones that will define products and brands are the good ones. The original ones. The ones that require a point of view about the world, not a statistical model of what has been done before.</p><div><hr></div><h2>It is still about people</h2><p>There is something that I think will finally get fixed, and that has frustrated me for most of my career: the tension between design and development. Between platforms and languages. Between the Figma file and the pull request. That tension existed because the translation was expensive and error-prone. The handoff was where intent went to die. AI does not eliminate that gap, but it compresses it in ways that make real collaboration possible for the first time. We are not there yet. But I can see it from here.</p><p>I wrote years ago that a Design System is not a Figma file. It is an agreement.</p><p>That definition has not aged. If anything, it has become more load-bearing. The system is now not only the agreement between designers and developers, between platforms and languages, between the brand and the product. It is the agreement that tells the machine what to do. The rules the agent follows when no human is watching.</p><p>Building a Design System that can scale is as hard as it has ever been. Not because the technology is harder: the technology is extraordinary, and it is only going to get better. But because the technology is only as good as the agreements behind it. And agreements are made by humans, between humans, in rooms where someone has to say: this is the direction, and I am responsible for it.</p><p>I do not have all the answers for what comes next. I do not think anyone does.</p><p>What I have is twenty-five years in design, nine of them building these systems, at every scale they come in. In companies that were growing and companies that were splitting. With two people and with twenty. Across four countries and four brands and too many Slack threads to count.</p><p>And what I know is this: when the system is working, it goes quiet. The friction disappears. The arguments stop. The developers build without worrying about the CSS. The designers focus on the next problem instead of re-solving the last one.</p><p>That silence is still what we are building towards. The same silence as before.</p><p>Just, now, with more readers in the room.</p><div><hr></div><p>Turo L&#243;pez Sanabria has over 20 years of experience in Design, and nearly a decade building the infrastructure that makes digital products coherent at scale. Five Design Systems. Several companies. Today, he works at the frontier where the line between building for humans and building for machines has started to blur.</p><div><hr></div><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://turolopezsanabria.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Panot: Built for Humans. Ready for Machines.]]></title><description><![CDATA[A story about forking the right system, a company splitting in two, and the moment machines joined the team.]]></description><link>https://turolopezsanabria.substack.com/p/panot-built-for-humans-ready-for</link><guid isPermaLink="false">https://turolopezsanabria.substack.com/p/panot-built-for-humans-ready-for</guid><dc:creator><![CDATA[Turo López Sanabria]]></dc:creator><pubDate>Wed, 27 May 2026 13:14:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iHWp!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a76b7e7-35c8-4ecf-8426-71f5dbcbb158_751x751.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Built with TypeScript, CSS with Tailwind, Storybook, Next.js, and server components. Designed in Figma. Documented with MDX with live previews.</em></p><div><hr></div><p>One day, Adevinta was a global company. The next, it was several smaller ones.</p><p>The investment fund that acquired it didn&#8217;t need a single platform serving Germany, France, Italy, and Spain simultaneously. It needed leaner, faster, independent businesses. So the split happened. Not as one clean break, but as several. The Spanish portfolio divided too. Coches.net, Infojobs, and Milanuncios went one way. Fotocasa and Habitaclia became their own company: Fotocasa Group. And with that came a question nobody had planned for just a year before: what do we do about the Design System?</p><p>The answer wasn&#8217;t obvious. We had two Design Systems to choose from.</p><p>SUI Components, which Fotocasa had been using for years, was ours in spirit. I had built it at Adevinta Spain. It had served ten brands across four verticals. But by then it was no longer evolving. We had stopped investing in it the moment we started building Spark, and that was the right call. You don&#8217;t maintain two systems in parallel. SUI was the past, and everyone knew it.</p><p>Spark was the future. We had spent over a year building it with nearly twenty people across four countries. TypeScript, semantic tokens, cross-platform theming, dark mode, Storybook, accessibility baked in from the start. It was the most ambitious, most intentional Design System I had ever been part of. The problem was that Spark now belonged to a company we no longer belonged to.</p><p>Three options. Fork SUI, which meant inheriting a system everyone had been quietly waiting to leave behind. Build from scratch, which was reckless given the speed the business needed to move. Or fork Spark, take everything we had just built at scale, and make it ours.</p><p>We took two weeks to decide. Then we forked Spark and named it Panot, after the iconic hexagonal tile that covers the pavements of Barcelona.</p><div><hr></div><h2>Two weeks, and then clarity</h2><p>Two weeks sounds fast for a decision of that scale. But we had already done the hard thinking. Every architectural choice in Spark had been argued over, tested against four brands, stress-tested against edge cases across three platforms. That work didn&#8217;t disappear when the company split. It travelled with us.</p><p>What we spent those two weeks doing was deciding what to keep and what to change. Not everything in Spark was right for Fotocasa Group. Spark had been designed to serve Kleinanzeigen, leboncoin, and Milanuncios simultaneously, which meant compromises that made sense for four countries but not for a single product group focused on real estate in Spain.</p><p>We kept the colour system wholesale. It was solid, semantic, and structured in a way that worked perfectly for real estate surfaces, where contrast and legibility are critical. We kept the TypeScript architecture, the token structure, the Storybook setup. We kept the semantic naming, <code>main</code>, <code>onMain</code>, <code>support</code>, <code>onSupport</code>, and everything it enabled.</p><p>We tweaked the font scale. Fotocasa Group had its own typographic identity, and Spark&#8217;s defaults didn&#8217;t fit. We also improved the documentation layer, moving to MDX with live previews so that every component in the system could be seen and tested in context, not just described.</p><p>Every decision was intentional. We made conscious choices about what to keep and why, what to change and why, and wrote it down so the team knew.</p><div><hr></div><h2>The team that made it possible</h2><p>I did not build Panot alone.</p><p>I set the direction. I made myself available. I was heavily involved in the decisions that mattered. But Andr&#233;s Alvarez, already a strong player in the house, took full proactive ownership of the technical execution. From the first day, he was setting up the architecture, configuring the infrastructure, planning the rollout, and moving faster than I ever could have if I&#8217;d been standing over his shoulder.</p><p>Joan, a designer on the team, partnered with Andr&#233;s on the design decisions and adoption strategy. Together, the two of them moved at a speed that surprised me.</p><p>I had learned from Spark that co-building between design and engineering is not optional. At eDreams, it was Javi Mota. At Adevinta Spain, it was the first Andr&#233;s. At Spark, it was the whole French engineering team. At Panot, it was Andr&#233;s Alvarez and Joan. The pattern holds every time.</p><p>What was different at Panot was my own role. I was now Head of Product Design at Fotocasa Group, which meant research, team management, product strategy. I was no longer a Design System practitioner day to day. That was hard to accept, because I love that work. But I also understood something I had not fully internalized before.</p><p>When the vision is clear, you can let go of the execution.</p><p>I knew where Panot needed to go. I knew the technology, the principles, the adoption model. So instead of staying close and slowing things down, I trusted Andr&#233;s and Joan to move fast, make bold decisions without waiting for me. Check in when it matters.</p><p>They did. And Panot was ready for teams to use in less than a month.</p><div><hr></div><h2>Adoption during a layoff</h2><p>Full adoption across all applications took less than a year. That speed needs context.</p><p>We launched Panot while the company was going through a layoff. People were scared. The mood was difficult. It was not the moment anyone would have chosen for a major infrastructure change.</p><p>And yet the adoption was the smoothest I have ever seen. Zero pushback. Not one developer or designer asked why we were doing this or whether it was worth the effort. The Slack channel we created for Panot had more activity from the first week than SUI Components had in months.</p><p>I have thought about why, and I think there are a few reasons.</p><p>The teams were small and had worked together for years. Everyone knew each other. The conversations that would take days in a global company took an hour in Fotocasa Group. The system also gave people something to focus on that wasn&#8217;t the anxiety of the moment. Panot was visible, exciting, and moving forward when everything else felt uncertain. That mattered more than any communication strategy.</p><p>But there&#8217;s something else. The teams had been watching Spark happen. They knew what TypeScript and semantic tokens and Storybook looked like. They had been waiting for the moment they could use those tools themselves. Independence gave them permission. When Panot arrived, it wasn&#8217;t a surprise or an imposition. It was the thing they had been waiting for.</p><p>To track adoption, we built two things. A Datadog dashboard comparing SUI Components packages to Panot packages across all our applications. And a Chrome extension that highlighted Panot components live on our production websites, painting them pink so anyone could browse Fotocasa and see the system at work in real time. Making the invisible visible. Same principle as the adoption dashboard we built for SUI, scaled down and made tactile.</p><div><hr></div><h2>The system that talks to machines</h2><p>One of the last things the team built for Panot was an MCP server.</p><p>MCP is the standard protocol that lets AI agents connect to external systems and query them directly. Tools like Cursor, Windsurf, or Claude can use it to reach into a codebase, a database, a documentation site, and pull back structured information in real time. The Panot MCP server gives any AI agent access to the full system: all 225 components, every design token, every icon across both brands. An agent can search for a component, read its props, generate ready-to-use TypeScript code, validate existing implementations, and recommend the right token for a given context.</p><p>It means Panot is no longer just a Design System that designers and developers use. It&#8217;s one that AI agents can use too.</p><p>This wasn&#8217;t on the roadmap from day one. But it&#8217;s a logical extension of everything the team had been building since Spark: a system with clear structure, consistent naming, and documented intent throughout. The same qualities that make Panot easy for a developer to navigate make it possible for a machine to understand. Semantic tokens named for intent, not appearance. Components with typed props and documented variants. Icons organised by brand and tagged for search. The rigour that made the system good for humans turns out to be exactly what machines need as well.</p><p>I find this significant in a way that goes beyond Panot. For years, the argument for Design Systems was that they help teams move faster and stay consistent. That argument was always true. But it was an argument about human efficiency. The MCP changes the frame.</p><p>A Design System that an AI agent can read is not just a productivity tool. It&#8217;s an interface between your design decisions and a new class of collaborators who don&#8217;t open Figma, don&#8217;t attend design reviews, and don&#8217;t read Confluence pages, but can generate, validate, and extend your product at a speed no human team can match. The question is whether those collaborators can understand what you built and why. If the system is well-structured and well-documented, the answer is yes. If it isn&#8217;t, the agent does what a bad contractor does: it improvises, ignores conventions, and ships something that looks like your product but isn&#8217;t.</p><p>The Design Systems that will matter in the next few years are the ones that were built carefully enough that a machine can use them without breaking what makes them coherent.</p><p>Panot, almost by accident, is one of them.</p><div><hr></div><h2>The lesson the series has been building toward</h2><p>I built my first Design System in 2017 with no mandate, no budget, and a shared belief with one developer that fifty button variants was not a design problem but a system problem.</p><p>Since then, every system has taught me something different. ODF taught me to show instead of sell. Delta taught me that a feedback loop is not optional. SUI taught me that visibility is what turns adoption into culture. Spark taught me that co-building is the only way to get four countries to share anything.</p><p>Panot taught me that all of it compounds.</p><p>You don&#8217;t have to reinvent the wheel if you built a good wheel the first time. But you do have to be intentional about which parts of the wheel you carry forward, and which parts you leave behind. That intentionality is not a one-time decision. It is the habit you build across every system, every team, every fork.</p><p>Build thoughtfully now. You will be grateful for it later, in ways you cannot always predict. Because the system you build for your design team today might be the same system that your AI agents use tomorrow to build your product.</p><p>That is what Panot is. Everything that came before it, made intentional again. And the first step toward what comes next.</p><div><hr></div><p>Turo L&#243;pez Sanabria has over 20 years of experience in Design, and nearly a decade building the infrastructure that makes digital products coherent at scale. Five Design Systems. Several companies. Today, he works at the frontier where the line between building for humans and building for machines has started to blur.</p><div><hr></div><p></p><h2>The Design Systems series</h2><p>Here&#8217;s where Panot sits in the story:<br><br>2017</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;a0917c01-9511-4f52-a925-c5382e62ee05&quot;,&quot;caption&quot;:&quot;Built with HTML + Sass (code), Sketch (design), and KSS (documentation).&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;ODF: The Design System I Built Before the Playbook Existed&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-10T14:05:00.000Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/odf-the-design-system-i-built-before&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199458813,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2018</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;21b38fe5-ae02-4187-8020-523ab0ba1ada&quot;,&quot;caption&quot;:&quot;Built with Sketch, Abstract, and Frontify. No components shipped to production.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Delta: How to Tell If You&#8217;re Building Something That Matters&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:07:22.363Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/delta-how-to-tell-if-youre-building&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199459225,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2019</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;a138f4cb-31ae-4feb-a573-e175ae19b22b&quot;,&quot;caption&quot;:&quot;Built with CSS, Sass, and React. Custom documentation site. Design started in Sketch, later migrated to Figma.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;SUI: How to Make a Design System Impossible to Ignore&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:09:36.129Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/sui-how-to-make-a-design-system-impossible&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199459420,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2023</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;fa9be315-46d2-4fe6-b394-67b110bfaa47&quot;,&quot;caption&quot;:&quot;Built with TypeScript (Web), Kotlin (Android), Swift (iOS). Documented in Storybook, Dokka, and ZeroHeight. Designed in Figma.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Spark: Built With Four Countries, Not For Them&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:10:30.520Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/spark-built-with-four-countries-not&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199459677,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2025</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;c6a8ed3a-e488-46b4-9aaa-7ebd6a6d0325&quot;,&quot;caption&quot;:&quot;Built with TypeScript, CSS with Tailwind, Storybook, Next.js, and server components. Designed in Figma. Documented with MDX with live previews.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Panot: Built for Humans. Ready for Machines.&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:14:42.828Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/panot-built-for-humans-ready-for&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199460015,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://turolopezsanabria.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Spark: Built With Four Countries, Not For Them]]></title><description><![CDATA[A story about a global mandate, four incompatible Design Systems, three months of negotiation, and what it really takes to build something four countries will adopt.]]></description><link>https://turolopezsanabria.substack.com/p/spark-built-with-four-countries-not</link><guid isPermaLink="false">https://turolopezsanabria.substack.com/p/spark-built-with-four-countries-not</guid><dc:creator><![CDATA[Turo López Sanabria]]></dc:creator><pubDate>Tue, 21 Apr 2026 13:10:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iHWp!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a76b7e7-35c8-4ecf-8426-71f5dbcbb158_751x751.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Built with TypeScript (Web), Kotlin (Android), Swift (iOS). Documented in Storybook, Dokka, and ZeroHeight. Designed in Figma.</em></p><h2>One Platform for All of Europe</h2><p>When Adevinta decided to go global, it picked a single platform to power the whole company: Germany, France, Italy, Spain, all of them running on the same foundation. The French platform was selected as the base. It was well-adopted, technically solid, and already had a Design System on top of it called Brikke.</p><p>The problem was that Brikke had never been built for what it now needed to do: serve multiple brands, multiple markets, multiple platforms, simultaneously.</p><p>The company looked across its regions for teams that had already dealt with multi-brand theming at scale. That experience existed in Spain, where SUI Components had been built to serve ten brands across four verticals. The company asked for that expertise directly, and it became one of the starting points for what would become Spark.</p><div><hr></div><h2>Four Systems, Each With Something to Offer</h2><p>When I became Global Head of Design Operations, the situation across the company was four countries with four Design Systems, each at a different stage and moving in a different direction.</p><p>Spain had SUI Components: multi-theming capabilities, solid governance, real adoption. But it was built with Sass and CSS, and the new global platform was going to run on TypeScript. The architecture was not compatible.</p><p>France had a well-adopted Design System with strict code standards and strong engineering discipline. The challenge was that Brikke had never been designed for multi-brand. Making it work that way was going to be very hard.</p><p>Germany and Italy were earlier in their journeys, not yet at a stage where their systems could contribute significantly to a global foundation.</p><p>No single system could serve as the base. The decision was made to build something new, drawing on the strengths of each.</p><div><hr></div><h2>Listen Before You Build</h2><p>The first thing the team did was not design. Not code. Not decide.</p><p>It was a listening tour.</p><p>We went to each team across the company and asked two questions: what is working in your Design System, and where does it break? What are you proud of, and what frustrates you every day?</p><p>This was not a formality. At eDreams years earlier, a visual audit of fifty button variants was what made the problem visible enough to solve. At Adevinta Spain, listening tours were what built the trust that made SUI adoption possible. The pattern holds at every scale.</p><p>When you start by listening, you earn two things no document can give you. First, the real constraints, not the theoretical ones, but the ones already causing daily pain. Second, the right to make decisions, because the people affected know you understood their situation before you acted on it.</p><div><hr></div><h2>Three Months of Negotiation</h2><p>Then came the hard part.</p><p>The team that formed to build Spark brought together people from across the company. The core of SUI Components: Diego, Eli, Chris, Andr&#233;s, Jordi, and myself. Key developers from the French and German teams, who brought their engineering rigour and code discipline. The French UI team, experienced and precise, who knew Brikke&#8217;s visual language inside out. Later, Jere, a Design Systems specialist from Germany who understood the German brand constraints intimately.</p><p>An engineering manager came on board to oversee all the developers across web, iOS, and Android. And for the first time in any Design System I had been part of, QA was embedded in the team from day one. Not brought in at the end to validate. Present from the beginning, as part of the core. Accessibility was a hard requirement from the start, not something added after, which meant QA had to think about keyboard navigation, ARIA labels, contrast ratios, and screen reader compatibility on every component before it shipped.</p><p>The team hit the ground running. Infrastructure decisions were being made and early code was being written from the very first weeks. But one problem surfaced almost immediately, before a single component was complete: colour.</p><p>The colour decisions alone required weeks of back and forth. Kleinanzeigen, the German brand, had colour conventions that were incompatible with how SUI worked and how Brikke was structured. Everyone had made decisions they believed in. Everyone had reasons. And everyone was being asked to let some of those decisions go.</p><p>Beyond colour, the team negotiated on naming conventions, on TypeScript or not, on versioning strategy, on whether to have one documentation site or multiple, on where the Design System ended and brand expression began.</p><p>None of it was simple. But by the end, the team had something more valuable than a component library. An agreement.</p><div><hr></div><h2>Semantic Tokens as Political Architecture</h2><p>The breakthrough on colour was the breakthrough on the whole system.</p><p>Instead of arguing about which brand&#8217;s rules should win, the team agreed on a semantic structure that could hold all of them. What does &#8220;main&#8221; mean across every brand? What does &#8220;support&#8221; mean? How many steps does a colour ramp need to serve everyone?</p><p>The naming approach itself, <code>main</code>, <code>onMain</code>, <code>support</code>, <code>onSupport</code>, is not new. Semantic token naming has become close to an industry standard. But adopting a convention and making it truly yours are different things. The team spent weeks fine-tuning every layer of the structure, stress-testing it against each brand&#8217;s edge cases, until every market could see a fair representation of its identity within the same system. That level of precision is what made it work at this scale.</p><p>Once the structure was solid, each brand could fill in their own values. One token named <code>main</code>. Four brands, four different colours. All of them correct.</p><p>This became the model for everything. Not &#8220;here are the rules everyone must follow.&#8221; But &#8220;here is the structure everyone can fill.&#8221; That difference sounds subtle. In practice, it is the difference between a Design System four countries adopt and one four countries resist.</p><p>Every token name in Spark is a small, settled argument. Around 110 of them, bridging Figma and code across TypeScript, Kotlin, and Swift.</p><div><hr></div><h2>A New Architecture</h2><p>The technical decisions that shaped Spark were among the most ambitious the team had taken on.</p><p>SUI had each component as its own package. You imported Button, you imported Checkbox, each with its own Sass variables. Spark moved to a single package and replaced Sass with native CSS custom properties.</p><p>Sass variables resolve at compile time. CSS custom properties resolve at runtime. That is not a small distinction. It means theme switching, brand switching, and dark mode can happen dynamically, without rebuilding anything. For a system serving four brands across three platforms, this is fundamental.</p><p>It was also the team&#8217;s first time building dark mode at scale across web, iOS, and Android simultaneously. It worked because the semantic token structure was already solid. Tokens named for appearance, like <code>blueLight500</code>, make dark mode a nightmare. Tokens named for intent, like <code>main</code> and <code>onMain</code>, make dark mode a token swap.</p><p>Headless components completed the picture: the logic and behaviour of a component, decoupled from its visual expression. Teams could use Spark&#8217;s components and apply their own brand&#8217;s look on top. Structure shared. Identity preserved.</p><p>One honest admission: when Tailwind was proposed as part of the architecture, I was the first one to push back. It seemed too opinionated for a system that needed to serve radically different brands. I was wrong. At this scale, Tailwind turned out to be a great decision. It brought consistency to how utility classes were used across the whole platform, without getting in the way of theming. Being wrong about this quickly mattered.</p><div><hr></div><h2>The Team That Made It Possible</h2><p>What made Spark work differently from previous Design Systems was QA embedded from the start.</p><p>In most systems, quality assurance happens after components are built. At Spark, it was part of the building process. QA engineers were not there to catch problems at the end. They were there to prevent them from the beginning.</p><p>This changed adoption in a way no dashboard or documentation ever could. When a brand team picked up a Spark component, they could trust it. Not because they were asked to. Because it had been tested across platforms, across themes, across the edge cases that surface in production. Trust built faster than any announcement.</p><p>The engineering manager mattered for a different reason. Having someone whose job was running the engineering side freed the rest of the team to focus on what they were good at. Clear ownership. Clear lanes.</p><div><hr></div><h2>Ship Early, Ship in Public</h2><p>The team did not wait for Spark to be finished before showing it.</p><p>From the first week, progress was shared openly, even when that progress was two components and a handful of tokens. The theming artifact was released before the first component shipped, so platform teams across the company could start migrating to Spark&#8217;s token structure immediately. The foundation spread before the building went up.</p><p>Spark was open source from day one. Not primarily as a strategy. As a culture signal. The work was something to be proud of, nothing to hide, and the people who were going to adopt it deserved to understand how it worked, not just what it did.</p><p>By the time of launch, there was no surprise. Teams had been watching it grow. They had seen the decisions being made. Spark did not feel imposed from above. It felt like something that had been happening in front of everyone, with everyone.</p><div><hr></div><h2>What I Almost Didn&#8217;t Say</h2><p>One thing about leading a Design System that rarely gets said out loud: you cannot do it if you do not understand code.</p><p>Not write it every day. Not be an engineer. But understand it well enough to have real conversations about architecture decisions, to know when a technical constraint is genuine and when it is a negotiating position, to earn the trust of the developers building alongside you. At the scale of Spark, the technical decisions were political decisions. You cannot navigate that without knowing what you are talking about.</p><div><hr></div><h2>One More Thing the Industry Gets Wrong</h2><p>There is a strong belief that a Design System needs a Single Source of Truth: one place where everything lives, and everyone reads it.</p><p>At Spark, the team built ZeroHeight for designers and product managers, Storybook for web developers, and Dokka for Android developers. Three documentation surfaces, not one. Because developers, designers, and PMs do not read documentation the same way. Forcing them into the same format does not create alignment. It creates people who stop reading.</p><p>A Single Source of Truth works well for tokens and components. As a documentation strategy for a multi-disciplinary team, it is more idealistic than practical.</p><div><hr></div><h2>The Lesson</h2><p>You can&#8217;t skip the listening.</p><p>Three months spent aligning on a colour structure may sound excessive. And there is always something more appealing about opening Figma and crafting components, or spinning up a TypeScript repo and writing real code. That is the visible work, the part that feels like progress. But spending weeks in the HEX universe, negotiating naming conventions and ramp structures across four brands, is where the real work happens. It is also where adoption is won or lost, long before the first component ships.</p><p>At the scale of four countries, you cannot build something new and ask people to adopt it. You have to involve the people who built the previous systems in building the new one. Not as reviewers at the end. As co-builders from the beginning.</p><p>When people see themselves in a system, they adopt it. When they do not, they tolerate it at best.</p><p>That is true of Design Systems. It is true of most things worth building.</p><p>Not long after, I moved back to Barcelona. Fotocasa, one of Adevinta Spain&#8217;s leading real estate platforms, needed a Design System of its own. The work inherited from Spark became the foundation for Panot. I did not know then that everything built across those four countries would make it possible to go even further. That is the next story.</p><div><hr></div><p>Turo L&#243;pez Sanabria has over 20 years of experience in Design, and nearly a decade building the infrastructure that makes digital products coherent at scale. Five Design Systems. Several companies. Today, he works at the frontier where the line between building for humans and building for machines has started to blur.</p><div><hr></div><h2>The Design Systems series</h2><p>Here&#8217;s where Spark sits in the story:<br><br>2017</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;ae424ed4-4e38-4234-95d1-c43f4f597731&quot;,&quot;caption&quot;:&quot;Built with HTML + Sass (code), Sketch (design), and KSS (documentation).&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;ODF: The Design System I Built Before the Playbook Existed&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-10T14:05:00.000Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/odf-the-design-system-i-built-before&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199458813,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2018</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;4bb42aa7-a253-41ba-ae4f-bed63c63e91a&quot;,&quot;caption&quot;:&quot;Built with Sketch, Abstract, and Frontify. No components shipped to production.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Delta: How to Tell If You&#8217;re Building Something That Matters&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:07:22.363Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/delta-how-to-tell-if-youre-building&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199459225,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2019</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;6af542a7-b8e4-47fb-90ae-64c2f0138f56&quot;,&quot;caption&quot;:&quot;Built with CSS, Sass, and React. Custom documentation site. Design started in Sketch, later migrated to Figma.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;SUI: How to Make a Design System Impossible to Ignore&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:09:36.129Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/sui-how-to-make-a-design-system-impossible&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199459420,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2023</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;f3d6a602-775f-4f5c-a83f-6dbf73c6676e&quot;,&quot;caption&quot;:&quot;Built with TypeScript (Web), Kotlin (Android), Swift (iOS). Documented in Storybook, Dokka, and ZeroHeight. Designed in Figma.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Spark: Built With Four Countries, Not For Them&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:10:30.520Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/spark-built-with-four-countries-not&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199459677,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2025</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;0558511e-2a7c-4b73-9f37-ebab9ed92fa5&quot;,&quot;caption&quot;:&quot;Built with TypeScript, CSS with Tailwind, Storybook, Next.js, and server components. Designed in Figma. Documented with MDX with live previews.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Panot: Built for Humans. Ready for Machines.&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:14:42.828Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/panot-built-for-humans-ready-for&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199460015,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://turolopezsanabria.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[SUI: How to Make a Design System Impossible to Ignore]]></title><description><![CDATA[A story about ten brands, a Twitch channel, and what it takes to make a Design System impossible to ignore.]]></description><link>https://turolopezsanabria.substack.com/p/sui-how-to-make-a-design-system-impossible</link><guid isPermaLink="false">https://turolopezsanabria.substack.com/p/sui-how-to-make-a-design-system-impossible</guid><dc:creator><![CDATA[Turo López Sanabria]]></dc:creator><pubDate>Tue, 31 Mar 2026 13:09:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iHWp!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a76b7e7-35c8-4ecf-8426-71f5dbcbb158_751x751.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Built with CSS, Sass, and React. Custom documentation site. Design started in Sketch, later migrated to Figma.</em></p><div><hr></div><p>When I joined Adevinta Spain, a Design System already existed. That was the good news. The bad news was that almost nobody was using it.</p><p>SUI Components had bare bones: a handful of React components built with Sass, a few UI kits scattered across Sketch files that nobody shared, and an adoption rate low enough that most of the company&#8217;s ten brands, across four verticals, were still building their own buttons, their own checkboxes, their own lists from scratch. Every team doing the same work, independently, slightly differently, every sprint.</p><p>Victor Sola, the UX director, had hired me because he believed something I also believe: that quality scales, if you know how to build the infrastructure for it. He had seen me do it before at eDreams. He trusted me to do it again, at a much bigger scale, across ten brands, in a company that was still learning what a Design System could be.</p><p>That trust turned out to be sixty or seventy percent of what made SUI work. The rest was the work itself.</p><div><hr></div><h2>The game changer was a person</h2><p>SUI had not appeared from nowhere. A four-person platform team had built it, and they were proud of it. They had good reason to be. But they did not have the bandwidth to make it spread across the organisation. That was the gap I walked into: a solid foundation, a team that believed in it, and ten brands that were not yet using it.</p><p>One of the first things I did was convince the Head of Enablers and Platform to fund a full-time Design System developer. Not a developer borrowed from a product team. A dedicated hire, someone whose only job was to make SUI stronger.</p><p>That hire was Andr&#233;s.</p><p>When Andr&#233;s arrived, he looked at what we had and said, essentially: this is a very nice Design System for the future. But we are not ready for the future yet. There were no automated tests for the components. The system was designed to be adopted by everyone, but it was not actually built to handle everyone. It was aspirational in the best sense, and incomplete in the most practical sense.</p><p>From the moment Andr&#233;s joined, we started closing that gap. Tests. Infrastructure. Real component architecture that could survive real product teams using it at scale. The system started becoming something you could actually depend on, not just admire.</p><p>Javi Mota was my technical co-builder at eDreams. Andr&#233;s was that person at Adevinta. In both cases, the Design System only became real when design and engineering were genuinely building it together.</p><div><hr></div><h2>Making the invisible visible</h2><p>One of the first things I built was an adoption dashboard. The company already had a script that crawled all the repositories and counted which SUI components each brand was using. I built the website on top of it, in React and Next.js, that made that data visible to everyone.</p><p>Every team could see exactly how many components they had adopted, and how that compared to every other brand in the company.</p><p>It was, quietly, a gamification engine.</p><p>Nobody told teams they had to improve their numbers. Nobody sent dashboards with targets and deadlines. But once teams could see their numbers, and see how those numbers compared to Infojobs or Fotocasa or Milanuncios, something shifted. Teams started wanting better numbers. Not because we asked them to, but because visibility creates its own kind of motivation.</p><p>We showed the dashboard in every Twitch session. We showed it at every company presentation we could get into. The number was always in the room.</p><div><hr></div><h2>Performing the work</h2><p>The adoption dashboard was the internal visibility engine. The Twitch channel was the external one.</p><p>Every Thursday, live, we went on Twitch and talked about SUI Components. What we had built that week. What decisions we had made. What was coming next. Open source, open process, open conversation. Developers and designers from across the company could join, watch, comment in real time through Slack.</p><p>It sounds unusual. It was. But it worked in ways I did not anticipate.</p><p>Our own developers started watching the Thursday streams from their desks or from home. Seeing the system being built in the open, hearing the reasoning behind decisions, watching us fix things and explain why, made SUI feel real to them in a way that documentation never could. Documentation tells you what to use. Watching someone build it tells you why it matters.</p><p>And then there were the people who found us from outside the company. We were also giving talks at schools, presenting at conferences, writing articles about SUI on Medium. One of those articles was how Eli, one of the best designers I have worked with, discovered us. She read what we were publishing publicly, got excited by what we were building, and applied for a role on the team. The public work became a talent magnet.</p><p>By then, the team had grown into something real. On the design and component side: Diego, Chris, and Jordi. On processes, listening tours, and tools governance: Eli. Each of them covering ground that one person alone could never have reached.</p><p>Going public was not just a visibility strategy. It was a culture signal. It said: we are proud of this, we have nothing to hide, and we want other people to understand and use it.</p><div><hr></div><h2>One button, ten brands</h2><p>SUI was the first multi-brand Design System I had built that included actual React components, not just Sass tokens. At eDreams, the theming layer was pure Sass: each brand overrode base variables and the components painted themselves correctly. At Adevinta, we kept the same principle but added the complexity of real component architecture.</p><p>Every brand installed SUI components as individual packages. Then they imported their own Sass variable overrides on top of the base theme. One button in code, ten brands rendered correctly. The Lego logic from ODF, rebuilt for React at scale.</p><p>But the most interesting design decisions were not technical, but strategic: the buttons we never replaced, all the times we said yes and no.</p><p>Just a simple example: SUI had a button component that was old. Not broken, but dated. Plenty of people requested a full redesign over the years. My answer, consistently, was no. Not because the button was good enough forever, but because it was already everywhere. Every brand was using it. Changing it in a major way would have disrupted all of them simultaneously.</p><p>So instead we released minor versions. Improvements, not replacements. We kept the adoption we had worked so hard to earn, and we made the button incrementally better, sprint by sprint.</p><p>Strategic patience. Know what you are optimising for. If the goal is adoption, protect adoption.</p><div><hr></div><h2>The Figma migration</h2><p>At some point we knew we had to move from Sketch to Figma. Figma was clearly the future, and more importantly, it was better for a multi-brand Design System: shared libraries, real-time collaboration, a single file that all designers across all brands could work from simultaneously.</p><p>The migration took one month.</p><p>That speed was possible because by then we had a Design Ops infrastructure that knew how to move. We had learned how to migrate tools without losing the work. We had processes for versioning, for communicating changes, for getting teams onto new workflows without stopping their product delivery. The Design System was not just components and a documentation site. It was an operational system that could absorb change.</p><p>That is what Design Ops is for, in the end. Not to slow things down in the name of process. To make change faster by making it planned.</p><div><hr></div><h2>Be intentional</h2><p>The lesson I carry most clearly from SUI into everything I built afterwards is this: in a Design System, intentionality is not optional.</p><p>Every decision needs a reason. Every tool you add needs a justification for why that tool and not another. Every deprecation needs to be explained. Every contribution model needs rules. Every place you store a decision needs to be findable by someone who wasn&#8217;t in the room when you made it.</p><p>This sounds obvious when you write it down. It is almost never practiced consistently. Design Systems accumulate decisions the same way products accumulate technical debt: quietly, at speed, until the weight of the past starts slowing down the future.</p><p>At SUI, I started being much more deliberate about this. Why are we using Sass and not another approach? Write it down. Why are we keeping the old button? Write it down. Why is this component in the system and not that one? Write it down.</p><p>Intentionality is what makes a Design System durable. Components change. Tools change. Teams change. The reasoning behind your decisions is what survives.</p><div><hr></div><h2>The relato</h2><p>There is one more thing I want to say about SUI, and it is the hardest to explain.</p><p>In one of my 1st presentations of SUI to the public, I talked about the challenge of &#8220;mantener el relato del &#233;xito,&#8221; keeping the success narrative alive. A friend and colleague, Isaac, had first named this struggle for me. You do three years of intense work, build something genuinely good, plant a flag. And then you turn around and the flag is gone. Someone new arrives and doesn&#8217;t know the history. Leadership changes. A new technology appears and suddenly what you built looks old. The narrative resets.</p><p>Managing a Design System is not just a technical and operational challenge. It is a communication challenge, permanently. You have to keep telling the story. Not because the work is not visible, but because organisations are large and distracted and full of people who were not there when you made the decisions that now hold everything together.</p><p>The dashboard helped. The Twitch streams helped. The articles helped. Every time we made SUI visible, we were also making the story of SUI visible. Why it existed. What it replaced. How much work it represented.</p><p>That is the thing I would tell anyone building a Design System in a large organisation: the system is not ready when the components are built. The system is ready when the organisation understands why it matters. And that second part never stops requiring effort.</p><p>The next system asked a different question entirely: what happens when four countries have to agree on a single button?</p><div><hr></div><p>Turo L&#243;pez Sanabria has over 20 years of experience in Design, and nearly a decade building the infrastructure that makes digital products coherent at scale. Five Design Systems. Several companies. Today, he works at the frontier where the line between building for humans and building for machines has started to blur.</p><div><hr></div><h2>The Design Systems series</h2><p>Here&#8217;s where SUI sits in the story:<br><br>2017</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;c1f5e090-02af-4559-9aaf-2b7b356e9917&quot;,&quot;caption&quot;:&quot;Built with HTML + Sass (code), Sketch (design), and KSS (documentation).&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;ODF: The Design System I Built Before the Playbook Existed&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-10T14:05:00.000Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/odf-the-design-system-i-built-before&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199458813,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2018</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;951345b1-6ab2-4cfe-a5cd-45645fb3b637&quot;,&quot;caption&quot;:&quot;Built with Sketch, Abstract, and Frontify. No components shipped to production.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Delta: How to Tell If You&#8217;re Building Something That Matters&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:07:22.363Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/delta-how-to-tell-if-youre-building&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199459225,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2019</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;c9a3f621-984b-4414-a35b-199f7ac44d7a&quot;,&quot;caption&quot;:&quot;Built with CSS, Sass, and React. Custom documentation site. Design started in Sketch, later migrated to Figma.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;SUI: How to Make a Design System Impossible to Ignore&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:09:36.129Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/sui-how-to-make-a-design-system-impossible&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199459420,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2023</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;ceaad47a-e7c9-4ca9-ac4f-d3b8b3630c05&quot;,&quot;caption&quot;:&quot;Built with TypeScript (Web), Kotlin (Android), Swift (iOS). Documented in Storybook, Dokka, and ZeroHeight. Designed in Figma.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Spark: Built With Four Countries, Not For Them&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:10:30.520Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/spark-built-with-four-countries-not&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199459677,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2025</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;5b65df4b-796a-4c99-857b-14da1a550eae&quot;,&quot;caption&quot;:&quot;Built with TypeScript, CSS with Tailwind, Storybook, Next.js, and server components. Designed in Figma. Documented with MDX with live previews.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Panot: Built for Humans. Ready for Machines.&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:14:42.828Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/panot-built-for-humans-ready-for&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199460015,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://turolopezsanabria.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Delta: How to Tell If You’re Building Something That Matters]]></title><description><![CDATA[A story about eight months, four people, a massive ambition, and the silence that taught me everything.]]></description><link>https://turolopezsanabria.substack.com/p/delta-how-to-tell-if-youre-building</link><guid isPermaLink="false">https://turolopezsanabria.substack.com/p/delta-how-to-tell-if-youre-building</guid><dc:creator><![CDATA[Turo López Sanabria]]></dc:creator><pubDate>Fri, 13 Feb 2026 21:51:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iHWp!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a76b7e7-35c8-4ecf-8426-71f5dbcbb158_751x751.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Built with Sketch, Abstract, and Frontify. No components shipped to production.</em></p><div><hr></div><h2>We Flew to Milan</h2><p>Four of us flew from Barcelona to Milan to meet a team of designers and developers we believed were going to adopt Delta, the Design System Factory we had been building for months. An ambitious, state-of-the-art framework. At that point, we had documentation, Sketch libraries, onboarding videos, Frontify pages. No code or components delivered to any product team, but a lot of infrastructure for a system that hadn&#8217;t found its users.</p><p>We landed, took a cab to the office, walked in.</p><p>I still believe today that they didn&#8217;t even know we were coming.</p><p>Someone found us a meeting room. We spent the day there, the four of us, working as if the trip had a purpose. Late in the afternoon, one person joined us for about an hour to listen to our pitch. Then we flew back to Barcelona.</p><p>On the way home, I had a thought I couldn&#8217;t shake: nobody is waiting for us. Nobody is expecting us to deliver anything. Why are we doing this?</p><p>I had been asking some version of that question for months. I never got a good answer.</p><div><hr></div><h2>Eight Months of Planning</h2><p>Delta was born from a genuinely exciting idea. Schibsted, a global marketplace company with dozens of brands and product teams scattered across countries and platforms, needed a way to scale design and development consistently. The vision was bold: a single Design System Factory, a shared infrastructure of components, tokens, and guidelines that any marketplace team could use to build their own Design System faster, with less effort.</p><p>A small team of four was assembled to build it. I joined as UX-PM for Design Systems, reporting to the Design Systems lead, excited by the scope of the problem and the ambition of the solution.</p><p>We used the right tools. We followed the right process, at least on paper. We documented everything. We made videos. We built onboarding materials in Frontify. We created Sketch libraries managed through Abstract with care and precision. We brainstormed. We planned. We planned some more.</p><p>Eight months in, we had not a single end user actively adopting the system.</p><p>My manager spent much of that time selling the idea to stakeholders across the company. I spent much of it questioning, quietly, whether anyone had actually asked for it. I would arrive at the office at nine, leave at five, and on a good week have two or three real interactions with designers outside our team. No one was asking us questions. No one was sending us their problems. No one was complaining about something we built, because no one was using what we built.</p><p>There is a particular kind of frustration that comes not from failure, but from irrelevance. We were not failing. We were just not connected to anything real.</p><div><hr></div><h2>Fifty Buttons</h2><p>A few years earlier, at eDreams ODIGEO, I had done something much smaller with much more impact. We counted fifty-something variations of the same button across four brands and three platforms. A visual audit made the problem visible enough to solve. We built ODF, the eDreams Design Framework, and a couple of months in, a developer pulled me aside near the coffee machine: &#8220;Today is the first day in my life I wrote a full component without touching a single line of CSS. Thank you.&#8221; That moment was not planned. But it was enabled. ODF is the first article in this series, the full story is there.</p><p>At Delta, I waited months for a moment like that. It never came.</p><div><hr></div><h2>The Difference Is the Feedback Loop</h2><p>I have thought a lot about what separated ODF from Delta. The scope was different. The companies were different. The people were different. So I am not trying to compare them directly.</p><p>But there is one thing I keep coming back to, and it is simple: one had a feedback loop and the other did not.</p><p>At eDreams, feedback was constant. A team&#8217;s colour tokens didn&#8217;t work for their use case, and they told us. We ran listening tours and people showed up. We presented to the whole company and the room was full of questions. Contributors added components we hadn&#8217;t thought of because they were using the system and saw what was missing.</p><p>Every complaint, every question, every request was a signal. The system was alive because people were using it, and they were using it because it was solving something they actually felt every day.</p><p>At Schibsted, I was waiting for that same signal and it never came. I wasn&#8217;t waiting passively. I was asking. Who is going to request components from us? Who is watching these tutorials? Which teams are expecting us to deliver something? The answers were vague or nonexistent, because the truth was that no one had been asked. No team had raised their hand. The system was being built not because someone needed it, but because someone thought it was a good idea.</p><p>There is a very big difference between those two things.</p><div><hr></div><h2>How to Tell If You&#8217;re Building Something That Matters</h2><p>Design Systems are not special in this way. The same test applies to any product, any initiative, any internal tool.</p><p>Here is the question I now ask first: are people coming to you, or are you chasing them?</p><p>If your listening tour is packed, that is a signal. If it is empty, that is also a signal. If teams are reaching out with specific problems, specific constraints, specific use cases, that is a signal. If they don&#8217;t know you exist after months of work, that is a signal too.</p><p>If someone complains about something you built, celebrate quietly. A complaint means someone used it. Silence is far worse than a bug report.</p><p>The coffee machine moment cannot be manufactured. But it can be made possible. You make it possible by starting with a real problem, something visible and felt and annoying enough that the people living with it would actually welcome a solution. Not a trend. Not a best practice imported from a conference talk. A problem that exists today, in your product, that you can point to and say: look. Here is where it hurts.</p><p>Then you build something small that addresses it. Not the full system. Not the perfect infrastructure. Something real, that someone can use, that produces a result they can feel.</p><p>Then you wait for the feedback. That feedback is your north star.</p><div><hr></div><h2>Why Delta Was Still Worth It</h2><p>I left Schibsted after eight months. It was the right call. But I want to be clear: I do not think the people I worked with were wrong to try. The vision was real. The problem they were trying to solve was real. Global companies with dozens of product teams and no shared infrastructure genuinely need what Delta was attempting to build.</p><p>What was missing was not ambition or skill. What was missing was a starting point grounded in a real, specific problem that real, specific teams were already feeling. And a willingness to start small, ship something, and let the feedback tell you whether you were heading in the right direction.</p><p>A Design System is not a Figma library. It is not a Frontify page or a Storybook or a Sketch file. A Design System is a feedback loop between the people who design and build products and the shared decisions that make that work faster and better. Without the loop, you have documentation. You might have beautiful documentation. But you do not have a system.</p><p>Delta taught me that more clearly than any success ever could.</p><p>If you are building a Design System today, or any shared product infrastructure, ask yourself: who is coming to me with their problems? Whose work is my system making easier right now? If you cannot answer those questions, you are not building yet. You are still looking for the problem.</p><p>Find the problem first. Everything else follows.</p><p>The next system would be the one where I finally got the feedback loop right, at a scale that still surprises me.</p><div><hr></div><p>Turo L&#243;pez Sanabria has over 20 years of experience in Design, and nearly a decade building the infrastructure that makes digital products coherent at scale. Five Design Systems. Several companies. Today, he works at the frontier where the line between building for humans and building for machines has started to blur.</p><div><hr></div><p></p><h2>The Design Systems series</h2><p>Here&#8217;s where Delta sits in the story:<br><br>2017</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;09e7f4b6-4384-45fa-8bfd-e261a4f8519b&quot;,&quot;caption&quot;:&quot;Built with HTML + Sass (code), Sketch (design), and KSS (documentation).&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;ODF: The Design System I Built Before the Playbook Existed&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-10T14:05:00.000Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/odf-the-design-system-i-built-before&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199458813,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2018</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;d3dc9432-ce89-40bc-b598-796f29674704&quot;,&quot;caption&quot;:&quot;Built with Sketch, Abstract, and Frontify. No components shipped to production.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Delta: How to Tell If You&#8217;re Building Something That Matters&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:07:22.363Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/delta-how-to-tell-if-youre-building&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199459225,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2019</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;12fceaa5-8a83-46e5-8833-44a5c0ac2f49&quot;,&quot;caption&quot;:&quot;Built with CSS, Sass, and React. Custom documentation site. Design started in Sketch, later migrated to Figma.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;SUI: How to Make a Design System Impossible to Ignore&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:09:36.129Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/sui-how-to-make-a-design-system-impossible&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199459420,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2023</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;d172262b-1815-4f57-a182-b55adc7df68f&quot;,&quot;caption&quot;:&quot;Built with TypeScript (Web), Kotlin (Android), Swift (iOS). Documented in Storybook, Dokka, and ZeroHeight. Designed in Figma.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Spark: Built With Four Countries, Not For Them&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:10:30.520Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/spark-built-with-four-countries-not&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199459677,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2025</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;22240715-aef6-4178-a588-a795bef3ed93&quot;,&quot;caption&quot;:&quot;Built with TypeScript, CSS with Tailwind, Storybook, Next.js, and server components. Designed in Figma. Documented with MDX with live previews.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Panot: Built for Humans. Ready for Machines.&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:14:42.828Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/panot-built-for-humans-ready-for&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199460015,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://turolopezsanabria.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[ODF: The Design System I Built Before the Playbook Existed]]></title><description><![CDATA[A story about eDreams Design Framework: what we built in 2017, why it worked, and what still holds true today.]]></description><link>https://turolopezsanabria.substack.com/p/odf-the-design-system-i-built-before</link><guid isPermaLink="false">https://turolopezsanabria.substack.com/p/odf-the-design-system-i-built-before</guid><dc:creator><![CDATA[Turo López Sanabria]]></dc:creator><pubDate>Sat, 10 Jan 2026 14:05:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iHWp!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a76b7e7-35c8-4ecf-8426-71f5dbcbb158_751x751.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Built with HTML + Sass (code), Sketch (design), and KSS (documentation). </p><h2>It Was 2017. Figma Didn&#8217;t Exist Yet.</h2><p>The year is 2017. Figma is not yet on anyone&#8217;s radar. React is still finding its footing. Most design teams are working in Sketch, and the brave ones are managing design decisions through Sass variables. And somewhere inside eDreams ODIGEO, one of Europe&#8217;s largest online travel platforms, I&#8217;m staring at a product that has fifty or sixty different variations of the same button.</p><p>Fifty. Buttons.</p><p>And that&#8217;s just buttons. Same story for colours, spacing, typography, each drifting independently across four different brands (eDreams, Opodo, GoVacances, TravelLink) and three platforms (web, iOS, Android). We had merged these brands under one front-end, with the intention of painting the same building blocks in different brand colours. The architecture was right. The execution wasn&#8217;t.</p><p>The same components were being designed and coded from scratch, over and over, every single sprint. For every brand. On every platform. Back then we called it modular design (later renamed atomic design), and very few teams were actually doing it.</p><p>This wasn&#8217;t an eDreams problem. This was a design industry problem. We just decided to do something about it.</p><div><hr></div><h2>The Birth of ODF</h2><p>ODF stands for <strong>eDreams Design Framework</strong>. It was the Design System I created and led at eDreams from scratch, and it became one of the most impactful initiatives I&#8217;ve been part of, recognised at an internal company innovation competition after a full year of building it across the organisation.</p><p>But it didn&#8217;t start with a pitch to the CEO. No slide deck, no roadmap, no budget request.</p><p>It started at the code level. And on the design side too, both in parallel. It started with a conversation with a developer, Javi Mota, who co-built the system with me, and a shared belief that we could fix something broken.</p><p>The first step wasn&#8217;t a meeting. It was a visual audit. We looked at the product honestly and catalogued every inconsistency we could find. Fifty button variants. Multiple shades of the same colour. Spacing and typography that had drifted so far from any original intention that there was no original intention left.</p><p>Once you&#8217;ve seen the problem that clearly, you can show it to others. And that&#8217;s when the real work started.</p><div><hr></div><h2>Show, Don&#8217;t Sell</h2><p>One of the most important decisions we made with ODF was this: <strong>we would never try to sell the idea. We would show it working.</strong></p><p>Instead of going to leadership with a concept, Javi and I worked in parallel on two fronts at the same time: the Sketch designs and the code. We built the foundational Sass variables, design decisions encoded in code, aligned with the design work from day one. Then we went further: we created a living documentation website, built with a tool called KSS, that auto-generated documentation directly from code comments. Any designer or developer in the company could open it, navigate the sidebar, and see every component, interactive, in all four brand colours, across desktop and mobile, right there in the browser.</p><p>This wasn&#8217;t a Figma file. This was the actual production code, running live.</p><p>That documentation site was a turning point. Adoption doesn&#8217;t follow conviction. It follows clarity. When people can see what a Design System enables, they start using it.</p><p>And then one afternoon, standing by the coffee machine, a developer pulled me aside:</p><p><em>&#8220;Today is the first day in my life that I wrote a full component without touching a single line of CSS &#8212; and everything I built is aligned with what the designer asked for. Thank you.&#8221;</em></p><p>That moment was worth more than any internal presentation.</p><div><hr></div><h2>Lego Blocks for Four Brands at Once</h2><p>The technical model behind ODF was modular by design, closer to Lego than to templates.</p><p>If you needed a button, you started with <code>ODF button</code>. Want it to be primary? Add <code>ODF button primary</code>. Need it large? Add <code>ODF button large</code>. Each class was a Lego brick. You composed the result by combining bricks, and the same combination produced the correct output for all four brands simultaneously, styled through brand-specific Sass variables.</p><p>One button in the code. Four brands rendered correctly. Zero duplication.</p><p>The same logic extended to icons. In the old world, adding a new icon meant opening a font editor, generating new font files in multiple formats, and pushing to production through a full release cycle, for each of the eight font variants across brands and platforms. With ODF, a designer saved an SVG into the icons folder, and the system auto-generated the font, made it available across all brands and devices, and sized it correctly relative to surrounding text.</p><p>One file drop. Done.</p><p>The goal wasn&#8217;t just efficiency. It was eliminating uncertainty. As I said in the internal presentation where we launched ODF to the company: <em>&#8220;We are killing uncertainty with this.&#8221;</em></p><div><hr></div><h2>Building Adoption, One Ambassador at a Time</h2><p>We didn&#8217;t broadcast the system and hope for the best. We started small and strategic.</p><p>I identified <strong>ambassadors</strong>: designers and developers who shared the same attention to detail, the same impatience with unnecessary rework, the same belief that the quality of what we shipped actually mattered. I brought them in first. Let them experience the system. Let them become advocates.</p><p>From there, adoption spread organically. Not because we mandated it, but because the system was genuinely useful.</p><p>One of my favourite examples: a team member named Manu noticed we were missing a small alert component: a green dot with a bouncing animation to indicate something was new. He built it himself: designed it, coded it, wrote the documentation, and submitted it. It went into the framework. From that point on, anyone who needed that pattern had it ready to use.</p><p>That&#8217;s the contributor model we built: not a centralised team owning everything, but every team empowered to extend the system responsibly.</p><p>That said, resistance came too, especially from designers who worried the system would constrain their creativity. I addressed this directly: a Design System doesn&#8217;t ask you to stop designing. It asks you to stop redesigning things that are already solved. Spend more time thinking about the right solution. Less time drawing the same button for the fourth time.</p><p>A few months in, the evidence spoke for itself.</p><div><hr></div><h2>What ODF Delivered</h2><p>The impact aligned with what we now know Design Systems produce, but back in 2017/2018, we were discovering this in real time:</p><p><strong>A shared source of truth.</strong> ODF became the shared reference for resolving disagreements between disciplines. Debates about button styles and spacing stopped living in Chat and started being answered by the system, an accessible reference point for agreed decisions.</p><p><strong>Faster delivery.</strong> By eliminating the need to re-solve already-solved problems, teams redirected energy to actual product work. We weren&#8217;t just saving time, we were moving it to where it mattered. Design, development, and QA all got faster. If something was built with the framework, it should look exactly like the design. If it didn&#8217;t, the problem was clear: someone wasn&#8217;t using the framework.</p><p><strong>Better quality.</strong> Fewer back-and-forths between design and development. Fewer gaps between spec and implementation. The system also produced dramatically smaller CSS files. Less duplication meant better performance at the code level.</p><p><strong>A shared language.</strong> A &#8220;large spacing&#8221; meant 16px, always. No ambiguity. No translation layer. When a designer linked to a specific component in a Confluence page, or pasted the link into a chat, the developer clicked it, landed on the exact element, copied the code, and got the right result across all four brands. Communication collapsed from paragraphs to a URL.</p><p><strong>Stored decision-making.</strong> Every design choice, every colour, spacing value, typography rule, was encoded somewhere. It stopped living in someone&#8217;s head and started living in the system. This protected our decisions from the inevitable turnover and direction changes any company experiences.</p><p>All of this was happening while eDreams was going through an agile transformation. It turned out that a Design System and agile were natural allies. Both push toward efficiency, speed, and removing waste. The timing couldn&#8217;t have been better.</p><div><hr></div><h2>The Hard Parts</h2><p>It wasn&#8217;t smooth sailing, and I&#8217;d be doing you a disservice to pretend it was.</p><p>Technically, I had to get my hands dirty in ways I hadn&#8217;t before: learning Sass properly, working in the terminal, understanding how design decisions actually translate to production code. My curiosity about how things worked helped, but the learning curve was real.</p><p>Organisationally, ODF was a side project. No official mandate. No dedicated time from leadership. Everyone was already busy shipping features. We had to make it happen alongside everything else, quietly, consistently, without waiting for permission.</p><p>Cross-platform turned out to be the hardest challenge. iOS, Android, and web had different codebases, different visual conventions, and different cultures. Native developers and designers rightly wanted to stay close to native platform patterns, not just inherit from web. In the end, ODF became a full Design System for web, and a design foundation for the other platforms: what we would call <strong>design tokens</strong> today, though that term didn&#8217;t exist yet when we built it.</p><div><hr></div><h2>What Still Holds True</h2><p>Looking back from 2026, I think ODF got the fundamentals right. Not every technical call, but the philosophy underneath it.</p><p>Here&#8217;s what I&#8217;d tell someone building a Design System today:</p><p><strong>You can have all the parts and still not have a system.</strong> A Figma library with every component isn&#8217;t a Design System. A Design System is a living agreement between designers, developers, and the product, about how decisions get made, documented, and shared.</p><p><strong>Build it as a communication tool from day one.</strong> ODF&#8217;s primary purpose was never efficiency. It was communication. When I asked whether a designer no longer needed to design because everything was in the system, my answer was: no. I need you to <em>think</em>. Which button should this be? What does the user need? The system handles the how. You still own the why. If your design files aren&#8217;t connected to your code, you have two parallel worlds that will inevitably drift apart.</p><p><strong>Documentation is not optional. It&#8217;s the product.</strong> The living site we built was arguably as important as the components themselves. Easy access to clear documentation is what turns a collection of assets into a system people actually use. A link you can paste into a chat, that opens the exact element with the exact code. That&#8217;s the system working.</p><p><strong>Show, don&#8217;t sell.</strong> Nobody believes in a Design System that doesn&#8217;t exist yet. Build something small, make it work, and let people experience it. The coffee machine moment can&#8217;t be planned, but it can be enabled.</p><p><strong>A Design System is a living being.</strong> It evolves. It corrects wrong decisions after they&#8217;ve been implemented. It absorbs new technology: AI, new tools, new patterns. The Design Systems of today are integrating with tools like Figma, Lovable, and Cursor in ways we couldn&#8217;t have imagined in 2017. The principles remain constant. The implementation keeps moving.</p><div><hr></div><h2>Why This Story Still Matters</h2><p>Design Systems didn&#8217;t exist when the internet was young. And then, gradually, they became the natural and necessary evolution of how we design and build digital products at scale.</p><p>What we built with ODF in 2017, without Figma, without design tokens as a named concept, without modern component frameworks, was proof of something fundamental: the challenge of scaling design and development decisions is a system problem, not a tool problem.</p><p>The tools have changed dramatically. The problem hasn&#8217;t.</p><p>If you&#8217;re building a Design System today, the most important thing isn&#8217;t which tool you use or how many components you have on day one. It&#8217;s whether the system helps your team make better decisions, share them clearly, and know what to do even when they need to break the rules.</p><p>That&#8217;s what ODF did in 2017. And that&#8217;s what the best Design Systems still do today.</p><p>The next system would test something I didn&#8217;t know I needed to test: whether anyone wanted it at all.</p><div><hr></div><p>Turo L&#243;pez Sanabria has over 20 years of experience in Design, and nearly a decade building the infrastructure that makes digital products coherent at scale. Five Design Systems. Several companies. Today, he works at the frontier where the line between building for humans and building for machines has started to blur.</p><div><hr></div><h2>The Design Systems series</h2><p>Here&#8217;s where ODF sits in the story:<br><br>2017</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;71f10dd4-19f8-45f3-b03b-72b297ac6e13&quot;,&quot;caption&quot;:&quot;Built with HTML + Sass (code), Sketch (design), and KSS (documentation).&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;ODF: The Design System I Built Before the Playbook Existed&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-10T14:05:00.000Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/odf-the-design-system-i-built-before&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199458813,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2018</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;0fb58feb-5559-4739-bd34-0929b41dc8b7&quot;,&quot;caption&quot;:&quot;Built with Sketch, Abstract, and Frontify. No components shipped to production.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Delta: How to Tell If You&#8217;re Building Something That Matters&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:07:22.363Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/delta-how-to-tell-if-youre-building&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199459225,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2019</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;194064ee-2e25-4a61-a5d1-ed270008ce47&quot;,&quot;caption&quot;:&quot;Built with CSS, Sass, and React. Custom documentation site. Design started in Sketch, later migrated to Figma.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;SUI: How to Make a Design System Impossible to Ignore&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:09:36.129Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/sui-how-to-make-a-design-system-impossible&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199459420,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2023</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;a44ce3b5-fb1d-4f77-95d1-c6ceaac797b1&quot;,&quot;caption&quot;:&quot;Built with TypeScript (Web), Kotlin (Android), Swift (iOS). Documented in Storybook, Dokka, and ZeroHeight. Designed in Figma.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Spark: Built With Four Countries, Not For Them&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:10:30.520Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/spark-built-with-four-countries-not&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199459677,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p>2025</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;4b79a4ac-a2b4-4e38-8eba-552303bd44ee&quot;,&quot;caption&quot;:&quot;Built with TypeScript, CSS with Tailwind, Storybook, Next.js, and server components. Designed in Figma. Documented with MDX with live previews.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Panot: Built for Humans. Ready for Machines.&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-27T13:14:42.828Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/panot-built-for-humans-ready-for&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199460015,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://turolopezsanabria.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Mess That Made Design Systems Inevitable]]></title><description><![CDATA[The history of how digital products got complicated enough to need a system.]]></description><link>https://turolopezsanabria.substack.com/p/why-design-systems-exist</link><guid isPermaLink="false">https://turolopezsanabria.substack.com/p/why-design-systems-exist</guid><dc:creator><![CDATA[Turo López Sanabria]]></dc:creator><pubDate>Wed, 10 Dec 2025 21:04:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iHWp!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a76b7e7-35c8-4ecf-8426-71f5dbcbb158_751x751.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There&#8217;s probably a parallel universe where we saw all of this coming. Where we understood early on that digital products would become complex, multi-device, multi-team organisms, and we prepared accordingly.</p><p>Not in this universe.</p><div><hr></div><h2>The Tools Were Great. The Future Had Other Plans.</h2><p>I finished my degree in Graphic Design in 2001. The course was full of rules: composition, typography, colour theory, print production. Then I stepped into the web, and it felt like the opposite of all that. A new world, almost without constraints. No production costs. No print runs. No physical limits.</p><p>The tool that captured that spirit best was Macromedia Flash. You could make things move, respond, surprise. We believed &#8212; genuinely believed &#8212; that the web would evolve towards something closer to animation and advertising than to editorial design. Full-screen experiences distributed on auto-executable CDs. Microsites. Banners that took over the page.</p><p>Clients weren&#8217;t asking for anything different. Brands saw the internet as a place for identity, not for products.</p><p>This wasn&#8217;t a minority position. Design schools were teaching websites as a form of creative expression, free of the constraints that governed everything else. And there was a reasonable argument for it: unlike a newspaper or a car, digital could be corrected after delivery. You could fix things. Ship, then iterate.</p><p>That flexibility, it turned out, had a cost. We just couldn&#8217;t see it yet.</p><div><hr></div><h2>The Web Grew Up Faster Than We Did</h2><p>Screens started multiplying. Speeds increased. Interactions became richer. And then smartphones arrived, and everything we thought we understood about designing for a screen had to be rethought.</p><p>Suddenly one product needed to work on a 320px phone, a 768px tablet, a 1440px desktop, and a TV. Each at different resolutions, in different orientations, for different contexts. A user on the subway needed something different from a user at a desk. &#8220;Multi-device&#8221; wasn&#8217;t a feature request. It was the new baseline.</p><p>We reacted by going granular. Design every state. Every breakpoint. Every micro-interaction. Control everything. The pixel-perfect mentality, which made sense when a single screen was the canvas, became an obsession that didn&#8217;t scale. You cannot hand-craft every combination of every component across every device for every team working in parallel. The maths don&#8217;t work.</p><p>And the tools were still catching up. Many of us had moved from Flash to Fireworks, then to Photoshop for UI work, tools built for retouching and illustration, not for designing systems of reusable parts. Sketch arrived and felt like a revelation. Then Figma. But by the time the tools were right, the products had already grown far beyond what any individual designer could hold in their head.</p><div><hr></div><h2>The Code Side Got Complicated Too</h2><p>On the development side, something significant was shifting.</p><p>In the early days, a web page was mostly a static template that the back-end would fill with content. Your computer received a finished page from a server. Each interaction triggered a round trip: request sent, page returned, page rendered. The front-end was largely decorative. It coloured and animated what the server sent back.</p><p>That changed. The front-end started carrying real logic. Frameworks like React and Vue made it possible to build genuinely complex behaviour in the browser without a constant back-end round trip. Filters, dynamic content, real-time updates, personalisation: all of it running in the client. The front-end became a product in its own right, not a skin over a server response.</p><p>This meant components were no longer just visual elements. They had state. They had behaviour. They had data flowing through them. The same button could appear in ten different contexts, each with slightly different requirements. The same form could be used across six products with different validation rules.</p><p>And the environment kept adding complexity. Third-party services, payment gateways, chat widgets, analytics scripts: each one integrated into the product but built by a different team with different rules. Cloud infrastructure introduced real costs around traffic and data. SEO requirements meant the code had to be semantically correct, not just functional. Accessibility went from an afterthought to a legal consideration in many markets.</p><p>Each new requirement was reasonable on its own. Together, they produced something almost unmanageable.</p><div><hr></div><h2>The Debt Nobody Talked About</h2><p>All of that complexity left a residue.</p><p>Technical debt accumulated quietly. The same solution programmed five different ways by five different developers, each one technically correct, none of them consistent with the others. Style rules written inline because there wasn&#8217;t time to do it properly. A design decision made in a rush that got locked in because too many things depended on it.</p><p>Design debt piled up alongside it. Colours that drifted slightly between products. Spacing that was eyeballed rather than defined. Typography choices made by a designer who left two years ago, now replicated by everyone who came after because it was already there and changing it seemed risky.</p><p>The worst part wasn&#8217;t the inconsistency. It was where the decisions lived. In someone&#8217;s head. In a Slack message from 2019. In a Confluence page that nobody had updated since the team restructure. When the person who made the original call left the company, the reasoning left with them. What remained was the output, stripped of its context.</p><p>Adjusting something &#8220;2px to the left because it looks better&#8221; was a normal design review comment for years. Not because designers were being precious. But because there was no shared reference point. No system to appeal to. Every decision had to be argued from scratch.</p><div><hr></div><h2>The Complexity Was the Signal</h2><p>Looking back, it would be easy to frame all of this as a series of mistakes. We used the wrong tools. We moved too fast. We didn&#8217;t plan for scale.</p><p>But that&#8217;s not quite right either.</p><p>The web genuinely was a new medium, and we were figuring it out as it grew. The Flash era produced real creativity. The pixel-perfect obsession came from caring about quality. The technical debt was often the cost of shipping quickly in a competitive market, which is sometimes the right call.</p><p>What changed wasn&#8217;t that the industry got careless. What changed was that the medium matured, and the old ways of working stopped being adequate for what the products had become.</p><p>A single designer can hold a single product in their head. Two designers can negotiate. Ten designers across five teams building for eight platforms under three brands cannot operate on negotiation and goodwill alone. The coordination cost becomes the product cost. The inconsistency becomes the user experience.</p><p>Design Systems didn&#8217;t emerge because someone had a clever idea about atoms and molecules. They emerged because the alternative, continuing to design and build digital products as if they were independent artefacts, stopped being viable. The mess was the signal. The system was the response.</p><p>The question was never whether to build one. It was whether to build it deliberately, or let it build itself out of accumulated habit, technical debt, and design debt.</p><div><hr></div><p>Turo L&#243;pez Sanabria has over 20 years of experience in Design, and nearly a decade building the infrastructure that makes digital products coherent at scale. Five Design Systems. Several companies. Today, he works at the frontier where the line between building for humans and building for machines has started to blur.</p><div><hr></div><p></p><p><em>Read the companion pieces:</em></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;62c436d3-e90c-4ee4-8d48-be35b62612b2&quot;,&quot;caption&quot;:&quot;Most people discover Design Systems through a Figma file. Someone shares a library. &#8220;Here are all our components.&#8221; They browse through it, nod, and go back to their work. And then, six months later, they&#8217;re still having the same arguments about spacing. Still debating whether a button should be outlined or filled. Still building the same header in three&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Design System: Not the Figma File. The Agreement.&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-02T21:00:00.000Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/design-system-not-the-figma-file&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199513934,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;0a85097a-4756-4df4-a9d2-d7cf35ddc40a&quot;,&quot;caption&quot;:&quot;I&#8217;ve had a version of the same conversation dozens of times. I walk into a team, or join a call, and within a few minutes I can feel it. A designer says &#8220;we agreed on this pattern last sprint&#8221; and a developer says &#8220;I never saw that.&#8221; Someone refers to a component by one name; someone else uses a different name for the same thing. A decision was made thr&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;What's the Value of a Design System?&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-12-09T22:17:00.000Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/whats-the-value-of-a-design-system&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199520684,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><div><hr></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://turolopezsanabria.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[What's the Value of a Design System?]]></title><description><![CDATA[The moment the question stops being theoretical.]]></description><link>https://turolopezsanabria.substack.com/p/whats-the-value-of-a-design-system</link><guid isPermaLink="false">https://turolopezsanabria.substack.com/p/whats-the-value-of-a-design-system</guid><dc:creator><![CDATA[Turo López Sanabria]]></dc:creator><pubDate>Tue, 09 Dec 2025 22:17:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iHWp!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a76b7e7-35c8-4ecf-8426-71f5dbcbb158_751x751.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every team that&#8217;s struggling with a Design System problem looks the same from the inside. I walk in, or join a call, and I can feel it within minutes. A designer says &#8220;we agreed on this pattern last sprint&#8221; and a developer says &#8220;I never saw that.&#8221; Someone refers to a component by one name; someone else uses a different name for the same thing. A decision was made three months ago, in a Slack thread that nobody can find, by a person who has since left the team.</p><p>The friction is everywhere. And it&#8217;s quiet. Nobody is shouting. Nobody is being difficult. They&#8217;re just spending enormous amounts of energy on problems that should have been solved already.</p><p>That&#8217;s when the value of a Design System becomes undeniable. Not in a conference talk. Not in a pitch deck. In that room.</p><div><hr></div><h2>Why the question gets asked</h2><p>The question &#8220;what&#8217;s the value of a Design System?&#8221; is usually asked by someone who needs to justify an investment. A manager being asked to allocate headcount. A design lead being asked to explain why a component library takes time. A practitioner being challenged to prove ROI.</p><p>That&#8217;s a reasonable thing to need. But the framing is slightly off.</p><p>The more useful question is not &#8220;what do you gain from having one?&#8221; It&#8217;s &#8220;what breaks without one?&#8221;</p><p>Because the value of a Design System is often invisible when it&#8217;s working. When a developer can build a new feature using components that are already tested, accessible, and consistent with every other part of the product, that&#8217;s not remarkable. It&#8217;s just Tuesday. The absence of the Design System only becomes visible as accumulated friction: duplicated work, repeated conversations, inconsistent outputs, a codebase where the same problem has been solved five different ways by five different teams.</p><p>When I sit down with a team that doesn&#8217;t have a working system, the list of what&#8217;s broken is almost always the same: Decisions are made but not recorded, so they get made again. Work is done in isolation, so the same component gets built three times across three products. <strong>Quality</strong> is inconsistent, because every new piece starts from scratch rather than building on something already validated. And the <strong>communication</strong> between design and development is slow, because there&#8217;s no shared language to fall back on.</p><p><strong>Agreement</strong>. <strong>Efficiency</strong>. <strong>Quality</strong>. <strong>Communication</strong>. These aren&#8217;t abstract benefits. They&#8217;re the things that are quietly falling apart in every team that hasn&#8217;t solved this problem.</p><div><hr></div><h2>The value depends on where you&#8217;re standing</h2><p>There&#8217;s no single answer to the value question. And anyone who gives you one clean number, or one universal benefit, is simplifying something that&#8217;s genuinely layered.</p><p>A developer sees a Design System and thinks: <strong>fewer decisions to make</strong>, <strong>more time to work on actual problems</strong>, <strong>less time maintaining bespoke code</strong> that only one person understands. A designer sees it and thinks: <strong>consistency</strong> without constant policing, <strong>freedom to focus on new problems</strong> instead of re-solving old ones, a way to <strong>move faster without sacrificing quality</strong>. A product manager sees it and thinks: <strong>faster time to market</strong>, <strong>fewer QA cycles</strong>, <strong>lower risk of shipping something that&#8217;s off-brand or inaccessible</strong>.</p><p>All of them are right. The Design System is producing different value for each of them, simultaneously.</p><p>And then there&#8217;s the less visible benefit: <strong>maturity</strong>. A team that builds and uses a Design System is a team that is being forced to make real decisions and write them down. To agree on things that were previously left ambiguous. To develop a common vocabulary. The system makes all of that harder to avoid. And in doing so, it accelerates how quickly a team develops shared <strong>understanding</strong>.</p><p>That&#8217;s not a component library benefit. That&#8217;s an organisational one.</p><div><hr></div><h2>The question disappears</h2><p>Something interesting happens to teams that have built a working Design System and lived with it long enough for it to become infrastructure.</p><p>They stop talking about it.</p><p>Not because it stopped mattering. Because it stopped being the thing that needs defending or explaining or justifying. It became part of how the team works, like version control or code review. Nobody is asking &#8220;what&#8217;s the value of pull requests?&#8221; They just open one.</p><p>The conversation I keep walking into in teams without a system, the one about what was agreed, and who said what, and why this component looks different from that component, is the exact conversation that doesn&#8217;t happen in teams where the system is working. The friction I can feel in the room is the negative space where the Design System should be.</p><p>That&#8217;s the honest answer to the value question. It&#8217;s not a list of features or a set of metrics. It&#8217;s a specific kind of silence. The absence of a problem you stopped having.</p><div><hr></div><p>Turo L&#243;pez Sanabria has over 20 years of experience in Design, and nearly a decade building the infrastructure that makes digital products coherent at scale. Five Design Systems. Several companies. Today, he works at the frontier where the line between building for humans and building for machines has started to blur.</p><div><hr></div><p></p><p><em>Read the companion pieces:</em></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;322ddd89-76e4-48eb-99d3-3e243df0e689&quot;,&quot;caption&quot;:&quot;Most people discover Design Systems through a Figma file. Someone shares a library. &#8220;Here are all our components.&#8221; They browse through it, nod, and go back to their work. And then, six months later, they&#8217;re still having the same arguments about spacing. Still debating whether a button should be outlined or filled. Still building the same header in three&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Design System: Not the Figma File. The Agreement.&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-12-08T21:50:00.000Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/design-system-not-the-figma-file&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199513934,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;23f24c40-da77-4fb1-b7f0-2155cdf896a3&quot;,&quot;caption&quot;:&quot;There&#8217;s probably a parallel universe where we saw all of this coming. Where we understood early on that digital products would become complex, multi-device, multi-team organisms, and we prepared accordingly.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Mess That Made Design Systems Inevitable&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-12-10T21:04:00.000Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/why-design-systems-exist&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199516812,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://turolopezsanabria.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Design System: Not the Figma File. The Agreement.]]></title><description><![CDATA[What most people think a Design System is, and what it actually is.]]></description><link>https://turolopezsanabria.substack.com/p/design-system-not-the-figma-file</link><guid isPermaLink="false">https://turolopezsanabria.substack.com/p/design-system-not-the-figma-file</guid><dc:creator><![CDATA[Turo López Sanabria]]></dc:creator><pubDate>Mon, 08 Dec 2025 21:50:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iHWp!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a76b7e7-35c8-4ecf-8426-71f5dbcbb158_751x751.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most people discover Design Systems through a Figma file. Someone shares a library. &#8220;Here are all our components.&#8221; They browse through it, nod, and go back to their work. And then, six months later, they&#8217;re still having the same arguments about spacing. Still debating whether a button should be outlined or filled. Still building the same header in three different teams.</p><p>That Figma file wasn&#8217;t a Design System. It was a start. There&#8217;s a significant difference.</p><div><hr></div><p>The definition I keep coming back to: <strong>a Design System is the official way in which a company designs and develops its digital products. A set of rules, processes and tools that help make intelligent and coherent decisions.</strong></p><p>The most important word in that sentence is not &#8220;design.&#8221;</p><div><hr></div><h2>Why This Level of Complexity Even Exists</h2><p>To understand what a Design System actually solves, you need to understand the scale of the problem.</p><p>Take a company like Fotocasa, a real estate marketplace I worked with. On the surface: one product. In practice, it&#8217;s a constellation. Applications for professionals, for individual sellers, for home hunters. Each of those products lives across a website, a native iOS app, an Android app, and various touchpoints in advertising and social media. And behind all of it, multiple independent teams. One handles search and filtering. Another owns account creation. Another manages everything that happens once you&#8217;re logged in.</p><p>These teams work autonomously. That&#8217;s intentional, it&#8217;s how you move quickly. But they&#8217;re building parts of the same experience. A user might browse on their phone, create an account on their laptop, and complete a transaction on their tablet. Every hand-off needs to feel like the same product.</p><p>Visual consistency in that environment isn&#8217;t a nice-to-have. It&#8217;s structural. And reusable symbols in a design tool, or shared components in a code library, get you part of the way there. But only part of it.</p><div><hr></div><h2>What Doesn&#8217;t Make a Design System</h2><p>Style Guides and Brand Manuals have existed for decades. Car manufacturers, packaging designers, newspaper editorial teams: all of them have been solving consistency problems at scale long before anyone built a website.</p><p>The Lego analogy. The recipe analogy. The atoms-and-molecules analogy. All of them capture something real about how a Design System works. But none of them explain why a Design System is different from what came before.</p><p>Here&#8217;s the distinction: a Style Guide tells you what things look like. A Design System tells you how decisions get made.</p><p>You can have every token exported, every component documented, every pattern catalogued, and still not have a system. I&#8217;ve seen it many times. The parts exist. The agreement doesn&#8217;t.</p><p>Equally, I&#8217;ve seen teams with no shared Figma library, no component framework, barely any documentation, who are genuinely operating as a system. They talk to each other. They share a language. When someone says &#8220;L spacing&#8221;, everyone knows what that means. The system is in the culture, not just the tools.</p><div><hr></div><h2>The Word That Actually Matters</h2><p>The reason we need Design Systems now, and didn&#8217;t always, is that digital product development has become genuinely complex in a way it wasn&#8217;t before.</p><p>Twenty years ago, I was designing for the web using tools built for posters and advertising. Each page was painted independently. Consistency was a goal, not a requirement. There was no &#8220;multi-device reality&#8221;. Smartphones didn&#8217;t exist. Accessibility wasn&#8217;t in the conversation. A designer could change something without a deployment pipeline, without worrying about traffic costs, without understanding how a component would behave across six breakpoints.</p><p>That world is gone.</p><p>Today, the front-end carries an enormous amount of logic. Components aren&#8217;t just visual elements, they&#8217;re behaviour, state, data. The same piece of design and code gets reused, modified in real time, adapted to context. A single button might appear on web, iOS, Android, in a third-party payment gateway, in a marketing email. It needs to be consistent, accessible, performant, and easy to maintain.</p><p>This isn&#8217;t about tools getting better. It&#8217;s about the problem getting bigger. Design Systems are not a trend. They are the natural and necessary evolution of how you manage that complexity at scale.</p><div><hr></div><h2>What the System Actually Does</h2><p>A good Design System is not a collection of assets. It&#8217;s a living agreement.</p><p>It gives teams the ability to make decisions and know what to do at any given moment. Not just when following the consensus, but also when they need to break from it. That&#8217;s why documentation matters more than most people think. Not a gallery of components. A reference you can link to, quote in a conversation, open in a meeting to resolve a disagreement.</p><p>&#8220;Large spacing means 16px. Here&#8217;s the link.&#8221; That&#8217;s a system working.</p><p>It&#8217;s also, genuinely, a living thing. Not just in the sense that it evolves over time, updating with trends and absorbing new technology. But in the sense that it corrects wrong decisions after they&#8217;ve been made. It&#8217;s designed to change. That&#8217;s a feature, not a flaw.</p><p>You can have a system that works perfectly well without a unified technology platform. You can still ship consistently even while migrating half your code to a new framework. You can operate well with imperfect tooling.</p><p>What you can&#8217;t do without is the agreement underneath it all.</p><div><hr></div><h2>A Set of Rules, Processes and Tools</h2><p>The reason I keep returning to that original definition is the order of the words.</p><p>Rules first. Processes second. Tools third.</p><p>Most teams start from the other direction. They build the tools, assume the processes will follow, and discover later that the rules were never really agreed. The Figma library gets built. The component library gets built. The documentation gets built. And then someone on a new team asks a reasonable question about an edge case, and there&#8217;s no answer anywhere, because nobody agreed on the rule behind the component.</p><p>A Design System asks you to work backwards from the decision. What do we want to be true about this product? How do we want to make decisions when new problems arise? Only then: what tools will help us do that?</p><p>The teams I&#8217;ve seen build the best systems weren&#8217;t the ones with the most components. They were the ones with the clearest sense of what they were trying to agree on.</p><div><hr></div><p>Turo L&#243;pez Sanabria has over 20 years of experience in Design, and nearly a decade building the infrastructure that makes digital products coherent at scale. Five Design Systems. Several companies. Today, he works at the frontier where the line between building for humans and building for machines has started to blur.</p><div><hr></div><p></p><p>Read the companion pieces:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;a2de44a0-39a2-4086-b55a-96d326f27982&quot;,&quot;caption&quot;:&quot;There&#8217;s probably a parallel universe where we saw all of this coming. Where we understood early on that digital products would become complex, multi-device, multi-team organisms, and we prepared accordingly.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Mess That Made Design Systems Inevitable&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-02T21:04:00.000Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/why-design-systems-exist&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199516812,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;27e525f8-a23c-4f70-9963-6d9cadbd6660&quot;,&quot;caption&quot;:&quot;I&#8217;ve had a version of the same conversation dozens of times. I walk into a team, or join a call, and within a few minutes I can feel it. A designer says &#8220;we agreed on this pattern last sprint&#8221; and a developer says &#8220;I never saw that.&#8221; Someone refers to a component by one name; someone else uses a different name for the same thing. A decision was made thr&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;What's the Value of a Design System?&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:18661957,&quot;name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;bio&quot;:&quot;Head of DesignOps at Adevinta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-12-09T22:17:00.000Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://turolopezsanabria.substack.com/p/whats-the-value-of-a-design-system&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199520684,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9248209,&quot;publication_name&quot;:&quot;Turo L&#243;pez Sanabria&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!LHki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49ca48b-0418-462a-96ff-843969678f43_768x768.jpeg&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://turolopezsanabria.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Paradox of Communication]]></title><description><![CDATA[The harder we try to speak the same language, the worse we communicate.]]></description><link>https://turolopezsanabria.substack.com/p/the-paradox-of-communication</link><guid isPermaLink="false">https://turolopezsanabria.substack.com/p/the-paradox-of-communication</guid><dc:creator><![CDATA[Turo López Sanabria]]></dc:creator><pubDate>Sat, 24 May 2025 09:55:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YHlT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b515bf-77d8-423f-ac2c-964e3c1cdd4f_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Originally presented at the conference <a href="https://www.redbility.com/damn-bcn-2025/">Damn! I'm Ops Designer Bcn 2025</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SXWf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71897c9b-2569-434f-a386-e9811d7123c8_3624x1099.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SXWf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71897c9b-2569-434f-a386-e9811d7123c8_3624x1099.png 424w, https://substackcdn.com/image/fetch/$s_!SXWf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71897c9b-2569-434f-a386-e9811d7123c8_3624x1099.png 848w, https://substackcdn.com/image/fetch/$s_!SXWf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71897c9b-2569-434f-a386-e9811d7123c8_3624x1099.png 1272w, https://substackcdn.com/image/fetch/$s_!SXWf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71897c9b-2569-434f-a386-e9811d7123c8_3624x1099.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SXWf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71897c9b-2569-434f-a386-e9811d7123c8_3624x1099.png" width="1456" height="442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71897c9b-2569-434f-a386-e9811d7123c8_3624x1099.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:442,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3335768,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://turolopezsanabria.substack.com/i/200733867?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71897c9b-2569-434f-a386-e9811d7123c8_3624x1099.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SXWf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71897c9b-2569-434f-a386-e9811d7123c8_3624x1099.png 424w, https://substackcdn.com/image/fetch/$s_!SXWf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71897c9b-2569-434f-a386-e9811d7123c8_3624x1099.png 848w, https://substackcdn.com/image/fetch/$s_!SXWf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71897c9b-2569-434f-a386-e9811d7123c8_3624x1099.png 1272w, https://substackcdn.com/image/fetch/$s_!SXWf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71897c9b-2569-434f-a386-e9811d7123c8_3624x1099.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br>The Single Source of Truth is the most seductive lie in Design Systems. I know, because I&#8217;ve spent years building documentation that nobody uses.</p><p>While Developers and Designers would work with their own stack, their own world, I kept obsessing over the idea that if we could just get everyone work from one single, definitive source of truth. I kept building. Centralising. Documenting. With the hope that everything would eventually click into place.</p><p>It took one conversation to make me realise I was in love with an idea that makes no sense. The signs had been there all along, hiding in plain sight, in every frustrated developer, every ignored doc, every meeting about the same thing for the hundredth time. I was the last person in the room to see it.</p><div><hr></div><h2>The Box</h2><p>Let me paint you a picture.</p><p>Somewhere out there, a person with diabetes relies on a Personal Assistant App that monitors their blood sugar and sends them a notification every time their levels reach a critical threshold. For them, it&#8217;s simple. An alert appears. They act. It could save their life.</p><p>Now zoom out. Behind that App there&#8217;s a team: designers, web developers, iOS developers, Android developers, all working together to make sure that notification reaches that person, flawlessly, every time, on every device.</p><p>To build it consistently, that team needs components. And imagine those components live in a box. Centralised. Tested. Reusable. You reach in, grab what you need, and the product is consistently good.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YHlT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b515bf-77d8-423f-ac2c-964e3c1cdd4f_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YHlT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b515bf-77d8-423f-ac2c-964e3c1cdd4f_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!YHlT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b515bf-77d8-423f-ac2c-964e3c1cdd4f_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!YHlT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b515bf-77d8-423f-ac2c-964e3c1cdd4f_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!YHlT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b515bf-77d8-423f-ac2c-964e3c1cdd4f_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YHlT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b515bf-77d8-423f-ac2c-964e3c1cdd4f_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1b515bf-77d8-423f-ac2c-964e3c1cdd4f_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:836826,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://turolopezsanabria.substack.com/i/200733867?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b515bf-77d8-423f-ac2c-964e3c1cdd4f_1920x1080.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YHlT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b515bf-77d8-423f-ac2c-964e3c1cdd4f_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!YHlT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b515bf-77d8-423f-ac2c-964e3c1cdd4f_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!YHlT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b515bf-77d8-423f-ac2c-964e3c1cdd4f_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!YHlT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b515bf-77d8-423f-ac2c-964e3c1cdd4f_1920x1080.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This box represents something powerful: <strong>trust</strong>. You don&#8217;t need to know how it was built or who wrote the logic. You just grab the right part and ship.</p><p>This box is what the Design Systems industry has been chasing for years. The single source of truth.</p><p>And on the surface, it sounds perfect.</p><div><hr></div><h2>The Problem with the Box</h2><p>Here&#8217;s where things get complicated.</p><p>A notification on iOS is not the same as a notification on Android. And neither of them is the same as a browser push notification on Web. They look similar to the user: a little alert, some text, maybe an icon. But underneath they are entirely different animals. Different permission models. Different delivery systems. Different UI constraints. Different native patterns that users on each platform have been trained to expect.</p><p>So your one box suddenly needs to hold three completely different versions of the &#8220;same&#8221; component. And that&#8217;s before design even enters the picture, because the Figma component a designer uses to prototype a notification isn&#8217;t something any developer can ship directly. It&#8217;s a representation. A sketch of the real thing.</p><p>So now you have four boxes. One for design, one for Web, one for iOS, one for Android. Each one legitimate. Each one necessary.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1iGa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ed70eb-9b78-4de0-a1f7-ee9f2b238929_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1iGa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ed70eb-9b78-4de0-a1f7-ee9f2b238929_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!1iGa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ed70eb-9b78-4de0-a1f7-ee9f2b238929_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!1iGa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ed70eb-9b78-4de0-a1f7-ee9f2b238929_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!1iGa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ed70eb-9b78-4de0-a1f7-ee9f2b238929_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1iGa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ed70eb-9b78-4de0-a1f7-ee9f2b238929_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/62ed70eb-9b78-4de0-a1f7-ee9f2b238929_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1025510,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://turolopezsanabria.substack.com/i/200733867?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ed70eb-9b78-4de0-a1f7-ee9f2b238929_1920x1080.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1iGa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ed70eb-9b78-4de0-a1f7-ee9f2b238929_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!1iGa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ed70eb-9b78-4de0-a1f7-ee9f2b238929_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!1iGa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ed70eb-9b78-4de0-a1f7-ee9f2b238929_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!1iGa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ed70eb-9b78-4de0-a1f7-ee9f2b238929_1920x1080.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The industry&#8217;s response? Build one giant warehouse. One enormous catalogue where every discipline finds their version of every component. A multi-platform Design System. Problem solved.</p><p>Except in real life Web, Android, iOS devs and Designers don&#8217;t shop at the same store. Each discipline lives in a completely different tool, a completely different mental environment. The warehouse exists. Nobody really uses it the same way. And the team maintaining it, usually us, the Design Systems people, ends up spending most of our time being librarians and police officers instead of creating actual value.</p><div><hr></div><h2>Beckett</h2><p>About a year before I gave a talk on this topic, I was on a video call with Beckett (not his real name). He was the Android lead on a product we were building together. First-rate engineer, sharp, collaborative. We&#8217;d had several polite conversations about the same topic: getting the dev team to align with our centralised documentation in ZeroHeight.</p><p>Then one day, he looked straight into the camera, the kind of look that tells you someone is done being polite, and said:</p><p><em>&#8220;Every minute I spend consulting a catalogue outside my development environment is a minute I&#8217;m not creating value for this product. There is no valid use case where your documentation is better than my API docs in Dokka, my own code, and its comments.&#8221;</em></p><p>My first reaction was resistance. Beckett just doesn&#8217;t want to adapt. Classic change resistance.</p><p>So I asked the iOS team. And the web devs. And QA. And one by one, they all said essentially the same thing:</p><p><strong>The only source of truth that matters to me is the one that exists inside my working context.</strong></p><p>That week I had to sit with something uncomfortable: I hadn&#8217;t been building bridges. I&#8217;d been building a monument to an idea.</p><div><hr></div><h2>Context Is Everything</h2><p>What Beckett understood, and what I had to learn the hard way, is that context isn&#8217;t just <em>where</em> information lives. It&#8217;s how information relates to the natural flow of how someone thinks and works.</p><p>A designer thinks visually. They need to see spatial relationships, interaction states, component hierarchies, in Figma.</p><p>An Android developer thinks in terms of Kotlin architecture, component trees, platform-specific constraints, in their IDE.</p><p>Forcing both of them to consult the same external catalogue doesn&#8217;t unify them. It interrupts them. It pulls them out of their flow and asks them to translate between two different mental models before they can get back to work.</p><p>The documentation tools are powerful. I&#8217;ve used and advocated for special pages in  Sketch libraries, guidelines in Figma, Frontify, ZeroHeight, InVision. All of them. And they have their place: a reasonably up-to-date snapshot of what exists across your universe. A map.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V-4I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18634eb5-b1f6-4d0f-afad-b0fbc62ec630_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V-4I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18634eb5-b1f6-4d0f-afad-b0fbc62ec630_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!V-4I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18634eb5-b1f6-4d0f-afad-b0fbc62ec630_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!V-4I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18634eb5-b1f6-4d0f-afad-b0fbc62ec630_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!V-4I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18634eb5-b1f6-4d0f-afad-b0fbc62ec630_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V-4I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18634eb5-b1f6-4d0f-afad-b0fbc62ec630_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18634eb5-b1f6-4d0f-afad-b0fbc62ec630_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1384326,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://turolopezsanabria.substack.com/i/200733867?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18634eb5-b1f6-4d0f-afad-b0fbc62ec630_1920x1080.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V-4I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18634eb5-b1f6-4d0f-afad-b0fbc62ec630_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!V-4I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18634eb5-b1f6-4d0f-afad-b0fbc62ec630_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!V-4I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18634eb5-b1f6-4d0f-afad-b0fbc62ec630_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!V-4I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18634eb5-b1f6-4d0f-afad-b0fbc62ec630_1920x1080.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>But a map is not the territory. No designer can design from a catalogue entry. No developer can write code from a documentation page. These tools tell you what&#8217;s in each box. They are not the box.</p><div><hr></div><h2>The Real Source of Truth</h2><p>Here&#8217;s what I believe now:</p><p><strong>A single source of truth cannot exist. Truth depends on context. And context is almost always different for each discipline.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RQri!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b04166f-f1d2-4561-8ae6-a673537f1229_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RQri!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b04166f-f1d2-4561-8ae6-a673537f1229_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!RQri!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b04166f-f1d2-4561-8ae6-a673537f1229_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!RQri!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b04166f-f1d2-4561-8ae6-a673537f1229_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!RQri!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b04166f-f1d2-4561-8ae6-a673537f1229_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RQri!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b04166f-f1d2-4561-8ae6-a673537f1229_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4b04166f-f1d2-4561-8ae6-a673537f1229_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:988780,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://turolopezsanabria.substack.com/i/200733867?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b04166f-f1d2-4561-8ae6-a673537f1229_1920x1080.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RQri!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b04166f-f1d2-4561-8ae6-a673537f1229_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!RQri!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b04166f-f1d2-4561-8ae6-a673537f1229_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!RQri!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b04166f-f1d2-4561-8ae6-a673537f1229_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!RQri!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b04166f-f1d2-4561-8ae6-a673537f1229_1920x1080.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>What we actually need isn&#8217;t one box. We need multiple boxes, each one living exactly where each discipline works, connected not by a shared tool, but by a shared language.</p><p>When we built Spark, the most ambitious Design System I have ever been part of, twenty people across four countries and three platforms, we made a deliberate choice about documentation. Instead of one unified catalogue, we built three separate surfaces: ZeroHeight for designers and product managers, Storybook for web developers, and Dokka for Android developers. Three surfaces, each living exactly where each discipline works. Forcing everyone into the same format doesn&#8217;t create alignment. It creates people who stop reading.</p><p>If we all agree that buttons come in small, medium, and large, that colours are Main, Accent, and Support, that shared vocabulary is more than enough to build excellent products together. The <code>main</code> token in Panot is the clearest example I can give you. One name agreed across the whole team. In Figma, a variable. In CSS, <code>--colors-main</code>. In Kotlin, a resource reference. In Swift, something else again. Four different implementations. One shared vocabulary. That is the system working.</p><p>The specific hex values matter less than the agreement. The alignment matters more than the artefact.</p><p>A note in a pull request is worth more than a comment in ZeroHeight. A weekly sync, a pair-design session, a shared prototype review: these create shared understanding in a way that no catalogue ever will.</p><p>When you&#8217;re talking to an iOS team, speak iOS. When you&#8217;re presenting to designers, speak design. Professional empathy, meeting people in their context, is more valuable than enforced standardisation.</p><div><hr></div><h2>The Paradox</h2><p>I&#8217;ve spent a lot of my career trying to get everyone to speak exactly the same language. And what I&#8217;ve discovered is that the harder you push for that, the less real communication happens.</p><p>The documentation we&#8217;re so proud of? It&#8217;s often killing the authentic dialogue that drives real innovation and alignment.</p><p>Rules first. Processes second. Tools third. Most teams start from the other direction, and wonder why the system never feels like it truly belongs to everyone.</p><p>We don&#8217;t need a single source of truth. We need multiple truths that talk to each other.</p><p>The box was never the answer. The conversation was.<br></p><div><hr></div><p>Turo L&#243;pez Sanabria has over 20 years of experience in Design, and nearly a decade building the infrastructure that makes digital products coherent at scale. Five Design Systems. Several companies. Today, he works at the frontier where the line between building for humans and building for machines has started to blur.</p><div><hr></div><p></p>]]></content:encoded></item></channel></rss>