CINXE.COM

Design and Development agency building web and mobile products - thoughtbot

<!DOCTYPE html> <html class="smooth-scroll" lang="en" itemtype="http://schema.org/WebPage" itemscope > <head> <meta charset="utf-8"> <meta content="IE=edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" > <title> Design and Development agency building web and mobile products - thoughtbot </title> <meta name="title" content="Design and Development agency building web and mobile products - thoughtbot"> <meta name="description" content="Looking for a nearby developer? Hire thoughtbot, a design and development agency that provides design and development services for mobile and web applications."> <meta property="og:type" content="article"> <meta property="og:site_name" content="thoughtbot"> <meta property="og:url" content="https://thoughtbot.com/"> <meta property="og:title"> <meta property="og:description" content="Looking for a nearby developer? Hire thoughtbot, a design and development agency that provides design and development services for mobile and web applications."> <meta property="og:image" content="//thoughtbot.com/social/social-media-banner-generic.png"> <meta property="og:image:alt"> <meta name="twitter:card" content="summary"> <meta name="twitter:site" content="@thoughtbot"> <meta name="twitter:creator" content="@thoughtbot"> <meta name="twitter:url" content="https://thoughtbot.com/"> <meta name="twitter:title"> <meta name="twitter:description" content="Looking for a nearby developer? Hire thoughtbot, a design and development agency that provides design and development services for mobile and web applications."> <meta name="twitter:image"> <link rel="icon" href="/favicon.ico" sizes="any"> <link rel="icon" href="/favicon.svg" type="image/svg+xml"> <link rel="preload" href="//thoughtbot.com/assets/CalibreWeb-Regular-7c3e24452ab560fd22dc64e9272e1ca4f119b94827c43b3b0c491f0f2547ef11.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="//thoughtbot.com/assets/CalibreWeb-Semibold-f77ebe3d76e09e1632c0dad97b99fba5c28e2334adf09639ffd6019bd7f10fd6.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="canonical" href="https://thoughtbot.com/"> <link rel="preconnect" href="https://images.prismic.io"> <link rel="stylesheet" href="//thoughtbot.com/assets/application/application-4a31865a692b92db0ba04c201529bf881d7f42af66515f3d567de68a3a5eb5d6.css" media="screen" /> <link rel="alternate" type="application/rss+xml" title="RSS" href="https://feed.thoughtbot.com" /> </head> <body class="tbds-app-frame home home-show"> <!-- prettier-ignore --> <header class="links-no-underline shim-sticky u-margin-bottom-6" data-controller="application-header dropdown-menu"> <a class="skip-nav" href="#main">Skip to main content</a> <div class="application-header" data-controller="twitch"> <a class="application-header__logo" href="/"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 223.99 54.95" role="img" aria-labelledby="a4bo59zfv9bqfkvptfya0ouon8bolbil" class="logo-ralph-and-wordmark"><title id="a4bo59zfv9bqfkvptfya0ouon8bolbil">thoughtbot</title><defs><style>.cls-1{fill:#e03131;}.cls-2{fill:#fff;fill-rule:evenodd;}</style></defs><g><path class="cls-1" d="M95.46,35.46H91.75V26.7A6.38,6.38,0,0,0,91,23.13,3.05,3.05,0,0,0,88.31,22a4.07,4.07,0,0,0-3.45,1.6V35.46H81.15V10.88h3.71v9.44a5.78,5.78,0,0,1,3.81-1.45q6.8,0,6.79,7.84v8.75Zm2.66-8.13A9.63,9.63,0,0,1,98.69,24a7.82,7.82,0,0,1,1.64-2.69,7.67,7.67,0,0,1,2.59-1.78,8.49,8.49,0,0,1,3.4-.66,8.35,8.35,0,0,1,3.38.66,7.68,7.68,0,0,1,2.58,1.8A8.2,8.2,0,0,1,113.93,24a9,9,0,0,1,.59,3.31,9.47,9.47,0,0,1-.57,3.31,8.28,8.28,0,0,1-1.64,2.69,7.72,7.72,0,0,1-2.59,1.8,8.66,8.66,0,0,1-3.4.65,8.57,8.57,0,0,1-3.41-.65,7.64,7.64,0,0,1-4.22-4.46,9.52,9.52,0,0,1-.58-3.34Zm3.8,0a6,6,0,0,0,1.17,3.9,4.35,4.35,0,0,0,6.47,0,6.06,6.06,0,0,0,1.16-3.9,6,6,0,0,0-1.16-3.88,4.37,4.37,0,0,0-6.47,0,5.93,5.93,0,0,0-1.17,3.88Zm29.37,8.13h-3.41l-.16-1.22a5.52,5.52,0,0,1-3.91,1.54q-6.63,0-6.63-7.63v-9h3.71v8.71a6.24,6.24,0,0,0,.82,3.59,3,3,0,0,0,2.59,1.14,3.86,3.86,0,0,0,3.29-1.51V19.17h3.7V35.46Zm10.13,8.19a13,13,0,0,1-3.35-.39,7.67,7.67,0,0,1-2.39-1.07,4.79,4.79,0,0,1-1.45-1.54,3.79,3.79,0,0,1-.49-1.85q0-2.4,2.76-3.64a2.42,2.42,0,0,1,.16-4.56,6,6,0,0,1-2.59-5.27,7,7,0,0,1,.46-2.57,5.73,5.73,0,0,1,1.31-2.05,6.18,6.18,0,0,1,2.09-1.35,7.55,7.55,0,0,1,2.77-.49,7,7,0,0,1,3.84,1.05,8,8,0,0,1,3.64-.79H149l-.29,2.39h-1.25a9.94,9.94,0,0,0-1.25.1,6.13,6.13,0,0,1,1.15,3.67,7,7,0,0,1-.44,2.48,5.87,5.87,0,0,1-1.3,2.05,6.08,6.08,0,0,1-2.08,1.39,7.21,7.21,0,0,1-2.78.51,8.27,8.27,0,0,1-1.9-.2.77.77,0,0,0-.49.66.64.64,0,0,0,.21.49,2,2,0,0,0,.71.36,9.9,9.9,0,0,0,1.33.31c.55.1,1.26.2,2.11.31s1.47.25,2.23.43a8.07,8.07,0,0,1,2.1.78,4.78,4.78,0,0,1,1.58,1.38,3.91,3.91,0,0,1,.69,2.2,4.39,4.39,0,0,1-2.07,3.78,10.22,10.22,0,0,1-5.84,1.43Zm-.72-22a3,3,0,0,0-2.41,1,4,4,0,0,0-.84,2.66A3.89,3.89,0,0,0,138.3,28a3,3,0,0,0,2.43,1,3,3,0,0,0,2.41-1,4,4,0,0,0,.84-2.68,3.87,3.87,0,0,0-.86-2.64,3.06,3.06,0,0,0-2.42-1Zm.88,14.72-2.26-.33a4.17,4.17,0,0,0-1.71,1A2,2,0,0,0,137,38.5a2,2,0,0,0,1.15,1.79,6.34,6.34,0,0,0,3.21.67,7.19,7.19,0,0,0,3.33-.66,1.92,1.92,0,0,0,1.27-1.7,1.54,1.54,0,0,0-1.12-1.43,13.8,13.8,0,0,0-3.22-.77Zm45.73-.63a6.31,6.31,0,0,1-4.33-1.6l-.13,1.28h-3.44V10.88h3.71v9.4a6.13,6.13,0,0,1,4.2-1.41,7.61,7.61,0,0,1,3.21.66A7.14,7.14,0,0,1,193,21.31,8.1,8.1,0,0,1,194.57,24a10.3,10.3,0,0,1,0,6.64A7.94,7.94,0,0,1,193,33.32a7.28,7.28,0,0,1-2.46,1.81,7.94,7.94,0,0,1-3.26.65ZM187,22a3.57,3.57,0,0,0-3,1.41,6.28,6.28,0,0,0-1.08,3.9,6.34,6.34,0,0,0,1.08,4,3.57,3.57,0,0,0,3,1.39,3.74,3.74,0,0,0,3.13-1.49,6.07,6.07,0,0,0,1.17-3.85,6.11,6.11,0,0,0-1.15-3.84A3.79,3.79,0,0,0,187,22ZM165.27,35.46h-3.71V26.7a6.29,6.29,0,0,0-.79-3.57A3,3,0,0,0,158.11,22a4,4,0,0,0-3.44,1.6V35.46H151V10.88h3.7v9.44a5.78,5.78,0,0,1,3.81-1.45q6.79,0,6.79,7.84v8.75Zm11.37-2.72-.33,3h-2.82a5.1,5.1,0,0,1-1.91-.32,4,4,0,0,1-1.36-.89,3.46,3.46,0,0,1-.8-1.31,4.82,4.82,0,0,1-.27-1.64V22.18h-2.46l.33-3h2.14V14.32l3.7-.39v5.24h3.81v3h-3.81v7.74a13.12,13.12,0,0,0,.07,1.59,1.3,1.3,0,0,0,.33.83,1.27,1.27,0,0,0,.82.33,12.32,12.32,0,0,0,1.54.07Zm20.47-5.41a9.63,9.63,0,0,1,.57-3.33,7.82,7.82,0,0,1,1.64-2.69,7.71,7.71,0,0,1,2.6-1.78,8.44,8.44,0,0,1,3.39-.66,8.32,8.32,0,0,1,3.38.66,7.68,7.68,0,0,1,2.58,1.8A8.39,8.39,0,0,1,212.93,24a9.66,9.66,0,0,1,0,6.62,8.11,8.11,0,0,1-1.64,2.69,7.62,7.62,0,0,1-2.59,1.8,9.24,9.24,0,0,1-6.81,0,7.86,7.86,0,0,1-2.57-1.79,7.73,7.73,0,0,1-1.64-2.67,9.3,9.3,0,0,1-.58-3.34Zm3.8,0a6,6,0,0,0,1.17,3.9,4.34,4.34,0,0,0,6.46,0,6,6,0,0,0,1.17-3.9,5.93,5.93,0,0,0-1.17-3.88,4.36,4.36,0,0,0-6.46,0,5.93,5.93,0,0,0-1.17,3.88Zm23,5.41-.33,3H220.8a5.08,5.08,0,0,1-1.9-.32,3.87,3.87,0,0,1-1.36-.89,3.46,3.46,0,0,1-.8-1.31,4.82,4.82,0,0,1-.27-1.64V22.18H214l.33-3h2.13V14.32l3.71-.39v5.24H224v3h-3.81v7.74a13.12,13.12,0,0,0,.07,1.59,1.3,1.3,0,0,0,.33.83,1.27,1.27,0,0,0,.82.33,12.32,12.32,0,0,0,1.54.07h1Zm-145.45,0-.33,3H75.35a5.1,5.1,0,0,1-1.91-.32,4,4,0,0,1-1.36-.89,3.46,3.46,0,0,1-.8-1.31A4.82,4.82,0,0,1,71,31.62V22.18H68.55l.33-3H71V14.32l3.71-.39v5.24h3.81v3H74.72v7.74a13.12,13.12,0,0,0,.07,1.59,1.3,1.3,0,0,0,.33.83,1.27,1.27,0,0,0,.82.33,12.32,12.32,0,0,0,1.54.07h1"></path></g><g><path class="cls-1" d="M27.47,55A27.48,27.48,0,1,0,0,27.47,27.48,27.48,0,0,0,27.47,55Z"></path><g><path class="cls-2" d="M27.84,6.37a8.81,8.81,0,0,1,6.42,2.48l.68-1a10.05,10.05,0,0,0-7.1-2.7,10,10,0,0,0-7.11,2.71l.67,1A8.85,8.85,0,0,1,27.84,6.37Zm4.48,3.79a7.27,7.27,0,0,0-4.41-1.39h0a7.27,7.27,0,0,0-4.41,1.39,4.71,4.71,0,0,0-.73.68l-.69-1a8.12,8.12,0,0,1,5.83-2.26,8.13,8.13,0,0,1,5.73,2.17l-.68,1A6.07,6.07,0,0,0,32.32,10.16Zm-4.48,1.12a5.49,5.49,0,0,1,3.79,1.4l.68-1a6.67,6.67,0,0,0-4.47-1.6,6.66,6.66,0,0,0-4.48,1.6l.68,1A5.45,5.45,0,0,1,27.84,11.28ZM19.49,29.6v7.9a2.69,2.69,0,0,1,.62,1.64,2.56,2.56,0,0,1-.89,1.94l-.68-.69a1.57,1.57,0,0,0,.61-1.25,1.54,1.54,0,1,0-2.47,1.25l-.67.68a2.54,2.54,0,0,1-.9-1.93,2.48,2.48,0,0,1,.57-1.64V25.24a.94.94,0,0,1,.89-.86H38.72a.93.93,0,0,1,.89.85V37.51a2.82,2.82,0,0,1,.57,1.63,2.58,2.58,0,0,1-.89,1.94l-.68-.69a1.6,1.6,0,0,0,.61-1.25,1.54,1.54,0,1,0-2.47,1.25l-.67.69a2.49,2.49,0,0,1-.89-1.94,2.75,2.75,0,0,1,.61-1.64V29.67H34.72V46.25l.64.42V48H27.93V46.67l.83-.41V41.14H26.6v5.11l.76.42V48H19.87V46.67l.76-.42V29.6Zm2.6-15.66H33.34a.88.88,0,0,1,.88.86v7.46a.87.87,0,0,1-.88.84H22.09a.83.83,0,0,1-.82-.84V14.8A.84.84,0,0,1,22.09,13.94Zm2.76,5.48A1.46,1.46,0,1,1,26.28,18a1.45,1.45,0,0,1-1.43,1.46ZM29.17,18a1.45,1.45,0,0,0,1.43,1.46h0A1.46,1.46,0,1,0,29.17,18Zm-3.59,0a.73.73,0,1,1-.73-.74.72.72,0,0,1,.52.21A.7.7,0,0,1,25.58,18Zm4.29,0a.74.74,0,1,0,1.47,0,.74.74,0,1,0-1.47,0Z"></path></g></g></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 65.19 65.19" role="img" aria-labelledby="a52wgpmzg4ruth00rqulvha8ue0r2fwa" class="logo-ralph-only"><title id="a52wgpmzg4ruth00rqulvha8ue0r2fwa">thoughtbot</title><defs><style>.cls-1{fill:#e03131;}.cls-2{fill:#fff;fill-rule:evenodd;}</style></defs><path class="cls-1" d="M32.6,65.19A32.6,32.6,0,1,0,0,32.6,32.59,32.59,0,0,0,32.6,65.19Z"></path><path class="cls-2" d="M33,7.55a10.48,10.48,0,0,1,7.62,3l.8-1.16A11.9,11.9,0,0,0,33,6.15a11.94,11.94,0,0,0-8.44,3.21l.8,1.16A10.48,10.48,0,0,1,33,7.55Zm5.32,4.51a8.62,8.62,0,0,0-5.24-1.65h0a8.61,8.61,0,0,0-5.23,1.65,6,6,0,0,0-.87.8l-.81-1.17A9.59,9.59,0,0,1,33.11,9a9.67,9.67,0,0,1,6.8,2.56l-.8,1.17A6.23,6.23,0,0,0,38.35,12.06ZM33,13.39A6.53,6.53,0,0,1,37.52,15l.81-1.16a8.37,8.37,0,0,0-10.62,0l.81,1.17A6.52,6.52,0,0,1,33,13.39ZM23.12,35.12v9.37a3.1,3.1,0,0,1,.73,1.94,3.05,3.05,0,0,1-1.05,2.31L22,47.92a1.86,1.86,0,0,0,.73-1.48,1.83,1.83,0,1,0-3.65,0,1.86,1.86,0,0,0,.72,1.47l-.8.82a3,3,0,0,1-1.06-2.29,2.9,2.9,0,0,1,.68-1.95V29.94a1.1,1.1,0,0,1,1.05-1H45.93a1.11,1.11,0,0,1,1.06,1V44.5a3.34,3.34,0,0,1,.68,1.94,3,3,0,0,1-1.05,2.29l-.81-.81a1.9,1.9,0,0,0,.72-1.48,1.83,1.83,0,1,0-2.93,1.48l-.8.82a3,3,0,0,1-1.06-2.3,3.31,3.31,0,0,1,.73-1.95V35.2H41.19V54.87l.76.5V57H33.14V55.37l1-.48V48.81H31.56v6.06l.9.5V57H23.57V55.37l.91-.5V35.12Zm3.09-18.58H39.56a1,1,0,0,1,1,1V26.4a1,1,0,0,1-1,1H26.21a1,1,0,0,1-1-1V17.56A1,1,0,0,1,26.21,16.54ZM29.48,23a1.73,1.73,0,1,1,1.7-1.72A1.71,1.71,0,0,1,29.48,23Zm5.12-1.72A1.72,1.72,0,0,0,36.31,23h0a1.73,1.73,0,1,0-1.71-1.72Zm-4.25,0a.87.87,0,1,1-.87-.89.9.9,0,0,1,.62.26A.93.93,0,0,1,30.35,21.31Zm5.09,0a.87.87,0,1,0,1.74,0,.87.87,0,1,0-1.74,0Z"></path></svg> </a> <div class="application-header__mobile-search"> <button name="button" type="button" class="application-header__search-button" aria-expanded="false" data-action="click-&gt;application-header#openSearch"> <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28" role="img" aria-labelledby="aav91dqt7ymo5fylnvuttvbw4n0ywb7u" class="application-header__search-icon"><title id="aav91dqt7ymo5fylnvuttvbw4n0ywb7u">Search thoughtbot.com</title> <path fill-rule="evenodd" clip-rule="evenodd" d="M19.6804 18.0337C22.5314 14.3722 22.2739 9.07472 18.9078 5.70867C15.263 2.06378 9.35342 2.06378 5.70852 5.70867C2.06363 9.35357 2.06363 15.2631 5.70852 18.908C9.07457 22.274 14.372 22.5316 18.0336 19.6805C18.0494 19.6984 18.0658 19.7159 18.0829 19.733L23.0326 24.6827C23.4883 25.1383 24.2269 25.1383 24.6826 24.6827C25.1382 24.2271 25.1382 23.4884 24.6826 23.0328L19.7328 18.083C19.7157 18.066 19.6982 18.0495 19.6804 18.0337ZM17.2579 7.35859C19.9916 10.0923 19.9916 14.5244 17.2579 17.2581C14.5243 19.9918 10.0921 19.9918 7.35844 17.2581C4.62477 14.5244 4.62477 10.0923 7.35844 7.35859C10.0921 4.62492 14.5243 4.62492 17.2579 7.35859Z"></path> </svg> </button> <button name="button" type="button" class="application-header__button icon-button" data-twitch-target="iconButton" aria-expanded="false" data-action="click-&gt;application-header#toggleMobileMenu click-&gt;mobile-menu-button#toggleState" data-controller="mobile-menu-button"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 20" width="28" height="28" aria-hidden="true" class="application-header__mobile-icon"><path d="M25 16v4H0v-4h25zm0-8v4H0V8h25zm0-8v4H0V0h25z" fill-rule="evenodd"></path></svg> <span class="u-hide-visually">Menu</span> </button> </div> <nav class="application-nav" aria-label="Main"> <span class="application-nav__mobile-header"> <button name="button" type="button" class="application-header__search-button" aria-expanded="false" data-action="click-&gt;application-header#openSearch"> <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28" role="img" aria-labelledby="ahbdnwgot43bntnkiyqmhj34o46vx8kt" class="application-header__search-icon"><title id="ahbdnwgot43bntnkiyqmhj34o46vx8kt">Search thoughtbot.com</title> <path fill-rule="evenodd" clip-rule="evenodd" d="M19.6804 18.0337C22.5314 14.3722 22.2739 9.07472 18.9078 5.70867C15.263 2.06378 9.35342 2.06378 5.70852 5.70867C2.06363 9.35357 2.06363 15.2631 5.70852 18.908C9.07457 22.274 14.372 22.5316 18.0336 19.6805C18.0494 19.6984 18.0658 19.7159 18.0829 19.733L23.0326 24.6827C23.4883 25.1383 24.2269 25.1383 24.6826 24.6827C25.1382 24.2271 25.1382 23.4884 24.6826 23.0328L19.7328 18.083C19.7157 18.066 19.6982 18.0495 19.6804 18.0337ZM17.2579 7.35859C19.9916 10.0923 19.9916 14.5244 17.2579 17.2581C14.5243 19.9918 10.0921 19.9918 7.35844 17.2581C4.62477 14.5244 4.62477 10.0923 7.35844 7.35859C10.0921 4.62492 14.5243 4.62492 17.2579 7.35859Z"></path> </svg> </button> <button name="button" type="button" class="icon-button" data-action="click-&gt;application-header#toggleMobileMenu" aria-expanded="false"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none" aria-hidden="true" class="application-header__close-icon"> <path d="M2.30035 0.414694C1.77965 -0.106005 0.935433 -0.106005 0.414734 0.414694C-0.105965 0.935393 -0.105965 1.77961 0.414734 2.30031L8.11438 9.99996L0.414814 17.6995C-0.105885 18.2202 -0.105885 19.0644 0.414814 19.5851C0.935513 20.1058 1.77973 20.1058 2.30043 19.5851L10 11.8856L17.6996 19.5851C18.2203 20.1058 19.0645 20.1058 19.5852 19.5851C20.1059 19.0644 20.1059 18.2202 19.5852 17.6995L11.8856 9.99996L19.5853 2.30031C20.106 1.77961 20.106 0.935393 19.5853 0.414694C19.0646 -0.106005 18.2203 -0.106005 17.6996 0.414694L10 8.11434L2.30035 0.414694Z" fill="currentColor"></path> </svg> <span class="u-hide-visually">Close Menu</span> </button> </span> <ul class="application-nav__row"> <li class="application-nav__item mobile-nav-only"> <a id="twitch-button-mobile" class="site-nav-live-link" style="display: none" data-twitch-target="twitchButtonMobile" href="https://www.twitch.tv/thoughtbot"> <span class="live-link-content"> Live on Twitch! </span> <div class="live-link-modal"> <div class="live-link-modal-content"> <div id="twitch-player-mobile" class="live-link-modal-content-player"></div> <h4>thoughtbot is livestreaming</h4> <p>Work alongside the thoughtbot team as we collaborate with each other and our clients, live. Ask us anything, we&#39;re live right now!</p> </div> </div> </a> </li> <li class="application-nav__item"> <button name="button" type="button" class="application-nav__link-button " id="services" data-action="click-&gt;dropdown-menu#toggleDropdown click-&gt;dropdown-menu#toggleState" data-dropdown-menu-target="dropdownButton" class_active="application-nav__link--active" aria-expanded="false"> Services <svg xmlns="http://www.w3.org/2000/svg" width="12" height="8" viewBox="0 0 12 8" fill="none" aria-hidden="true" class="chevron"> <path d="M1.62072 0.818115L0.560059 1.87878L5.86335 7.1821L11.1666 1.8788L10.106 0.818137L5.86336 5.06076L1.62072 0.818115Z" fill="currentColor"></path> </svg> </button> </li> <li class="application-nav__item"> <a class="application-nav__link" href="/case-studies">Case Studies</a> </li> <li class="application-nav__item"> <a class="application-nav__link" href="/blog">Blog</a> </li> <li class="application-nav__item"> <button name="button" type="button" class="application-nav__link-button " id="resources" data-action="click-&gt;dropdown-menu#toggleDropdown click-&gt;dropdown-menu#toggleState" data-dropdown-menu-target="dropdownButton" class_active="application-nav__link--active" aria-expanded="false"> Resources <svg xmlns="http://www.w3.org/2000/svg" width="12" height="8" viewBox="0 0 12 8" fill="none" aria-hidden="true" class="chevron"> <path d="M1.62072 0.818115L0.560059 1.87878L5.86335 7.1821L11.1666 1.8788L10.106 0.818137L5.86336 5.06076L1.62072 0.818115Z" fill="currentColor"></path> </svg> </button> </li> <li class="application-nav__item mobile-nav-only"> <a class="application-nav__link header-button" href="/hire-us">Let’s Talk</a> </li> </ul> </nav> <a id="twitch-button" class="site-nav-live-link" style="display: none" data-twitch-target="twitchButton" href="https://www.twitch.tv/thoughtbot"> <span class="live-link-content"> Live on Twitch! </span> <div class="live-link-modal"> <div class="live-link-modal-content"> <div id="twitch-player" class="live-link-modal-content-player"></div> <h4>thoughtbot is livestreaming</h4> <p>Work alongside the thoughtbot team as we collaborate with each other and our clients, live. Ask us anything, we&#39;re live right now!</p> </div> </div> </a> <div class="application-header__cta-group application-header__button-group"> <button name="button" type="button" class="application-header__search-button" aria-expanded="false" data-action="click-&gt;application-header#openSearch"> <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28" role="img" aria-labelledby="ad8we0pf1gxmp1xo6yt7onavfztjlwvy" class="application-header__search-icon"><title id="ad8we0pf1gxmp1xo6yt7onavfztjlwvy">Search thoughtbot.com</title> <path fill-rule="evenodd" clip-rule="evenodd" d="M19.6804 18.0337C22.5314 14.3722 22.2739 9.07472 18.9078 5.70867C15.263 2.06378 9.35342 2.06378 5.70852 5.70867C2.06363 9.35357 2.06363 15.2631 5.70852 18.908C9.07457 22.274 14.372 22.5316 18.0336 19.6805C18.0494 19.6984 18.0658 19.7159 18.0829 19.733L23.0326 24.6827C23.4883 25.1383 24.2269 25.1383 24.6826 24.6827C25.1382 24.2271 25.1382 23.4884 24.6826 23.0328L19.7328 18.083C19.7157 18.066 19.6982 18.0495 19.6804 18.0337ZM17.2579 7.35859C19.9916 10.0923 19.9916 14.5244 17.2579 17.2581C14.5243 19.9918 10.0921 19.9918 7.35844 17.2581C4.62477 14.5244 4.62477 10.0923 7.35844 7.35859C10.0921 4.62492 14.5243 4.62492 17.2579 7.35859Z"></path> </svg> </button> <a class="application-header__hire-us header-button header-button--small" href="/hire-us">Let’s get started!</a> </div> </div> <div class="application-header__dropdown-container" data-dropdown-menu-target="services" tabIndex="0" aria-label="Navigation dropdown expanded"> <button name="button" type="button" class="dropdown-background application-nav__link-button" id="services" data-action="click-&gt;dropdown-menu#toggleDropdown click-&gt;dropdown-menu#toggleState" data-dropdown-menu-target="dropdownButton" class_active="application-nav__link--active" aria-expanded="false" aria-hidden="true"> </button> <span class="application-nav__mobile-header"> <button name="button" type="button" class="back-button" data-action="click-&gt;dropdown-menu#toggleDropdownMobileClose" aria-expanded="false"> <svg xmlns="http://www.w3.org/2000/svg" width="9" height="16" viewBox="0 0 9 16" fill="none" aria-hidden="true"> <path d="M8.48525 2.34317L7.07104 0.928955L0 8.00001L7.07107 15.0711L8.48528 13.6569L2.82842 8L8.48525 2.34317Z" fill="currentColor"></path> </svg> Back </button> <button name="button" type="button" class="icon-button" data-action="click-&gt;dropdown-menu#toggleDropdownMobileClose click-&gt;application-header#toggleMobileMenu" aria-expanded="false"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none" aria-hidden="true" class="application-header__close-icon"> <path d="M2.30035 0.414694C1.77965 -0.106005 0.935433 -0.106005 0.414734 0.414694C-0.105965 0.935393 -0.105965 1.77961 0.414734 2.30031L8.11438 9.99996L0.414814 17.6995C-0.105885 18.2202 -0.105885 19.0644 0.414814 19.5851C0.935513 20.1058 1.77973 20.1058 2.30043 19.5851L10 11.8856L17.6996 19.5851C18.2203 20.1058 19.0645 20.1058 19.5852 19.5851C20.1059 19.0644 20.1059 18.2202 19.5852 17.6995L11.8856 9.99996L19.5853 2.30031C20.106 1.77961 20.106 0.935393 19.5853 0.414694C19.0646 -0.106005 18.2203 -0.106005 17.6996 0.414694L10 8.11434L2.30035 0.414694Z" fill="currentColor"></path> </svg> </button> </span> <div class="header-container application-header__dropdown"> <a href="/services" class="application-header__list-header-mobile-only"> View all Services <span> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="10" viewBox="0 0 16 10" fill="none" aria-hidden="true"> <path d="M10.5315 9.71396L9.35578 8.53269L12.081 5.82022L0.743446 5.80881L0.745124 4.14215L12.0516 4.15352L9.37232 1.46164L10.5536 0.285888L15.2566 5.01095L10.5315 9.71396Z" fill="currentColor"></path> </svg> </span> </a> <div class="application-header__dropdown-block"> <span class="application-header__list-header">Development</span> <ul> <li> <a class="application-nav__link" href="/services/ruby-on-rails-development">Ruby on Rails</a> </li> <li> <a class="application-nav__link" href="/services/hotwire-stimulus-turbo-frontend-development">Hotwire</a> </li> <li> <a class="application-nav__link" href="/services/machine-learning-artificial-intelligence-ai">AI and Machine Learning</a> </li> <li> <a class="application-nav__link" href="/services/rails-maintenance">Maintenance</a> </li> <li> <a class="application-nav__link" href="/services/mobile-development">Mobile</a> </li> </ul> </div> <div class="application-header__dropdown-block"> <span class="application-header__list-header">Design</span> <ul> <li> <a class="application-nav__link" href="/services/discovery-sprint">Discovery Sprints</a> </li> <li> <a class="application-nav__link" href="/services/product-design">UX, UI, and Product Design</a> </li> <li> <a class="application-nav__link" href="/services/design-systems">Design Systems</a> </li> </ul> </div> <div class="application-header__dropdown-block"> <span class="application-header__list-header">Product</span> <ul> <li> <a class="application-nav__link" href="/services/mvp-development">MVP</a> </li> <li> <a class="application-nav__link" href="/services/product-management">Product Management</a> </li> <li> <a class="application-nav__link" href="/services/product-accessibility">Accessibility</a> </li> </ul> </div> <div class="application-header__dropdown-block"> <span class="application-header__list-header">Team and Processes</span> <ul> <li> <a class="application-nav__link" href="/services/team-augmentation">Team Augmentation</a> </li> <li> <a class="application-nav__link" href="/services/fractional-product-technical-leadership">Fractional Leadership</a> </li> </ul> </div> </div> <a class="application-nav__link application-header__dropdown-footer" href="/services">View all Services</a> </div> <div class="application-header__dropdown-container" data-dropdown-menu-target="resources" tabIndex="0" aria-label="Navigation dropdown expanded"> <button name="button" type="button" class="dropdown-background application-nav__link-button" id="resources" data-action="click-&gt;dropdown-menu#toggleDropdown click-&gt;dropdown-menu#toggleState" data-dropdown-menu-target="dropdownButton" class_active="application-nav__link--active" aria-expanded="false" aria-hidden="true"> </button> <span class="application-nav__mobile-header"> <button name="button" type="button" class="back-button" data-action="click-&gt;dropdown-menu#toggleDropdownMobileClose" aria-expanded="false"> <svg xmlns="http://www.w3.org/2000/svg" width="9" height="16" viewBox="0 0 9 16" fill="none" aria-hidden="true"> <path d="M8.48525 2.34317L7.07104 0.928955L0 8.00001L7.07107 15.0711L8.48528 13.6569L2.82842 8L8.48525 2.34317Z" fill="currentColor"></path> </svg> Back </button> <button name="button" type="button" class="icon-button" data-action="click-&gt;dropdown-menu#toggleDropdownMobileClose click-&gt;application-header#toggleMobileMenu" aria-expanded="false"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none" aria-hidden="true" class="application-header__close-icon"> <path d="M2.30035 0.414694C1.77965 -0.106005 0.935433 -0.106005 0.414734 0.414694C-0.105965 0.935393 -0.105965 1.77961 0.414734 2.30031L8.11438 9.99996L0.414814 17.6995C-0.105885 18.2202 -0.105885 19.0644 0.414814 19.5851C0.935513 20.1058 1.77973 20.1058 2.30043 19.5851L10 11.8856L17.6996 19.5851C18.2203 20.1058 19.0645 20.1058 19.5852 19.5851C20.1059 19.0644 20.1059 18.2202 19.5852 17.6995L11.8856 9.99996L19.5853 2.30031C20.106 1.77961 20.106 0.935393 19.5853 0.414694C19.0646 -0.106005 18.2203 -0.106005 17.6996 0.414694L10 8.11434L2.30035 0.414694Z" fill="currentColor"></path> </svg> </button> </span> <div class="header-container application-header__dropdown"> <a href="/resources" class="application-header__list-header-mobile-only"> View all Resources <span> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="10" viewBox="0 0 16 10" fill="none" aria-hidden="true"> <path d="M10.5315 9.71396L9.35578 8.53269L12.081 5.82022L0.743446 5.80881L0.745124 4.14215L12.0516 4.15352L9.37232 1.46164L10.5536 0.285888L15.2566 5.01095L10.5315 9.71396Z" fill="currentColor"></path> </svg> </span> </a> <div class="application-header__dropdown-block"> <a class="application-header__list-header" href="https://thoughtbot.com/resources#development-resources-learn-from-our-development-team"> Development <svg xmlns="http://www.w3.org/2000/svg" width="16" height="10" viewBox="0 0 16 10" fill="none" aria-hidden="true"> <path d="M10.5315 9.71396L9.35578 8.53269L12.081 5.82022L0.743446 5.80881L0.745124 4.14215L12.0516 4.15352L9.37232 1.46164L10.5536 0.285888L15.2566 5.01095L10.5315 9.71396Z" fill="currentColor"></path> </svg> </a> <ul> <li> <a class="application-nav__link" href="/resources/tech-leadership">Tech Leadership Resources</a> </li> <li> <a class="application-nav__link" href="https://thoughtbot.com/open-source">Open Source</a> </li> <li> <a class="application-nav__link" href="https://thoughtbot.com/resources#books-take-one-off-the-thoughtbot-bookshelf">Books</a> </li> <li> <a class="application-nav__link" href="https://bikeshed.thoughtbot.com/">The Bike Shed Podcast</a> </li> <li> <a class="application-nav__link" href="https://www.youtube.com/@thoughtbot/streams">Live Streaming on YouTube</a> </li> <li> <a class="application-nav__link" href="https://www.youtube.com/playlist?list=PL8tzorAO7s0g57gv25kLcHLTIyIBdEVyX">Conference Talks</a> </li> </ul> </div> <div class="application-header__dropdown-block"> <span class="application-header__list-header">The business of great software</span> <ul> <li> <a class="application-nav__link" href="https://thoughtbot.com/playbook">Playbook</a> </li> <li> <a class="application-nav__link" href="https://thoughtbot.com/purpose-built">Purpose Built</a> </li> <li> <a class="application-nav__link" href="https://podcast.thoughtbot.com/">Giant Robots Smashing Into Other Giant Robots Podcast</a> </li> <li> <a class="application-nav__link" href="https://design.thoughtbot.com/sprint-guide/">Design Sprint Guide</a> </li> <li> <a class="application-nav__link" href="https://www.linkedin.com/company/thoughtbot-inc-/events">Live Streaming on LinkedIn</a> </li> </ul> </div> </div> <a class="application-nav__link application-header__dropdown-footer" href="/resources">View all Resources</a> </div> <script> //<![CDATA[ (function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){ (w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t); e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e); })(window,document,'script','//s.swiftypecdn.com/install/v2/st.js','_st'); _st('install','JSyY6PSyA_DRU7Ns-ivd','2.0.0'); //]]> </script></header> <main data-swiftype-index="true" class="tbds-app-frame__body application-main-content" id="main"> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "OnlineBusiness", "name": "thoughtbot", "legalName": "thoughtbot, inc.", "url": "https://thoughtbot.com/", "logo": "//thoughtbot.com/assets/thoughtbot-logomark-91bb29930ff8894780476346672f695b969701d35b7f15e44b735c024849b474.svg", "description": "Looking for a nearby developer? Hire thoughtbot, a design and development agency that provides design and development services for mobile and web applications.", "contactPoint": [ { "@type": "ContactPoint", "telephone": "+18779762687" }, { "@type": "ContactPoint", "telephone": "+442038070560" } ] } </script> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "WebSite", "name": "thoughtbot", "url": "https://thoughtbot.com/", "potentialAction": { "@type": "SearchAction", "target": { "@type": "EntryPoint", "urlTemplate": "https://thoughtbot.com/#stq={search_term_string}" }, "query-input": "required name=search_term_string" } } </script> <!-- prettier-ignore --> <header id="let-s-make-your-product-and-team-a-success" class="page-section"> <div class="container container--full-width container--no-pad"> <div class="hero__wrapper"> <img class="hero__decoration-left" alt="" src="//thoughtbot.com/assets/decorations/circuits/hero_04_left-f32bc06c0a2636c263ac338c7d8676bf947af6b1604aaaa79785f3aa37e5b665.svg" /> <div class="hero__block"> <div class="type-heading type-heading--1"><h1>Let’s make your product and team a success</h1></div> <div class="type-body long-form-content u-margin-bottom-0"><p>thoughtbot is your expert partner for product design and development. We help our clients lead the way through better products, faster teams, and stronger growth.</p></div> <a class="button u-margin-top-4" href="https://thoughtbot.com/hire-us"><p>Let’s talk</p></a> </div> <figure class="hero__block hero__image-wrapper hero__image-wrapper--stick-right"> <img class="hero__image" alt="" src="//thoughtbot.com/assets/decorations/circuits/hero_04_right-977c55454b191d530ba7c33cd829037bbab93a172b6286a642ec6f8c2d2e95bf.svg" /> </figure> </div> </div> </header> <section id="harvard-business-review" class="page-section case-study-highlight"> <div class="container"> <header class="case-study-highlight__header"> <div class="type-heading type-heading--eyebrow type-heading--eyebrow--decorated"> <img alt="" src="//thoughtbot.com/assets/pages/case-study-highlight/eyebrow-decoration__left-958d6c34a2c73a3d257ce61b448ebe5b7a197498d748ba390557932337c52315.svg" /> <h2>Featured case study</h2> <img alt="" src="//thoughtbot.com/assets/pages/case-study-highlight/eyebrow-decoration__right-cf77700fbe18c1b94adee2657f49c59f7c0fe09d0c68376e0890293fa5d48910.svg" /> </div> <img class="case-study-highlight__logo" alt="Harvard Business Review logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/Z5EIR5bqstJ99vPB_hbr_logo.svg" /> </header> </div> <div class="container container--full-width u-margin-bottom-3"> <figure class="video"> <button name="button" type="button" class="video__controls" aria-pressed="false" onClick="controlVideo(this)" onKeyDown="controlVideoKeyboard(event)" aria-label="Pause video"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" class="video__icon video__icon--pause"> <path d="M6.66667 2.66675H4V13.3334H6.66667V2.66675Z" stroke="currentColor" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"></path> <path d="M12 2.66675H9.33331V13.3334H12V2.66675Z" stroke="currentColor" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"></path> </svg> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" class="video__icon video__icon--play"> <path d="M3.33333 2L12.6667 8L3.33333 14V2Z" stroke="currentColor" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </button> <video aria-label="Video of screenshots of the Harvard Business Review. The screenshots are arranged in a row and they slowly move from left to right in an endless loop." class="video__file" autoplay playsinline loop muted disablepictureinpicture background> <source preload="none" src="https://prismic-io.s3.amazonaws.com/thoughtbot-website/d7d7de49-42b9-48c5-a82c-76bbc41820f9_HBR_Infinite+Scroll_compressed.mp4" type="video/mp4" /> Your browser does not support the video tag. </video> <video aria-label="Video of screenshots of the Harvard Business Review. The screenshots are arranged in a row and they slowly move from left to right in an endless loop." class="video__file video__file--reduced-motion" controls playsinline loop muted disablepictureinpicture background> <source preload="none" src="https://prismic-io.s3.amazonaws.com/thoughtbot-website/d7d7de49-42b9-48c5-a82c-76bbc41820f9_HBR_Infinite+Scroll_compressed.mp4" type="video/mp4" /> Your browser does not support the video tag. </video> </figure> <script> //<![CDATA[ // Support keyboard input for controling the looping video function controlVideoKeyboard(e) { if(e.key == " " || e.key == "Enter") { e.preventDefault(e.target); controlVideo(e.target); } } // Event handler for playing and pausing the looping video function controlVideo(e) { if (e.nextElementSibling.paused) { e.classList.remove('playing'); e.nextElementSibling.play(); e.setAttribute('aria-pressed', 'false'); } else { e.classList.add('playing'); e.nextElementSibling.pause(); e.setAttribute('aria-pressed', 'true'); } } //]]> </script> </div> <!-- END Video --> <div class="container basic-grid"> <div> <h3 class="type-heading type-heading--2">Harvard Business Review</h3> <ul class="u-layout-horizontal u-margin-bottom-3"> <li class="tag">Product Management</li> <li class="tag">UX, UI, &amp; Product Design</li> <li class="tag">React Native</li> </ul> <div class="long-form-content"> <p>How thoughtbot designed and built a user-validated mobile app for the Harvard Business Review</p> </div> <a class="cta-link" href="/case-studies/HBR-new-mobile-app">Read about how we helped HBR</a> </div> <aside class="quote quote--highlight"> <blockquote class="quote__text"> <div class="quote__quote-mark">“</div> <p> The thoughtbot team felt like our partners, not just people who deliver work and go. A lot of companies promise to work very closely with the client, but thoughtbot really delivered on that. </p> </blockquote> <figcaption class="quote__details"> <div class="quote__author"> <img class="quote__author avatar quote__author-avatar" alt="" src="https://images.prismic.io/thoughtbot-website/Z5JIn5bqstJ99yNt_1571338905995.jpeg?auto=format,compress" /> <p>Marta Kusztra, Director of UX &amp; Product Design, HBR</p> </div> </figcaption> </aside> </div> </section> <!-- prettier-ignore --> <section id="our-services-your-expert-partners-for-building-mission-driven-products" class="page-section"> <div class="container"> <header> <div class="type-heading type-heading--eyebrow"><h2>Our services</h2></div> <h3 class="type-heading type-heading--2">Your expert partners for building mission-driven products</h3> </header> <div class="text-and-list__wrapper"> <div class="text-and-list__text"> <div class="long-form-content"><p>Benefit from over 20 years of experience designing and building successful products. Whether you&#39;re a founder with a new idea, a product owner at a large enterprise, or somewhere in between, thoughtbot can help you solve meaningful problems with a design-led approach. Work with a small, dedicated team of project-focused product experts built to fit the needs of your project.</p></div> <a class="cta-link" href="/services">Learn more about our services</a> </div> <div class="text-and-list__list-wrapper"> <div class="long-form-content u-margin-bottom-0"><h3>For every stage of your business</h3></div> <div class="type-list type-list--disc type-list--small-font"><ul><li><a href="/services/discovery-sprint">Rapid validation and early product strategy</a></li><li><a href="/services/mvp-development">Building a new product and roadmap planning</a></li><li><a href="/services/team-augmentation">Team augmentation and process improvement</a></li><li><a href="/services/platform-engineering">DevOps, Cloud, CI/CD</a></li></ul></div> </div> </div> </div> </section> <section id="over-1-000-positive-outcomes-our-clients" class="page-section"> <div class="container"> <div class="logos"> <header> <div class="type-heading type-heading--eyebrow"><h2>Over 1,000+ positive outcomes</h2></div> <h3 class="type-heading type-heading--2">Our Clients</h3> <div class="long-form-content"><p>We are proud to partner with clients of all stages, sizes and industries on meaningful work.</p></div> <a class="cta-link" href="/case-studies">Here are their stories</a> </header> <ul class="logos__logo-wrapper"> <li class="logos__logo"> <img class="logos__logo-image" height="27" loading="lazy" width="157" alt="Real Chemistry logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqOB5LeNNTxnnk_Real-Chemistry-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="76" loading="lazy" width="100" alt="Postmates logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqNx5LeNNTxnnj_Postmates-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="24" loading="lazy" width="91" alt="MoMa logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqNR5LeNNTxnng_MoMa-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="54" loading="lazy" width="126" alt="groups recover together logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqKh5LeNNTxnnS_groups-recover-together-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="58" loading="lazy" width="97" alt="Harvard Business Review logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqLB5LeNNTxnnU_Harvard-Business-Review-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="30" loading="lazy" width="127" alt="LevelUp logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqMB5LeNNTxnnZ_LevelUp-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="32" loading="lazy" width="116" alt="Lola logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqMR5LeNNTxnnb_Lola-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="30" loading="lazy" width="105" alt="vimeo logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqOh5LeNNTxnnn_vimeo-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="25" loading="lazy" width="140" alt="Airrosti logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqIx5LeNNTxnnJ_Airrosti-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="70" loading="lazy" width="90" alt="DigitalOcean logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqJh5LeNNTxnnM_DigitalOcean-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="42" loading="lazy" width="125" alt="Planned Parenthood logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqNh5LeNNTxnnh_Planned-Parenthood-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="14" loading="lazy" width="153" alt="Everlane logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqKB5LeNNTxnnP_Everland-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="42" loading="lazy" width="113" alt="Hilton logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqLR5LeNNTxnnW_Hilton-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="25" loading="lazy" width="123" alt="Blinkist logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqJR5LeNNTxnnL_Blinkist-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="70" loading="lazy" width="65" alt="Gov.uk logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqKR5LeNNTxnnQ_Gov-uk-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="54" loading="lazy" width="111" alt="Mass Challenge logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqMx5LeNNTxnnd_Mass-Challenge-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="38" loading="lazy" width="140" alt="mailchimp logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqMh5LeNNTxnnc_mailchimp-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="33" loading="lazy" width="61" alt="tile logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqOR5LeNNTxnnl_tile-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="51" loading="lazy" width="105" alt="ieso logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqLh5LeNNTxnnX_ieso-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="36" loading="lazy" width="132" alt="Merck logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqNB5LeNNTxnnf_Merck-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="24" loading="lazy" width="132" alt="Harrys logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqKx5LeNNTxnnT_Harrys-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="30" loading="lazy" width="123" alt="Bark Box logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqJB5LeNNTxnnK_Bark-Box-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="16" loading="lazy" width="151" alt="Kickstarter logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqLx5LeNNTxnnY_Kickstarter-logo.svg?auto=compress,format" /> </li> <li class="logos__logo"> <img class="logos__logo-image" height="52" loading="lazy" width="123" alt="Disney logo" src="https://thoughtbot-website.cdn.prismic.io/thoughtbot-website/ZqlqJx5LeNNTxnnO_Disney-logo.svg?auto=compress,format" /> </li> </ul> </div> </div> </section> <section id="service-highlight-streamline-your-workflows-with-artificial-intelligence-ai" class="page-section "> <div class="container"> <div class="text-and-image-grid text-and-image-grid--flipped" > <div class="text-and-image-grid__text"> <header> <div class="type-heading type-heading--eyebrow"><h2>Service Highlight</h2></div> <h3 class="type-heading type-heading--2">Streamline your workflows with Artificial Intelligence (AI)</h3> </header> <div class="long-form-content"><p>Reimagine your company&#39;s future by developing your own custom Generative AI applications. thoughtbot can help you find opportunities to leverage OpenAI&#39;s ChatGPT to streamline internal workflows and stay ahead of the competition.</p></div> <a class="cta-link u-margin-bottom-6" href="/services/machine-learning-artificial-intelligence-ai">Drive innovation with AI</a> </div> <figure class="text-and-image-grid__image"> <img height="1162" loading="lazy" width="1416" alt="Person using a laptop to interact with a chatbot. The image has a color overlay treatment and is surrounded by various lines and shapes." src="https://images.prismic.io/thoughtbot-website/Z5ksFZbqstJ999UC_CircuitsImageMockup02_Gradient01.png?auto=format,compress" /> </figure> </div> </div> </section> <section id="client-success-positive-outcomes-for-hundreds-of-web-and-mobile-projects-like-yours" class="page-section"> <div class="container"> <header class="u-margin-bottom-4"> <div class="type-heading type-heading--eyebrow"><h2>Client Success</h2></div> <h3 class="type-heading type-heading--2">Positive outcomes for hundreds of web and mobile projects like yours</h3> </header> <div class="cards-grid"> <article class="cards-grid__card " > <a class="cards-grid__image-link" href="/case-studies/HBR-new-mobile-app"> <img class="cards-grid__image" height="960" loading="lazy" width="1400" alt="HBR logo in front of an image of a person holding a phone with the HBR mobile app." src="https://images.prismic.io/thoughtbot-website/22dde4fc-7ba5-4547-9b72-07482fc94d94_case-study-card__HBR.jpg?auto=compress,format" /> </a> <div class="cards-grid__text-wrapper"> <div> <p class="cards-grid__description type-body"> <strong>HBR</strong> &mdash; Future-proofing Harvard Business Review to inspire the next generation of global business leaders. </p> <a class="cta-link" href="/case-studies/HBR-new-mobile-app">Read the Harvard Business Review case study</a> </div> </article> <article class="cards-grid__card " > <a class="cards-grid__image-link" href="/case-studies/generative-ai"> <img class="cards-grid__image" height="960" loading="lazy" width="1400" alt="The words Generative AI against a gradient background that slightly shows some product screens in a collage." src="https://images.prismic.io/thoughtbot-website/Zo1bPR5LeNNTw8-t_gen-ai.png?auto=format,compress" /> </a> <div class="cards-grid__text-wrapper"> <div> <p class="cards-grid__description type-body"> <strong>Generative AI</strong> &mdash; Transforming healthcare experiences with artificial intelligence and machine learning </p> <a class="cta-link" href="/case-studies/generative-ai">Read the Generative AI case study</a> </div> </article> <article class="cards-grid__card " > <a class="cards-grid__image-link" href="https://thoughtbot.com/case-studies/closeknit"> <img class="cards-grid__image" height="960" loading="lazy" width="1400" alt="CloseKnit logo is centered on a purple background above an illustration of medical professionals." src="https://images.prismic.io/thoughtbot-website/dee4f34d-9119-4eec-9be3-974af6ea0d19_case-study-card__Closeknit.png?auto=format,compress" /> </a> <div class="cards-grid__text-wrapper"> <div> <p class="cards-grid__description type-body"> <strong>CloseKnit</strong> &mdash; Creating a scalable, multi-platform solution for virtual urgent care </p> <a class="cta-link" href="https://thoughtbot.com/case-studies/closeknit">Read the CloseKnit case study</a> </div> </article> <article class="cards-grid__card " > <a class="cards-grid__image-link" href="/case-studies/groups-recover-together"> <img class="cards-grid__image" height="960" loading="lazy" width="1400" alt="Groups Recover logo is centered on a teal background with faded out screenshots of the Groups Recover product along the edges of the image" src="https://images.prismic.io/thoughtbot-website/33afb841-a54d-48d7-9dee-f2c2990eef61_case-study-card__Groups.png?auto=compress,format" /> </a> <div class="cards-grid__text-wrapper"> <div> <p class="cards-grid__description type-body"> <strong>Groups Recover Together</strong> &mdash; Increasing access to effective opioid-addiction care through a new digital platform. </p> <a class="cta-link" href="/case-studies/groups-recover-together">Read the Groups Recover Together case study</a> </div> </article> </div> </div> </section> <!-- prettier-ignore --> <section id="client-testimonial" class="page-section shim-theme-secondary"> <p class="u-hide-visually">Client testimonial</p> <figure class="container"> <div class="quote "> <blockquote class="quote__text"> <div class="quote__quote-mark">“</div> <div><p>We were so impressed by <strong>how collaborative and organized thoughtbot’s cross-functional team was</strong>. They were able to work through unexpected challenges with strategic focus. That remained consistent throughout our nine-month engagement.</p></div> </blockquote> <figcaption class="quote__details"> <div class="quote__author"> <img alt="A headshot of Anne Bartholomew" class="quote__author avatar quote__author-avatar" height="450" loading="lazy" width="450" src="https://images.prismic.io/thoughtbot-website/ZjpDN0MTzAJOCnXJ_anne_bartholomew.jpeg?auto=format,compress" /> <p> <span class="quote__author-name">Anne Bartholomew</span> <br /> Director of Product Management, Harvard Business Review </p> </div> <a class="cta-link" href="/case-studies/HBR-new-mobile-app">Read the Harvard Business Review case study</a> </figcaption> </div> </figure> </section> <section id="our-company-purpose-driven-teams" class="page-section "> <div class="container"> <div class="text-and-image-grid text-and-image-grid--flipped" > <div class="text-and-image-grid__text"> <header> <div class="type-heading type-heading--eyebrow"><h2>Our company</h2></div> <h3 class="type-heading type-heading--2">Purpose-driven teams</h3> </header> <div class="long-form-content"><p>Our team is driven by our purpose and values; we continually improve our process, do our best work in strong partnerships with you, and transparently share how we work. We now have teammates located throughout the Americas, Europe, West Asia, and Africa enabling us to take on client projects around the world. </p></div> <a class="cta-link u-margin-bottom-6" href="/our-company">Learn more about our company</a> </div> <figure class="text-and-image-grid__image"> <img height="1162" loading="lazy" width="1416" alt="People collaborating in a meeting room are looking at a wall with sticky notes on it." src="https://images.prismic.io/thoughtbot-website/Z5kuLJbqstJ999Ve_CircuitsImageHoriz07_Gradient01.png?auto=format,compress" /> </figure> </div> </div> </section> <section id="resources-for-designers-developers-and-leaders-reap-the-rewards-of-everything-we-ve-learned-while-building-successful-products" class="page-section "> <div class="container"> <header class="u-margin-bottom-6"> <div class="type-heading type-heading--eyebrow"><h2>Resources for Designers, Developers, and Leaders</h2></div> <h3 class="type-heading type-heading--2">Reap the rewards of everything we’ve learned while building successful products</h3> </header> <div class="snippets-grid"> <div class="snippets-grid__snippet"> <h4 class="type-heading type-heading--4 u-margin-bottom-2">Tech Leadership</h4> <div class="long-form-content"><p>A quick-library to help your team level up processes and decision-making.</p></div> <a class="cta-link" href="https://thoughtbot.com/purpose-built">Dive into our resources</a> </div> <div class="snippets-grid__snippet"> <h4 class="type-heading type-heading--4 u-margin-bottom-2">Design Sprint Guide</h4> <div class="long-form-content"><p>Our guide to conducting and facilitating Product Design Sprints.</p></div> <a class="cta-link" href="https://thoughtbot.com/product-design-sprint/guide">Start your sprint</a> </div> <div class="snippets-grid__snippet"> <h4 class="type-heading type-heading--4 u-margin-bottom-2">Upcase</h4> <div class="long-form-content"><p>Become an experienced developer and take “junior” out of your title.</p></div> <a class="cta-link" href="https://thoughtbot.com/upcase">Learn from the experts</a> </div> <div class="snippets-grid__snippet"> <h4 class="type-heading type-heading--4 u-margin-bottom-2">Our Playbook</h4> <div class="long-form-content"><p>Our documented approach to making successful web and mobile products.</p></div> <a class="cta-link" href="https://thoughtbot.com/playbook">Discover a better way of working</a> </div> <div class="snippets-grid__snippet"> <h4 class="type-heading type-heading--4 u-margin-bottom-2">Our Blog</h4> <div class="long-form-content"><p>The latest design, development, and product tools, techniques and more.</p></div> <a class="cta-link" href="https://thoughtbot.com/blog">Stay current on best practices</a> </div> <div class="snippets-grid__snippet"> <h4 class="type-heading type-heading--4 u-margin-bottom-2">Giant Robots Smashing Into Other Giant Robots Podcast</h4> <div class="long-form-content"><p>A podcast about the design, development, and business of great software.</p></div> <a class="cta-link" href="https://giantrobots.fm">Listen and subscribe</a> </div> </div> </div> </section> <div class="cta-announce" role="status" data-date="2024-12-06 00:00:00 +0000"> <a class="cta-link" href="https://thoughtbot.com/ai-in-focus-series"> <span class="cta-announce__text">Join our series: AI in Focus</span> </a> </div> <script> //<![CDATA[ document.addEventListener("DOMContentLoaded", function (event) { announcement = document.querySelector("[data-date]") expiration = announcement.getAttribute("data-date"); currentDate = new Date().toISOString(); if (expiration && expiration < currentDate) { announcement.remove(); } }) //]]> </script> <section class="page-section hire-us-cta"> <div class="container cta-grid"> <div class="cta-grid__text"> <h2 class="type-heading type-heading--2 u-color-white u-margin-bottom-0">What does success look like for your project?</h2> </div> <div class="cta-grid__cta"> <a class="button button--inverse" href="/hire-us">Let’s talk!</a> </div> </div> </section> </main> <footer class="tbds-app-frame__footer footer" aria-labelledby="footer" > <div class="footer-container footer__content footer__content--primary"> <div class="footer__group"> <h2 class="u-hide-visually" id="footer">Footer</h2> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 223.99 54.95" role="img" aria-labelledby="arla3dfobqxqej4qulfgwqctgse8i0h4" class="footer__logo"><title id="arla3dfobqxqej4qulfgwqctgse8i0h4">thoughtbot</title><defs><style>.cls-1{fill:#e03131;}.cls-2{fill:#fff;fill-rule:evenodd;}</style></defs><g><path class="cls-1" d="M95.46,35.46H91.75V26.7A6.38,6.38,0,0,0,91,23.13,3.05,3.05,0,0,0,88.31,22a4.07,4.07,0,0,0-3.45,1.6V35.46H81.15V10.88h3.71v9.44a5.78,5.78,0,0,1,3.81-1.45q6.8,0,6.79,7.84v8.75Zm2.66-8.13A9.63,9.63,0,0,1,98.69,24a7.82,7.82,0,0,1,1.64-2.69,7.67,7.67,0,0,1,2.59-1.78,8.49,8.49,0,0,1,3.4-.66,8.35,8.35,0,0,1,3.38.66,7.68,7.68,0,0,1,2.58,1.8A8.2,8.2,0,0,1,113.93,24a9,9,0,0,1,.59,3.31,9.47,9.47,0,0,1-.57,3.31,8.28,8.28,0,0,1-1.64,2.69,7.72,7.72,0,0,1-2.59,1.8,8.66,8.66,0,0,1-3.4.65,8.57,8.57,0,0,1-3.41-.65,7.64,7.64,0,0,1-4.22-4.46,9.52,9.52,0,0,1-.58-3.34Zm3.8,0a6,6,0,0,0,1.17,3.9,4.35,4.35,0,0,0,6.47,0,6.06,6.06,0,0,0,1.16-3.9,6,6,0,0,0-1.16-3.88,4.37,4.37,0,0,0-6.47,0,5.93,5.93,0,0,0-1.17,3.88Zm29.37,8.13h-3.41l-.16-1.22a5.52,5.52,0,0,1-3.91,1.54q-6.63,0-6.63-7.63v-9h3.71v8.71a6.24,6.24,0,0,0,.82,3.59,3,3,0,0,0,2.59,1.14,3.86,3.86,0,0,0,3.29-1.51V19.17h3.7V35.46Zm10.13,8.19a13,13,0,0,1-3.35-.39,7.67,7.67,0,0,1-2.39-1.07,4.79,4.79,0,0,1-1.45-1.54,3.79,3.79,0,0,1-.49-1.85q0-2.4,2.76-3.64a2.42,2.42,0,0,1,.16-4.56,6,6,0,0,1-2.59-5.27,7,7,0,0,1,.46-2.57,5.73,5.73,0,0,1,1.31-2.05,6.18,6.18,0,0,1,2.09-1.35,7.55,7.55,0,0,1,2.77-.49,7,7,0,0,1,3.84,1.05,8,8,0,0,1,3.64-.79H149l-.29,2.39h-1.25a9.94,9.94,0,0,0-1.25.1,6.13,6.13,0,0,1,1.15,3.67,7,7,0,0,1-.44,2.48,5.87,5.87,0,0,1-1.3,2.05,6.08,6.08,0,0,1-2.08,1.39,7.21,7.21,0,0,1-2.78.51,8.27,8.27,0,0,1-1.9-.2.77.77,0,0,0-.49.66.64.64,0,0,0,.21.49,2,2,0,0,0,.71.36,9.9,9.9,0,0,0,1.33.31c.55.1,1.26.2,2.11.31s1.47.25,2.23.43a8.07,8.07,0,0,1,2.1.78,4.78,4.78,0,0,1,1.58,1.38,3.91,3.91,0,0,1,.69,2.2,4.39,4.39,0,0,1-2.07,3.78,10.22,10.22,0,0,1-5.84,1.43Zm-.72-22a3,3,0,0,0-2.41,1,4,4,0,0,0-.84,2.66A3.89,3.89,0,0,0,138.3,28a3,3,0,0,0,2.43,1,3,3,0,0,0,2.41-1,4,4,0,0,0,.84-2.68,3.87,3.87,0,0,0-.86-2.64,3.06,3.06,0,0,0-2.42-1Zm.88,14.72-2.26-.33a4.17,4.17,0,0,0-1.71,1A2,2,0,0,0,137,38.5a2,2,0,0,0,1.15,1.79,6.34,6.34,0,0,0,3.21.67,7.19,7.19,0,0,0,3.33-.66,1.92,1.92,0,0,0,1.27-1.7,1.54,1.54,0,0,0-1.12-1.43,13.8,13.8,0,0,0-3.22-.77Zm45.73-.63a6.31,6.31,0,0,1-4.33-1.6l-.13,1.28h-3.44V10.88h3.71v9.4a6.13,6.13,0,0,1,4.2-1.41,7.61,7.61,0,0,1,3.21.66A7.14,7.14,0,0,1,193,21.31,8.1,8.1,0,0,1,194.57,24a10.3,10.3,0,0,1,0,6.64A7.94,7.94,0,0,1,193,33.32a7.28,7.28,0,0,1-2.46,1.81,7.94,7.94,0,0,1-3.26.65ZM187,22a3.57,3.57,0,0,0-3,1.41,6.28,6.28,0,0,0-1.08,3.9,6.34,6.34,0,0,0,1.08,4,3.57,3.57,0,0,0,3,1.39,3.74,3.74,0,0,0,3.13-1.49,6.07,6.07,0,0,0,1.17-3.85,6.11,6.11,0,0,0-1.15-3.84A3.79,3.79,0,0,0,187,22ZM165.27,35.46h-3.71V26.7a6.29,6.29,0,0,0-.79-3.57A3,3,0,0,0,158.11,22a4,4,0,0,0-3.44,1.6V35.46H151V10.88h3.7v9.44a5.78,5.78,0,0,1,3.81-1.45q6.79,0,6.79,7.84v8.75Zm11.37-2.72-.33,3h-2.82a5.1,5.1,0,0,1-1.91-.32,4,4,0,0,1-1.36-.89,3.46,3.46,0,0,1-.8-1.31,4.82,4.82,0,0,1-.27-1.64V22.18h-2.46l.33-3h2.14V14.32l3.7-.39v5.24h3.81v3h-3.81v7.74a13.12,13.12,0,0,0,.07,1.59,1.3,1.3,0,0,0,.33.83,1.27,1.27,0,0,0,.82.33,12.32,12.32,0,0,0,1.54.07Zm20.47-5.41a9.63,9.63,0,0,1,.57-3.33,7.82,7.82,0,0,1,1.64-2.69,7.71,7.71,0,0,1,2.6-1.78,8.44,8.44,0,0,1,3.39-.66,8.32,8.32,0,0,1,3.38.66,7.68,7.68,0,0,1,2.58,1.8A8.39,8.39,0,0,1,212.93,24a9.66,9.66,0,0,1,0,6.62,8.11,8.11,0,0,1-1.64,2.69,7.62,7.62,0,0,1-2.59,1.8,9.24,9.24,0,0,1-6.81,0,7.86,7.86,0,0,1-2.57-1.79,7.73,7.73,0,0,1-1.64-2.67,9.3,9.3,0,0,1-.58-3.34Zm3.8,0a6,6,0,0,0,1.17,3.9,4.34,4.34,0,0,0,6.46,0,6,6,0,0,0,1.17-3.9,5.93,5.93,0,0,0-1.17-3.88,4.36,4.36,0,0,0-6.46,0,5.93,5.93,0,0,0-1.17,3.88Zm23,5.41-.33,3H220.8a5.08,5.08,0,0,1-1.9-.32,3.87,3.87,0,0,1-1.36-.89,3.46,3.46,0,0,1-.8-1.31,4.82,4.82,0,0,1-.27-1.64V22.18H214l.33-3h2.13V14.32l3.71-.39v5.24H224v3h-3.81v7.74a13.12,13.12,0,0,0,.07,1.59,1.3,1.3,0,0,0,.33.83,1.27,1.27,0,0,0,.82.33,12.32,12.32,0,0,0,1.54.07h1Zm-145.45,0-.33,3H75.35a5.1,5.1,0,0,1-1.91-.32,4,4,0,0,1-1.36-.89,3.46,3.46,0,0,1-.8-1.31A4.82,4.82,0,0,1,71,31.62V22.18H68.55l.33-3H71V14.32l3.71-.39v5.24h3.81v3H74.72v7.74a13.12,13.12,0,0,0,.07,1.59,1.3,1.3,0,0,0,.33.83,1.27,1.27,0,0,0,.82.33,12.32,12.32,0,0,0,1.54.07h1"></path></g><g><path class="cls-1" d="M27.47,55A27.48,27.48,0,1,0,0,27.47,27.48,27.48,0,0,0,27.47,55Z"></path><g><path class="cls-2" d="M27.84,6.37a8.81,8.81,0,0,1,6.42,2.48l.68-1a10.05,10.05,0,0,0-7.1-2.7,10,10,0,0,0-7.11,2.71l.67,1A8.85,8.85,0,0,1,27.84,6.37Zm4.48,3.79a7.27,7.27,0,0,0-4.41-1.39h0a7.27,7.27,0,0,0-4.41,1.39,4.71,4.71,0,0,0-.73.68l-.69-1a8.12,8.12,0,0,1,5.83-2.26,8.13,8.13,0,0,1,5.73,2.17l-.68,1A6.07,6.07,0,0,0,32.32,10.16Zm-4.48,1.12a5.49,5.49,0,0,1,3.79,1.4l.68-1a6.67,6.67,0,0,0-4.47-1.6,6.66,6.66,0,0,0-4.48,1.6l.68,1A5.45,5.45,0,0,1,27.84,11.28ZM19.49,29.6v7.9a2.69,2.69,0,0,1,.62,1.64,2.56,2.56,0,0,1-.89,1.94l-.68-.69a1.57,1.57,0,0,0,.61-1.25,1.54,1.54,0,1,0-2.47,1.25l-.67.68a2.54,2.54,0,0,1-.9-1.93,2.48,2.48,0,0,1,.57-1.64V25.24a.94.94,0,0,1,.89-.86H38.72a.93.93,0,0,1,.89.85V37.51a2.82,2.82,0,0,1,.57,1.63,2.58,2.58,0,0,1-.89,1.94l-.68-.69a1.6,1.6,0,0,0,.61-1.25,1.54,1.54,0,1,0-2.47,1.25l-.67.69a2.49,2.49,0,0,1-.89-1.94,2.75,2.75,0,0,1,.61-1.64V29.67H34.72V46.25l.64.42V48H27.93V46.67l.83-.41V41.14H26.6v5.11l.76.42V48H19.87V46.67l.76-.42V29.6Zm2.6-15.66H33.34a.88.88,0,0,1,.88.86v7.46a.87.87,0,0,1-.88.84H22.09a.83.83,0,0,1-.82-.84V14.8A.84.84,0,0,1,22.09,13.94Zm2.76,5.48A1.46,1.46,0,1,1,26.28,18a1.45,1.45,0,0,1-1.43,1.46ZM29.17,18a1.45,1.45,0,0,0,1.43,1.46h0A1.46,1.46,0,1,0,29.17,18Zm-3.59,0a.73.73,0,1,1-.73-.74.72.72,0,0,1,.52.21A.7.7,0,0,1,25.58,18Zm4.29,0a.74.74,0,1,0,1.47,0,.74.74,0,1,0-1.47,0Z"></path></g></g></svg> </div> <div class="footer__group"> <div class="footer__group-inner"> <ul> <li> <a class="footer__link" href="/services">Services</a> </li> <li> <a class="footer__link" href="/case-studies">Case Studies</a> </li> <li> <a class="footer__link" href="/resources">Resources</a> </li> <li> <a class="footer__link--highlight" href="/hire-us">Let&#39;s Talk</a> </li> </ul> <ul> <li> <a class="footer__link" href="/our-company">Our Company</a> </li> <li> <a class="footer__link" href="/jobs">Careers</a> </li> <li> <a class="footer__link" href="/purpose">Purpose</a> </li> <li> <a class="footer__link" href="/blog">Blog</a> </li> <li> <a class="footer__link" href="https://github.com/sponsors/thoughtbot">Sponsor</a> </li> </ul> <ul> <li> <a class="footer__link" rel="me" href="https://thoughtbot.social/@thoughtbot">Mastodon</a> </li> <li> <a class="footer__link" href="https://bsky.app/profile/thoughtbot.com">Bluesky</a> </li> <li> <a class="footer__link" href="https://github.com/thoughtbot">GitHub</a> </li> <li> <a class="footer__link" href="https://www.youtube.com/@thoughtbot">YouTube</a> </li> <li> <a class="footer__link" href="https://www.twitch.tv/thoughtbot">Twitch</a> </li> <li> <a class="footer__link" href="/feeds">Feeds</a> </li> </ul> </div> </div> </div> <div class="footer-container footer__content footer__content--secondary"> <div class="footer__group"> &copy; 2025 thoughtbot, inc. <p> The design of a robot and thoughtbot are registered trademarks of thoughtbot, inc. </p> </div> <div class="footer__group"> <div> <ul> <li> <a href="tel:+18779762687">US: +1 (877) 9-ROBOTS</a> </li> <li> <a href="tel:+442038070560">UK: +44 (0)20 3807 0560</a> </li> </ul> <ul> <li> Beware of fraudulent thoughtbot job listings <a href="https://thoughtbot.com/blog/fraud-alert-scammers-using-thoughtbot-name-and-logo-for-fake-app-optimization-job">Learn more</a> </li> </ul> <ul> <li> <a href="/conduct">Code of Conduct</a> </li> <li> <a href="/accessibility-statement">Accessibility Statement</a> </li> <li> <a href="//www.iubenda.com/privacy-policy/7827608">Privacy Policy</a> </li> </ul> </div> </div> </div> </footer> <script src="//thoughtbot.com/packs/js/runtime-53658f14d5685219ce10.js" async="async" defer="defer"></script> <script src="//thoughtbot.com/packs/js/708-afe685babcebc104483f.js" async="async" defer="defer"></script> <script src="//thoughtbot.com/packs/js/application-f5ea34e2a6d19934fb28.js" async="async" defer="defer"></script> <script> (function(v,i,s,a,t){v[t]=v[t]||function(){(v[t].v=v[t].v||[]).push(arguments)};if(!v._visaSettings){v._visaSettings={}}v._visaSettings[a]={v:'1.0',s:a,a:'1',t:t};var b=i.getElementsByTagName('body')[0];var p=i.createElement('script');p.defer=1;p.async=1;p.src=s+'?s='+a;b.appendChild(p)})(window,document,'//app-worker.visitor-analytics.io/main.js','01437f66-d956-11ed-b589-901b0edac50a','va') </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10