Changelog Interviews – Episode #587
Leading and building Raycast
with Thomas Paul Mann, Co-founder & CEO of Raycast
This week Adam is joined by Thomas Paul Mann, Co-founder and CEO of Raycast, to discuss being productive on a Mac, going beyond their free tier, the extensions built by the community, the Raycast Store, how they’re executing on Raycast AI chat which aims to be a single interface to many LLMs. Raycast has gone beyond being an extendable launcher – they’ve gone full-on productivity mode with access to AI paving the way of their future.
Featuring
Sponsors
FireHydrant – The alerting and on-call tool designed for humans, not systems. Signals puts teams at the center, giving you ultimate control over rules, policies, and schedules. No need to configure your services or do wonky work-arounds. Signals filters out the noise, alerting you only on what matters. Manage coverage requests and on-call notifications effortlessly within Slack. But here’s the game-changer…Signals natively integrates with FireHydrant’s full incident management suite, so as soon as you’re alerted you can seamlessly kickoff and manage your entire incident inside a single platform. Learn more or switch today at firehydrant.com/signals
Cloudflare – Read the Developer Week 2024 wrap-up or tune into Developer Week on Cloudflare TV.
Sentry – Code breaks, fix it faster. Don’t just observe. Take action. Sentry is the only app monitoring platform built for developers that gets to the root cause for every issue. 90,000+ growing teams use sentry to find problems fast. Use the code CHANGELOG
when you sign up to get $100 OFF the team plan.
Factor – 50% off Factor ready-made meals! Pick your ready-made meals, choose from 35+ fresh, never-frozen meals and 55+ add-ons, every week. Gourmet chefs prepare your meals, so you can enjoy more of your time to focus! Heat, eat & enjoy — No prep. No mess. Factor meals arrive ready to heat and eat in 2 minutes. Learn more at factormeals.com/changelog50
Notes & Links
Chapters
Chapter Number | Chapter Start Time | Chapter Title | Chapter Duration |
1 | 00:00 | This week on The Changelog | 01:24 |
2 | 01:24 | Sponsor: FireHydrant | 02:21 |
3 | 03:44 | Start the show! | 01:36 |
4 | 05:20 | Adam loves Raycast | 01:08 |
5 | 06:28 | Why launchers are popular on a Mac? | 02:32 |
6 | 09:00 | Beyond launching apps | 06:54 |
7 | 15:54 | Why did you build this? | 04:07 |
8 | 20:01 | Building with native code on a Mac | 03:04 |
9 | 23:05 | We respect your privacy | 04:15 |
10 | 27:20 | Are you talking to users? | 06:32 |
11 | 33:51 | The team size | 02:08 |
12 | 35:59 | Keeping the urgency | 01:50 |
13 | 37:49 | I don't see that momentum | 01:56 |
14 | 39:46 | Sponsor: Cloudflare | 02:21 |
15 | 42:06 | That's a nice Changelog | 02:45 |
16 | 44:51 | Maintaining a connection to your fans | 03:15 |
17 | 48:06 | Solving the "keeping connected" problem | 01:52 |
18 | 49:58 | Subtle nudges | 03:43 |
19 | 53:41 | No emails of users? | 00:37 |
20 | 54:18 | The problem of a broken updater | 02:23 |
21 | 56:41 | Building the right thing | 08:44 |
22 | 1:05:25 | What is the Raycast Store? | 08:34 |
23 | 1:13:59 | MIT licensed | 02:06 |
24 | 1:16:06 | Changelog extension for Raycast | 01:07 |
25 | 1:17:13 | More on extensions | 06:22 |
26 | 1:23:35 | Sponsor: Sentry | 01:13 |
27 | 1:24:48 | Sponsor: Factor | 01:55 |
28 | 1:26:43 | Let's talk about AI!! | 11:07 |
29 | 1:37:50 | You've got all the models | 03:13 |
30 | 1:41:03 | The UX of sub-apps | 08:47 |
31 | 1:49:50 | Standalone Raycast AI chat app? | 02:06 |
32 | 1:51:56 | Raycast AI chat is hidden | 02:46 |
33 | 1:54:42 | This is brand level challenge | 04:00 |
34 | 1:58:42 | What's over the horizon? | 05:35 |
35 | 2:04:17 | Wrapping up | 01:17 |
36 | 2:05:34 | Closing thoughts | 02:56 |
Transcript
Play the audio to listen along while you enjoy the transcript. 🎧
Well, Thomas, one of my favorite tools to use is Raycast. I don’t know if you know this, but… What do you think about that?
I like it. [laughs]
Yeah? Do you like Raycast? Do you use Raycast?
I do like it a bit. I use it also every now and then, so… Yeah, I’m quite familiar with the tool. [laughs]
Does it get old, like, building and using the tool? Like, how does it – how do you separate avid user, happy user, to co-founder of the company, leading the team, etc?
I think I don’t separate it. Since day one, everybody who works at Raycast builds for himself… Which is one of our secret superpowers. We build the tool we want to have, so we can be quite opinionated about it, because we build it for ourselves. And then luckily, there are enough people like us out there that enjoy exactly the same tool… And it’s not that we’re not listening to the others. I mean, we have a huge community that’s bombarding us with feedback all the time… But we’re surrounding us with this feedback and build for ourselves. So we’ll never miss that. So even though I’m technically the CEO of the company, I’m still a user, and this is how I build the tool…
Technically the CEO… [laughs] Okay. Well, I love Raycast. I forget what I used before. I think I used LaunchBar before, and several others over the years… And there’s always been some sort of launcher for Mac computers. Now macOS. It was OS 10 back in the day, now it’s macOS. I almost said some other operating system name. There’s always been some sort of launcher for it, and I think that – I wonder what makes a launcher important for any user, especially like a productive user. I feel like launchers are for the few. They’re not really for the many, and maybe that makes you sad in a way, and maybe you sort of want to expand that to many… But I feel like not everybody wants to use a launcher, or feels they need to. They just like clutter their bar down there, whatever that bar is at the bottom of a Mac. I forget what even it’s called.
Dock.
The dock. Yeah, okay, thank you. The dock. They just clutter their dock with all these icons, and they’re all like tiny… And they sometimes even keep the dock present, not hidden… Which - I hide my dock, obviously. I’m a Raycast user, so Raycast users hide everything. They keep it away, and they conjure it whenever they want to. What do you think it is that makes this particular platform? Because I don’t think it’s very popular on Windows. And I could be wrong, I’m not a Windows user… But what do you think it makes a launcher that Raycast represents? Now you’ve expanded to AI and more things, of course, more tooling and extensions, but just simply an application launcher. What makes that popular on the Mac platform?
Yeah, it’s a good question. First of all, it’s been around forever. I think the oldest one of them is called Quicksilver. Some of your listeners probably are still familiar with it.
Love Quicksilver.
Yeah, it’s like the OG, basically. I think they’re really one of the first ones to make popular. And then launchbar in Alfred came around, they basically took this to the next level… And then actually Spotlight came afterwards, which is the fact that many people know. So Spotlight came afterwards. And I think Spotlight really sort of commercialized it. So when Apple builds something and it becomes part of the OS, it’s sort of like mainstream.
But then I know people that haven’t used things like a launcher and Spotlight before… Because if you don’t know it exists – it’s not really visible on your computer. There’s no – well, there is a little button you can click, but it’s not very obvious. But then when you experience for the first time, it’s just really make click, like “Hey, I want to launch an app, I type in the app name, I press Return. Hey, I want to search a file, I do exactly the same. Hey, I even can do calculations. Hey, can I check the weather?” And you kind of go on this wondering what you can do with it. And after a few use cases, it becomes muscle memory. And I think it’s all about the muscle memory with those interfaces that are ephemeral. They come and go as fast as possible, and you’re actually optimizing for as little time spent in the tool, which is very counterintuitive to a lot of other software…
[00:08:20.18] But this is like what for me to perfect launcher does. You have something like an intent in your mind, and you want to perform this as quick as possible. And this can be as little as launching an app, which you probably do like dozens or hundreds of times a day, but it can also be a bit bigger, like maybe you’re interacting with other third-party tools, creating some issues, checking a pull request status, and so on and so forth… But this is what we felt like “Hey, this interface is super-powerful, because it’s so simple.” And you learn this interface once, and then you can apply it to endless other things.
I think that’s what you’ve done too, because I have expanded to quick keys to center my windows, to maximize certain windows… I’ve created snippets… I love the snippets feature. I’ve got several in there. I’ve got shortcuts to certain folders that I go to or directories I go to frequently on my Mac, Downloads, Screenshots… Those are two I kind of don’t want to navigate to. Everything else I’m by navigating to personally… Because I kind of have my Finder default to like my most important place to go to, so from there, I don’t mind navigating around. But those are two different folders; I’m like “I just want to go to Downloads” or “I want to go to Screenshots”, because I want to share this thing quickly. I don’t want to go find where screenshots is, etc.
I think that’s been fun for me, like exploring unique ways to use a launcher. Obviously, applications has been key. I haven’t done much addition or multiplication or any sort of math type activities… I don’t really use your AI feature a ton. I am a Pro user. I mainly came for Pro to sync my settings, and I did not stay for AI. I’m hoping at some point AI gets better, and maybe I’ll upgrade to that… But I just go to chatgpt.com, or whatever the URL is for it, and go there. I don’t understand why I would want to go somewhere else… But maybe you can help me understand what is the lure for folks expanding beyond application launching. What is it that makes people go and do what I’ve done, which is snippets, and shortcuts, and AI, etc?
Yeah. So I started with building the tool for ourselves, right? And this is how many of those features are on Raycast. So I’ll pick the window management command that you just mentioned. I personally remember a few hotkeys to do a window on the left, and then to the right… But then sometimes you have these other positions, and you don’t really remember hotkeys. I can’t remember many of those. So I was like “Oh, wait a second… Instead of remembering all these hotkeys, maybe I can just build all these commands in Raycast, and I can just search them.” So I did that, and then it turned out “Hey, also people like that as well, because it’s much more accessible.” So we added this.
Then it was like “Oh, we oftentimes open directories, and our favorite directories, or websites”, so we added Quick Links, a quick way to open something. And it’s like, a lot of those features that you see nowadays, they basically came out of our own problems initially, before we opened up Raycast with our API to other people, extend the functionality. Then it’s not just about our own problems, but the problems of thousands of developers that are willing to put in the effort to automate those little paper cuts throughout the day, essentially. So I think that’s like the first thing that people – as soon as they understand the system, it’s like “Oh, I can extend it and can make it my own.”
[00:11:48.21] There’s a lot around personalization. You mentioned something that you use… We have this YouTube video series which is called “What’s in my Raycast?” where we interview Raycast users, and all of them use Raycast very differently, which I think is the fun thing. It’s one tool, but you can use it in very, very different ways. And some people discover features after they’ve been a user for several months, or years, which is kind of crazy. So it’s super feature-rich, and we probably do a pretty bad job explaining all these features… But you also don’t want to overwhelm a person, like “Hey, there’s other literally thousand things you can do.” So it’s almost like a bit of a game, a video game; you start doing a few little things, and then you stumble across something, and it’s like “Oh, this is cool”, and you pick a new feature that you adopt for your toolbox, and you go forward… So I think all of those things kind of come together.
But coming to AI is like basically the same principle. So when I think about modern software in general, when I work and want to be very focused, I want to stay most likely in one tool where I do my job. This can be my IDE to write code, this can be Notion or another editor to write my content, or whatever I’m doing. And then whenever I need to switch that, there is a context switching involved. And this oftentimes ends up with – we’re ending up somewhere else. You want to go, for example, to ChatGPT, but then you’re in the browser, you see an old Tab, which was Twitter, you’re going down the Twitter rabbit hole, and then you lose your thought.
So with Raycast, we’re sort of inversing that. We want to keep you in the flow, we want to make sure that you can do your work. You can open Raycast and do as many things out of there as possible, that you don’t need to go somewhere else.
This is what we see many people use Raycast AI for, an easy way to open Raycast and ask a quick question, get the answer, carry on… Which I do dozens of times during interviews, for example, when terms come up that I don’t know. I just Cmd+Space, “What is x, y, z?”, get the answer, “Okay, cool. Now I know a bit more.” Or people use it during coding, and other things, with an AI chat on the side, and can just have sort of their assistant where they can ask questions as they work through a problem, and have that just sitting right next to the tool they’re used to. So you don’t need to open up a new tab; it’s just always with you, wherever you work, across any Mac application.
Yeah, I love that as you were describing your use case and how you use it, especially the AI part of it, is I find “How do I get there?” to be the most hard thing, I suppose. But you’ve made it pretty easy by just making it the common way you get to the launcher, or the prompt. I’m not sure what you would call the main window of Raycast. But Cmd+Space gets you there, and then tag get you to an AI prompt, essentially.
Yeah.
And I’m assuming you sort of honor any sort of rules where I’ve set a different LLM as my default, or if I’ve got Turbo maximized, or minimized, or whatever the options are there. That’s pretty good that it’s that close away, even if it’s 3.5 for – does everybody get access to 3.5? Is that a anybody who goes right now and downloads Raycast gets that?
Yeah, no, we have like the free tier gets all the features that we had before, which was always our idea of we want to give away a tool for free. With the AI features we have, they’re part of the Pro plan. So if you subscribe, you get there. So you get cloud synchronization that you use, you get AI, you get custom themes, and a few other bits and pieces. And then when you want to have one of those more advanced models, for example GPT 4, or Claude 3 Opus from Anthropic… Then we have like a higher price tier for individuals, more or less to basically cover the costs of AI, in a way.
Yeah. I guess I’ve been taking my free ChatGPT 3.5 for granted, because I just haven’t even been using it at all, really.
Exactly.
Maybe I should change that. Well, how did you get here even? I mean, I totally understand where the use case is, because I’m a user, obviously… But how did you even get to building Raycast itself? What was the journey to this tool? Why this tool? What got you excited about it? How’d you even get here?
[00:16:09.03] Yeah, definitely. So we started back in 2020. So Petr and me, both engineers, we worked together at Facebook before… And we thought there’s so many tools you have to deal every day with. And this felt somehow counterintuitive, because we felt a lot of the tools that we used there, they’re not really optimized for the workflows we have. So oftentimes you want to quickly check out an analytics, or like a feature flag, what’s the status of this, and for that you need to open a browser, navigate to the page, find the right thing… And it’s like “Oh, this feels so cumbersome.” And we were always really keen about productivity, and at some point we thought “Let’s figure out a way how to make this better. There must be one, right?”
And this was a time when I think command palettes became hip again. As developers, we know them for years; you know them from Sublime, from VS Code nowadays… But in other apps they weren’t really common. So apps like Linear, and Superhuman, and even I think Notion back in the days, they were sort of the first tools that made them a bit more commercialized on mainstream. And we thought “Hey, the best one would probably be when we have this one just globally. It sits on top of everything.” And so we started basically building that.
Pretty quickly we realized you need to cover all the basics that Spotlight does, because you will only have one of those interfaces running on your Mac. You will not have different hotkeys for launching different launchers. You want to have one that does everything for you. So we basically knew “Okay, we need to cover all the basics of Spotlight, and then we can start building on top of that to do the other things.” This was back in the days where we were at YC, so we were part of the winter 2020 batch. This was basically – we started the batch with “Let’s build this.” So it was like three months of intense building.
Petr and I flew to San Francisco, stayed in Mountain View, and it was 24/7 just like okay, you wake up at 8am, then you build until you basically fall asleep, and then you do the same thing again… Which was probably the most productive time in my life, because we had no obligations whatsoever, which was really fun. And we then quickly realized – when we were chatting to other engineers of the YC network, they were all using JIRA. And they wanted to have a quicker way to access this, exactly for the reasons I mentioned. They have a quick bug report, and they would need to open the browser, navigate to JIRA, press Create Issue button, blah, blah, blah. We’ve been there, right?
So the first extension that we built that was sort of outside of the classic Spotlight scope was essentially JIRA. And then we went to the engineers we talked to and gave it to them, and did like a sort of a manual onboarding… So where I was hopping on a video call with them, was walking them through everything [unintelligible 00:19:03.24] obviously, because this was like building things very quickly to validate the ideas… And then we were fixing it behind the scenes, and onboarding next person.
And we sort of worked ourselves to where it’s like “Okay, this works.” And then we saw people were sticking with it, and were using it on a daily basis. And then we quickly had a few engineers and companies like Airbnb, Lyft, you name it. I was like “Okay, there is something here.” And that sort of gave us the confidence of going after this, as you mentioned, quite niche interface, where there is almost no other company doing that anymore. It maybe gets a bit more popular now with AI, where people want to come back to the desktop… But pure desktop software in this special form factor - it’s not really that many companies are going after that. Everything’s sort of moved to the web, so it’s almost counterintuitive what we’re doing in going for the operating system, essentially.
[00:20:00.16] And even if you look at your manifesto, which I do want to touch on - I suppose you could weave it in as necessary, but… When you say “We write native code”, I think even when you think about building a business around this tool, it’s also building a business around native code that’s written for macOS. It’s built on top of Apple’s primitives, not some sort of web software… Which is not bad, it’s just that you went the native route to make it as fast as possible, and use the least amount of resources as possible, to be really as Apple-native as possible, without being an Apple actual application written by Apple.
Yeah.
And you’re also competing with Spotlight, which is pretty fast, and does have a lot of features. I find myself disabling a lot of it, because I don’t really need a lot of it… And I find myself just not really – obviously, using Raycast, not using Spotlight really at all, having zero need for it… And so you kind of have doubled resources if you don’t go and disable manually some of the things that happen for Spotlight.
Now there’s some Finder search features you’ve gotta keep enabled, because I do find myself Command+F-ing in Finder and searching for certain things in directories, and that’s very helpful. Other than actually like Spotlight as a search for files, I don’t find it very useful… Obviously, as I’m a Raycast user. So it’s kind of obvious.
Yeah. So I think this is what I meant… You can treat this differently. You can say you build a tool for people that haven’t used Spotlight, and then you kind of bring them on. But we were in the camp like “Hey, the people we target”, which is sort of - again, we build for ourselves; so engineers, technical people - they know Spotlight, right? So we take this as a [unintelligible 00:21:44.07] And so “Okay, they know Spotlight. You kind of need to replace that first.” And if you have that, by then you can move forward. So there is the question “How do you replace it?” One is you make the existing features better. So the typical 10x better, and people switch kind of stuff. Or you add more features. And I think we did a good mix of both. We took the features that Spotlight had, and we’re making them better for our use cases. We have like a more reliable search for apps. We made it faster than Spotlight, and that is like sort of the table stakes. And then we added new features. With simple ones, like window management, with clipboard history, with other features that basically many of our users have [unintelligible 00:22:31.23] software for. We find ourselves like “Hey, if you can use more of the same interface of Raycast, it becomes basically even more sticky, because you enjoy it more, you can use it more often”, so we added more of those little features over time. And then it can pile up to something really, really big, because you have so many things to do every day. And we see users using it hundreds of times a day. The usage we have is crazy, which we also see in our analytics bill.
Yeah, I’m sure you do. I suppose since you mentioned that, analytics, let’s also touch on the other manifesto, which is privacy, which I thought was pretty cool… And just because you mentioned analytics - why I mention this is because I didn’t notice this until I was preparing for this conversation and I revisited your manifesto and what you declare… And you’ve got four points. You say “We respect your privacy, we build a business, we write native code, and we grow community.” And so the one I think that’s important when he talks about analytics is like how are you tracking your users? Because you give the large majority of the usefulness that is Raycast for replacing Spotlight, for example, as you mentioned before, as the default. And then some, of course, with extensions. But the default Raycast that’s out that is non pro, non paid, is quite liberal in terms of its use. It’s free. Anybody that’s listening to this can go and check it out, download that… And then I think the next question is - okay, great, now you’ve got this free tool in the hands of a lot of people attempting to adopt this tool, and potentially become a paid user on a team, or an individual, or whatever. But then you think “Well, how are you tracking those people?” So I guess I’ll just let you speak for yourself versus me read your manifesto. Are you tracking folks?
[00:24:17.22] Yeah. So the first thing that happened, when we onboard the first people, and we had to be like “Hey, you need to log in for this app to use it.” And then, literally, I think the first person said “Why the heck do I need to log in?” And it’s like “Yeah, it’s a valid question. Technically, you don’t. There is nothing which requires you to log in.” Which we said like “Yeah, if we get this feedback that early, we maybe shouldn’t revisit that.” So we stripped away all the login bull***t and said “Hey, if you can use the tool without a login that is technically required, let’s do it.” It’s the least friction you have when we want to have people downloading and just using it. So we removed that. So you can still - to this day, you download Raycast, you use the app, and then you find yourself you didn’t need to log in. We only require login when it’s technically required.
So when you don’t have people logged in, there is a question like “What can you actually track?” So the second question we asked ourselves, “What are we actually interested in?” We very much build by intuition. We want to see and connect with people what we want to build. And so early on the most important metric we want to have is we just want to know how many users use Raycast on a daily basis. Like, it’s a tool you use every day, so we want to just know how many daily active users we have.
And we said – for us, it’s not important who this person is. If it’s a daily active user, that’s all we care about. So our analytics is completely anonymous. We don’t know who this person is that we track. We have very little product metrics. We still to this day mostly caring about daily active users. And so now that we also have revenue, you obviously have a bit of different mechanisms there. With revenue, that’s for the business - which is also in our manifesto - we wanted to mention early on that this is something we want to build a business about, and we want to be transparent around us. With revenue, you obviously have other ways to measure, but then what really matters is “Okay, how many paid users do you have to this day with you? Does the revenue grow?” For all of that we don’t need to know the individual person. We just want to make sure that we know the data.
And for the product metrics it’s most important for us to know how we can improve the tool. Do people use this feature? Yes or no? Should we remove the feature? Is it heavily used? How heavily is it used? What are the top features we have? So we have those things, and then we can work with our intuition and with all the feedback we’re receiving to actually form our roadmap. So we’re not really like a super data-driven company, at least for now… And rather we want to have lightweight touchpoints that we’re going in the right direction.
So I see analytics as something like “Are you doing the right things? Are you going in the right direction? Do things work, actually?” And for that, we think privacy is a big topic, because we want to make sure that people can use us, and are confident with us using them.
How do you then talk to users? If you don’t collect a lot of data, how then do you keep a touchpoint to real people? In what ways?
I think we have three ways. One, we have an in-app feedback mechanism. So you type in “Send feedback” in Raycast, it sends an email to us. We answer every email we get. Every feedback we get, you will hear from us. Even though sometimes the answer is “Yes, thanks for the feedback. We’re not building it.” Even that is a valid answer, because it’s transparency.
[00:27:52.16] So this is the first way, which is heavily used. All this feedback we collect throughout the day, and send a daily digest in the morning to the entire team, so everybody can stay on top of things. And the interesting piece there is that everybody surrounds themselves constantly with feedback, and when they’re working on features, they can extract the information they need for their features, and then can bring that into their daily decisions. That’s like one loop that we have.
The other one we have is like we have almost 20,000 people in our Slack community. So if you go to raycast.com/community, you can come and join us in the community. We’re basically constantly chatting there, and people are asking us questions, we’re answering… It’s the directest way to reach out to us. So you can literally DM the entire team. Please don’t do that. [laughs]
Lastly, the other one is Twitter. So we tweet everything we build. We oftentimes try to share how we build something, or why we build it, and trying to be transparent. Because at the heart, we are builders. We do this stuff because we love building the product, and we want to share why we’re doing certain things. And then also people are equally excited about it, and reach out to us on Twitter with questions, opinions, ideas… And we love seeing all of that.
At the moment, there is a lot of designers poking around with concepts for Raycast for iOS, which is something we started working on. So it’s extremely cool to see just random people on the internet exploring ideas how Raycast could work on iOS… Which is something we’re exploring ourselves, but it’s like really nice to see that people think alike, or think creatively outside of the box.
I guess the real nugget there is how do you gather the right kind of information to lead? You can have a Slack community, you can have analytics, you can have more or less data from the application that’s just garnered naturally… I think ultimately what you want to know is “Are you building the right kind of thing?” How do you feel you’re doing on that, if you’re grading yourself? If you’re the teacher of yourself, so to speak, and you’re giving yourself a grade, how do you feel you’re doing in terms of meeting what your personal desires are, I suppose? Because you said you all lead by what you want to build, but at the same time you are a business, and you’re growing it. How do you feel you’re doing on a scale of building the right thing or not?
Yeah, it’s a good question. I think first of all you need to define what is good and where you want to go. Right? I think that’s the first thing you kind of need to think about. Generally, with sort of what we build, the company and the business and everything, we obviously want to get more users, we want to make more revenue in broad strokes. But interestingly, revenue is more the outcome. So revenue is actually the verifier if you’re doing well. And even if you don’t have revenue, which we didn’t have for a long time, your growing user base is the outcome if you do it well.
So this is for us – early on, it was clear, like “Hey, if our user base grows, we’re doing something well, because people enjoy using the tool. People stick with the tool. People recommend it to other people.” All of those things basically leading to your user base growth. So I think that’s the best indicator, and it’s a very easy indicator to get. So you don’t need much to get this information.
And then you can think about, okay, when this is the outcome, what are actually variables to move this? There is one thing - you can build more features. Sure. The other thing is you can talk more or better about it, which is I think sometimes, especially with early-stage companies, undervalued… Because oftentimes it is not about having more features, it may be presenting it better, or building more of a brand around your product… Which we I think early on sort of picked up.
[00:31:58.28] We always were very keen about design in general, and how we talk about the brand, and really thought about it as a brand and sort of a movement… Like, “Hey, we are here to give you time back, to make you more productive, to keep you in the flow.” And for that, we oftentimes drew inspirations outside of tech, looking into brands that actually advertise, and how they do it, and how they build; how they guys basically get people excited about this.
So I think that’s one of the things that [unintelligible 00:32:28.25] We’re now four years in, which is kind of crazy when I think back… But over the time, as we got better and better – we’re obviously not at the end side of it. There’s always something you can do better. But I think we understand more what people are interested in, what we’re interested in, what we’re good at, what we’re not so good at, and how we want to distinguish ourselves. And I think it’s a constant evolution. You figure something out, and then you get better and better.
I’m a huge fan of compound effect. Every tweet you put out, every release you do, every bug fix you do, every podcast appearance you do - all of those little things, when you’re looking at that isolated, yeah, they don’t move much. But when you release every two weeks, when you tweet multiple times a week, when you do more of those things, those things will make a difference. But it’s sometimes very, very hard to be consistent around that, and have this momentum, which is like oftentimes where we feel where we really strike when we have this momentum, and you see just how the entire team, community gets really passionate and excited about it. And those are the best times. But it’s so hard getting into this state, and it’s so easy getting out of this state… And I think we all have experienced this in one or the other way.
Absolutely. How big is the team nowadays? How hard is it to keep x number of people motivated?
Yeah, so this is also something that changed quite rapidly… So we obviously started in 2020, just the two of us. I think we ended 2020 with five. Then we went up to ten. Nowadays, since this week, we’re 27. So the team grew by quite a lot.
I oftentimes describe the team as one product team. We have basically – the majority of people are engineers and designers, and we’re a very highly product-driven company. So basically all our efforts go into product. Since recently, we have a team called Hype, which is like a mix of a marketing and growth team. They’re the first team we found ourselves inside of Raycast which doesn’t actively build the product, but they talk about the product… Which was something which was always a bit of a shared responsibility, but over time we figured out “This is so crucial to the success that we want to have, that we talk about the product.” So Petr is leading that. You might have seen him on YouTube. YouTube became a big part of the strategy.
And how do we keep all these people motivated? I think it’s just like go forward and keep this momentum. As soon as you move – it doesn’t matter how big the company is if there is movement. As soon as the movement slows down - and with bigger companies it’s obviously easier, because it’s just a bigger mass to move… But as soon as it slows down, I feel like it sometimes loses the culture of “Oh, how quickly we can get this out? Can we ship it next week?” Today, fixing a bug right after, and we release a hotfix… All of those little things build this really culture of “Hey, we want to just keep doing, keep building, keep moving things forward.” You need to keep the urgency, no matter how big the team is. I think as soon as the urgency goes away, everything becomes a bit harder to do.
What’s your practical way of keeping the urgency? Is it a must ship by Friday? Is it, like you said, “Every two weeks we’re releasing”? How do you maintain a level of urgency?
[00:36:12.05] Yeah, so we ship every two weeks, so therefore we also want to highlight a feature every two weeks. So if you look in our changelog, you see basically there’s always one highlighted feature, which is something very visual… And so be need to have something every two weeks. So there is a bit of planning involved, where we say “Okay–” We have oftentimes many projects in parallel. And with projects, we never really know when they’re finished. And so we start a project, and then over time they get to the finish line, and then we usually say “Okay, which release can we target?” So at some point, we have sort of “Hey, we’re targeting this release”, and then we work towards that. And then the team can basically say “Okay, there are things we’re not shipping in the release”, and we reduce the scope, or we make sure to make the cut…
And so with that, I think you always have this thinking like “Okay, what do we release this week? What do we release in two weeks? What do we release end of the month?” And if you do this long enough, everybody kind of gets into the thinking. That’s one of the things that we do, which works quite well for us, but it needs a bit of coordination. Every now and then you see we ship just like every three weeks, because “Oh, this thing was a bit longer.” And that’s fine. But I think that’s one of the things.
The other thing we have is we are using Raycast, so we experiment all the features ourselves. We have like nightly builds… So every day, you have a new version of Raycast. So even though some features come out later, we’re testing them internally for a while… Which is also – if you see something always coming in into the tool every day, it’s kind of nice, and you see like “Oh, there’s progress.”
Well, I’ve gotta say, as a user of Raycast, I don’t see that momentum.
Okay.
And I don’t mean that negatively. And I mean that, like, now that you’ve got this Hype team - Petr is doing a great job. I love the work he’s doing. I think the work that’s happening on YouTube is spot on. Whatever you’re doing there, keep doing it, double down, especially if it’s moving the needle, and you’re measuring it. And what I mean by “I don’t see it” is not that I don’t see a great tool to use, it’s that I’m not seeing behind the scenes, or even some sort of middle scene; like, the blog isn’t very frequent. I don’t know where to check as a user to pay attention to the activity of – the focus, as you said, on product, the focus on momentum, the urgency… You’re saying that, but I’d like to see a way for you to bring that out into the world. And so as a diehard fan of Raycast, and somebody who wants to pay attention to the needle moving, how can I do that? In what ways can I do that?
Yeah. I think the easiest is just Twitter. That’s where we’re most active. That’s where we always tweet something, that’s where we put out the changelog, the visual stuff. But it’s quite interesting what you mentioned, yeah. Like, I can see that sometimes we’re too much focused into the building, where some things we might be not sharing, and we’re basically too dedicated to that. But the easiest one is like going on Twitter. I think that’s where most of the information gets into.
With YouTube, what we’re doing nowadays, we find ourselves – we don’t always need to release something new to talk about something, right? I guess you mentioned earlier, there’s so many features in there… So there might be things that we can just use straight away, and talk about it, that we have already in the product. So we don’t really need to build something new to talk about it.
Break: [00:39:35.18]
So what I did notice is that you have a very nice change log, and I think that Linear popularized beautiful changelogs like this, and I think you may have followed their lead. I think you have friends there at Linear… So I guess that’s one way too, is what’s on Twitter. Now, I’m not against Twitter - actually X - by any means, but I’m not on there anymore like I was before, to follow a brand’s updates, let’s just say. And so I feel like what you’ve done here with the changelog is pretty cool, however, I’ve gotta go to it, versus it come to me, or for it to find me to tell me all the cool things you’re doing. So that’s where I want to find the gap. What do you think about that?
Yeah, it’s a good point. I’d say it gets harder and harder reaching people nowadays, because it’s so fragmented, right?
For sure.
You mentioned Twitter, or X, there’s Mastodon, Threads, whatever. So everybody checks something different. We’ve been on X/Twitter since the beginning, so we have quite a substantial followership there, and this is like sort of still our majority of where we communicate with people… But we tried to fragment that a bit. So we branched out to YouTube, as we chatted about. We talk about releases, but also more about other content; about features that we have, or like how to use Raycast, or interview other people how they use Raycast… So it’s not just about the product announcements.
We’re trying to revamp our blog at the moment… So that’s a thing where you also need to go [unintelligible 00:43:47.02] and this kind of stuff it’s a bit easier for people to stay on top of. And what we’ll be doing now is also revamping our email newsletter. This one is quite interesting… I think we’ve found something quite cool there. We don’t want to spam people - nobody likes a full inbox - so we’re doing this just once a month. And it’s more of like a recap, like “Hey, what happened at Raycast during the month?” We will mention what we released, we’ll mentioned if new people joined, we’ll mention anything else that popped up… And at the end we have like this fun category which is called Team Picks… So it’s just like everybody in the team sometimes experiences something new, they may buy something, or do this or that… So we just share from our personal life, essentially things like – we sometimes share which board game somebody played recently, or stuff like that. Make it a bit more human and not just about “Hey, here’s all the new stuff”, which can become a bit boring.
Yeah. This might be a challenge I think for everybody, is how do you have an active connection to your audience who wants to lurk/listen frequently. And I think that an active blog is one way. I think an active blog that isn’t robotic, like a brand blog, but more of like a branded personal-natured, written blog; it’s written by a person, it’s not Raycast the brand, and it’s just like something that’s a bit more connected.
And then obviously, I think for me - now, this is kind of going one layer deeper, but I just went to Twitter now, it’s actually called the Twitter App on macOS. Oddly enough, it’s not the X app, it’s the Twitter app… So that’s why this constant ebb and flow of “What is it actually called?” continues, because nobody gets it. But when I go to my notifications – this is what drives me away from Twitter/X, is that when I go to my notifications… And this is not a Thomas problem, or a Raycast problem, this is I think an everybody problem… My notifications are no longer mine. The first one in here is “Elon Musk posted something” in my notifications. And then somebody named Arman - who I follow, I’m sure; or maybe I don’t follow… Let me double-check. Like, it’s these things that I’m not even – I don’t even follow this person. They’re in my notifications, with this star thing. And Dax, and Rick’s, and Kelsey Hightower… Something I do pay attention to, but not like this. The Primagen. Christian Lampa. Other people are like all of my notifications.
[00:46:07.08] So I find that Twitter now is just so noisy. Like, I want to keep connecting with people in a high signal, low noise ratioed way. And there really is no right way to do that. You can publish a newsletter, maybe that’s high signal; I think that would be kind of cool. Maybe you can just convert your Changelog to a newsletter, or blog post… But that’s more ways to sort of tap into people.
I think when I zoom out though, and suggest or desire, especially as somebody who runs something, and somebody who consumes things, is I believe in the hub and spoke model, where you’re sort of hanging out with your best content based on what you’ve just said, on a spoke, not a hub. So you need a hub that’s Raycast-ran, Raycast-orchestrated, a place where you can go and check out and just browse, or subscribe to, and you push that stuff out to everywhere else, as necessary. I think you need to go back to that hub model, where you have a spoke and a hub. And right now you’re treating Twitter like the main place, but not everybody’s there, so you’re missing out. You’re missing out in keeping me entertained, at least.
Yeah, that’s true. Yeah, I think there’s also – I think there’s generally a problem with other social media bits, because it’s very short-lived. So when you put out let’s say a tweet today, it’s forgotten about tomorrow, right? So this is why, for example, we experiment with YouTube, because it has a much longer lifetime, in a way. Similarly, with blog posts, and stuff; they can be resurfaced, they can be found again. This is a bit different.
I think [unintelligible 00:47:39.28] change quite a lot. Also the style of content. Video is much more prominent nowadays. It fits when you especially have like a visual brand quite nicely, because you have something to show, and talk about… So I think that’s also interesting, whenever you think about the different tools… What medium do they use to showcase themselves can be quite different.
I don’t imagine we’ll solve your keeping connected problem here on the podcast, but I do want to mention it, because I just - I do want to pay attention. And I think what is on your Changelog is mostly what I want to hear, but it doesn’t feel like a guide through the bi-weekly cadence, so to speak, of this momentum. Harkening back to the inception of this part of the conversation is “How do you keep a team of x motivated, the urgency”, and you’re talking about release cycles every two weeks… And as a daily active user of Raycast and a paying user, I just mentioned I don’t see it. And I’d like to see – I’d like to find a way to see it, in a way that doesn’t change my app experience.
There’s one application called Warp that I love, and I don’t know if you use the terminal application called Warp on macOS. I love that application. I’m a big fan of them and their team. I’m not a fan of how loud it is when they have updates. It’s very loud. I just want my terminal to be simple, minimalist, don’t bother me… You can tell me, but that is an example of what I would consider way too loud of telling me about your updates. Like, I don’t need to know every tiny bug fix. I want to know about the important things, not the “You think it’s important” things.
There’s this interesting thing - as soon as it’s really a tool where you work in, you don’t want to be disrupted by any updates, or anything.
Right.
So for that reason, we actually build our own app updater that works in the background, and just like hints to “Hey, here’s something new you might be interested in.” But it all happens automatically, and it’s all pretty much in the background, so you don’t need to care about that. Because we think if it’s a tool that you use constantly every day, you just don’t want to be bothered updating. It’s just like a thing of the past, in a way.
[00:49:57.25] Subtle nudges… I like subtle nudges as an application user, of change. I don’t mind change; I don’t mind even knowing there’s an update. I don’t even mind pausing my workflow if it makes sense then to do it. But tell me in a subtle way. A color change, a small thing in the interface that is subtly different than it had been moments beforehand. As matter of fact, you mentioned the email feature, the Send Feedback feature, and while we were here talking, I just quietly sent an email off to your team and said “Hey, I’m podcasting here with Thomas, on the Changelog. Keep up the great work.” And then Daniel - I’m not sure how you say his last name. Sequeira maybe? Engineering manager at Raycast, he responds “Say hi to Thomas for me. And by the way, when you’re done podcasting, please run the check for updates command to get Raycast’s latest version, 1.71.1.” And so I did that. I didn’t even know there was a check for updates command, and I did that.
So I’m a daily active user, there’s a new update for Raycast, and it’s barely even telling me… And I think it’s a positive thing. I’ve never had to like pause and say “Is my Raycast updated?” It’s just always been the Raycast I know and love. So I’m praising you for that subtle way of opinion replication. That’s the way to do it; the way you’re doing it is the right way.
That’s good to know. There just one caveat… This is why Daniel mentioned it to you - we had a bug in an earlier version, 1.69, which basically broke our app updates. So now we have a lot of users that are outdated, and we sort of need to reach them somehow, like “Hey, please run check for updates to get on our latest.”
Oh, gosh.
So yeah, this happened – literally, we figured it out this week, when recorded. We spoke about it on Twitter today as well. One of those things that unfortunately happens; it was a simple copy-paste error in the code which was missed, and so now we just need to make sure that people get to the latest version. So yeah check for updates is our life saver right now.
Wow. So do you have a large population of your user base that essentially can’t be talked to because there’s no updates? They can’t get the updates, is that what’s happening?
So that’s the tricky bit… So basically, I mentioned that we’re updating the app in the background, and it happens automatically… So now the logic is broken, and it basically doesn’t check for the update on 1.69, which means – like, we’ve [unintelligible 00:52:27.16] 1.70, because we know when we ship a new version, 50% of the users update; that’s in the first 24 hours or so. So we extremely have a high adoption of like updates. And so we noticed at some point we’re getting feature requests that we have fixed in the new version, and it’s like, “Something seems off. Let we check. Oh, many people are still on the old version.” And so we’ve figured out [unintelligible 00:52:54.15]
So basically, people can’t update. So they need to manually run it. If you run it manually, then it updates the app, which is good. But we need to tell people. And coming back to what we talked about before - privacy, right? So we don’t know who are these people. We don’t have a login, so we can’t send them an email. So we’re trying to find creative ways to reach as many people as we can. So quite timely mentioning it here as well… We’ll make sure that everybody gets back into the auto updating schedule.
Yeah. Let’s get that hub and spoke in place; that way at least minimize your disconnection from your audience.
Exactly. Yes. So communication is really key… For things to go well, but also if things don’t go well. You also want to have that in place.
For sure. So you don’t even have the email address of any of users. You don’t even have them logging in, so you have no information to reach the general free population that uses Raycast.
[00:53:54.03] Yeah, so we have like a big email newsletter, which arguably are a lot of users. So we can reach those. But not every user is logged in, so not every user we know the email of. So I don’t actually know how what’s the ratio of it. I would need to check. But yeah, so this is an interesting challenge we need to overcome during the next couple of days.
That’s interesting to think about the problem set, because hopefully this problem never happens again, in terms of the updating getting broken. But if it does, and you have an update frequency, you essentially want to have some sort of logic in the application that says “I haven’t been updated beyond the normal ratio of updates, or frequency of updates.” So you kind of want to have some sort of check in there that’s like “Hey, I might be stale.”
Yeah. So I think that - a few interesting things… Errors happen, right? Sooner or later, any error you imagine will happen, right? So that’s fine. I think it’s much more important having mechanisms in place to recover from those things. And with desktop applications in particular, it’s quite nasty, because if this update has shipped, it’s shipped. We can’t revert it. With web - okay, you refresh the page. Done. With desktop applications, that unfortunately isn’t the case.
So it was quite cool to see how creative the team got. Like “Are there ways that we can sort of update?” And “How can we communicate? How do we reach as many people as possible, but also, how do we not annoy people that have been updating?” So finding good ways doing that, it’s a bit of a challenge for us right now… But I’m sure we will figure it out. But I think then also just going forward - if there’s an incident, finding ways to recover from that in the future. So if this ever happens again, that you have a way to say “Hey, actually, let’s update the app”, and have sort of a mechanism in place for this, to make sure that this will not happen again, essentially.
So it was the auto updater code that got copy-pasted, essentially. That’s what happened, the auto-updater is what’s not… So the one thing that you have in place to know if there’s an update – you essentially have a bad signal in your application saying “Hey, I need an update”, but that bad signal’s like “The light’s broken.”
Yeah, exactly. It’s like a single line of code, as it always is… And yeah, those things happen, unfortunately. But we do our best to get everybody back on track. And if people run it manually, then at least everything works. So that’s the good thing about it.
Well, maybe I was running 1.69, and I need to be updating to 1.71.1…
Yeah, maybe that’s why you were missing the momentum.
Maybe that’s why. I don’t know. I do love the momentum, though. And I think - you know, what we’re camping out on for a little bit here I think is how do you lead, not only just the team in terms of momentum and urgency, but then how do you gain the right kind of feedback from the population of users that you serve, to keep building the right kind of product? That’s a struggle any founder has, any CEO has, is “Are we building the right thing, at the right time, in the right quality of measures that we adhere to, et cetera? Do we have the right amount of people? Do we need to have less, do we need to have more? Do we need to have an isolated hype team, versus everyone sort of has this ad hoc marketing job?” And I think you’ve done it right. I think the job that Petr is doing in that Hype team seems to be working to me… So I think what you’re looking at is the different signals you take in as a leader to say “This is the right direction.”
It seems like to me you have all been really focused on artificial intelligence, different AI prompts… You even have, I think, an entire website that’s dedicated to like prompts. What is the URL for this thing? I think it’s like prompts.ray.so.
Exactly.
[00:57:53.15] I think it’s kind of cool. I think there’s lots of different prompt engineering. I think we’ve seen in the way of prompt engineers go away – we thought, initially, when AI was becoming hot, that prompt engineering would become a new job title. I think that’s gone by the wayside, basically replaced by things like prompts. Actually, I’m sorry; let me correct that. It’s prompts.ray.so. Prompts plural. So to clarify that… But yeah, so zooming out back to what you’re focusing on - it seems like you’re focused on artificial intelligence. Is that what’s been giving you the most signal to noise ratio in terms of what to build, and what you’ve been personally getting the most value out of with Raycast?
Yeah, so that’s always the trickiest question, what to build… Because there’s almost an infinite amount of stuff you can build. So I’ve been an engineer, and there is something interesting, which I still struggle with… But if you’re an engineer, you have this really tight feedback loop. You build something, you compile, which is the first test, and then you test the feature, and it works, and then you ship it. Which is really good, because the feedback loop is essentially seconds. So it’s a really, really short feedback loop. If you’re like a founder - or not necessarily a startup founder; if you’re working on something bigger, the feedback loop is not seconds. It might be months, or even years, depending on what you’re doing. So it’s really, really hard to know what you build, and if that is the right thing to build, because you never really know. Even if some segments maybe show you that it’s correct, it might be not.
So what we always did, and just the only thing that I’ve seen working for me and us in a way, it’s like we were always going where we got the strongest pull from. So whenever we see people are generally interested in something, they keep asking us about something, that’s what we’re doing. And then you see oftentimes more and more [unintelligible 00:59:51.10] So that basically brought us to AI.
So in 2022, end of 2022, ChatGPT came around, which suddenly changed the whole industry. I think nobody - at least myself - has really seen that coming. I even remember in 2020 we had like machine learning startups in our YC batch, and I thought to myself “Oh, machine learning? Yeah, it’s the same, it’s been around for 10 years, but never really lived up to its promise. Let’s see where they are.” [unintelligible 01:00:21.21] replicate. So they’re doing I think quite well with all the wave of AI right now, with all the models they’re hosting, and so on and so forth.
So I think it took everybody by surprise, in a way… And similarly - yes, we had plans, we wanted to do this and that, and it was like “Oh, there’s [unintelligible 01:00:40.01] And for us, it made really quickly click, because everybody was sort of looking for a textbox to insert a prompt. And if you think about Raycast, it’s a textbox that is available everywhere. So that felt like a really, really good fit. So we put one and one together, quickly shipped a beta, saw a huge interest in the waitlist from one day to another… Which gave us confidence, like “Oh, there is something. Let’s go for that.” This basically turned and also into Raycast Pro, which we launched May last year, so almost a year ago… And when we launched it, it was also the moment when we launched monetization. And launching monetization is this really weird, scary thing. We had for three years not really monetized. We put out then the Pro plan, asking people for paying for us… And we’re quite surprised by the response. Because from day one, there was like a huge interest in it, and it was like “Oh, okay.” That’s what you hoped for, but you never really think this will happen, right? Which is another thing - like, basically, we got confidence that this is like the right direction to go for us. And again, we saw where the pull is coming from, and went in… And so over time, we basically said “Okay, there is high demand for that.”
[01:01:59.27] And then we were just working with the community closer together, what they actually want to have from Raycast and AI together. I think there are two things. One, they want to have similar what we did with extensions, where you have access to so many tools across all the other things you have, and combining them in one interface. They sort of want to have the same experience with AI. Because we have so many different AI models, they have all benefits, but they really want to use them the same way with one app. So that’s what we just did - we released Anthropic, Perplexity, Open AI models. They’re all in the same UI, you can use them all the same way, and you could take the model you want to have.
And so I think over time, what we see happening is AI got like a huge productivity boost to many people. People use Copilot, and all other things… And it became really quickly, at least for myself, a tool that I use regularly, and it gives me a lot of value in my daily tasks. So we really see AI is really most powerful on the operating system level, where we operate on. So we want to make the general AI accessible across tools, that it knows about you, that you can connect to your tools, that it really sits there and becomes sort of this assistant that everybody dreams of. Like, the thing that you can just invoke, and you can ask questions, you get the answers, it can perform actions for you… Really like this interface there that is always ready for you, and is always available across devices, tools, and anywhere else.
And I think we have quite a nice position. If you think about it, we have one in a thousand extensions in the store right now, they’re connecting to all the different tools, which I think is a key to really make this a reality. We have the perfect interface. It’s ephemeral, it sits on top of all the other applications… And I think nobody really is interested having an AI chat in all the different software out there. You just want to have one that knows it, but not have it fragmented as we have nowadays with apps. Because whenever you switch those apps, those things perform differently. You need to pay five times for the same thing… So we really see ourselves like “Hey, let’s consolidate that and become basically this interface for it.”
I think the key thing here is not everything needs to be AI. There are many good things that don’t require AI which we want to keep, right? So it’s not that we now do a hardcore pivot and become like a fully AI-driven thing… Like, things like what you mentioned earlier with the launcher, and all of those things - they’re valid things. We need them. And I see them as like the building blocks. And then you can build abstractions on top of that. Some of them might be AI-driven, some of them might be not, but they all fit under the same nice umbrella of a launcher interface, of a command palette, a command bar. And that’s where we see I think those two things really nicely come together… Where, again, we see people pulling us forward, and we work with them to make it happen.
You mentioned store… I do want to talk about AI, but I want to pause and talk about the store. And I want to talk about how – I’m not sure really what my question is necessarily, but how do you have a store, how do you support the folks in there? So I guess my questions and my concerns come around how do you nurture this as a founder and a leader comes from my usage with Obsidian. There’s lots of really cool extensions that are built on top of Obsidian, and in a lot of cases you begin to rely upon these things, the code becomes unmaintained, or goes stale… It’s not first-party citizens in terms of an extension or a store or whatever you might want to call, however Raycast terms these things. So help me on terminology… I know you call it the store. Do you call them all extensions, or are they called applications?
[01:06:00.27] How do you support that population of folks who want to dig deeper and provide value to the Raycast audience, but at the same time make sure those applications adhere to certain standards, even as you mentioned before the brand of Raycast, efficiency, productivity, native code, speed - all these things sort of are synonymous with the Raycast brand. How do you how do you lead that well? How do you have a store that maintains a level of, I guess, high quality and maintainability?
So you must have been talking about AI so much lately… So let’s switch it up a bit.
We’ll come back to it, don’t worry. I do wanna talk about it, but I wanna pause here, because I’m really curious about this point. We’ll come back to AI, yeah.
All good. So when we started with thinking about an API to extend extensions, at the same moment we started thinking about a store, because I feels like they’re going hand in hand. We really want to build like an end to end experience. Think about iOS; people can build apps, they can publish it, other people can discover it, and can download it. So this is really what we did ourselves well. We built an API that lets people build native extensions, with writing React, and Node. And then we built a store that those developers can publish their extensions, and they can be discovered and installed with a single click by all our Raycast users. So we want to make this like a really easy ecosystem.
So that was the first thing. But then it was very clear to us, those extensions become a core part of what Raycast is. So we wanted to make sure they’re extremely well-designed, that they have a good UX, that they are fast, that they are reliable… And over and over again, we came back to “Yeah, this basically means you need to do a review process of extensions.” And nobody really likes review processes, right? There is enough fuzzing/bashing on Apple and other off those platforms today, kind of gatekeeping, these kinds of things… So we though “Okay, what is the best way to review extensions for developers?” And then we actually didn’t need to go that far, because every developer has review processes. It’s a pull request. You do a pull request, another developer comes, looks at your code, gives you a thumbs up, you merge it, you’re good to go. So this is exactly what we do. All extensions are open source. We have a massive repo, which is github.com/raycast/extensions. If you want to add a new extension, you create a pull request against it, one of our team members comes, takes a look, hopefully everything is good, then passes it quickly, and then you’re in the store.
We also use this opportunity to provide feedback, just like as you were doing in a pull request. Like hey, we usually don’t tend to look too much at the code, but rather on the functionality on the higher level, giving feedback on what things you could do better to fit our UX… And then you can ship it. So this works really, really well. The same thing if you contribute to an extension; I think this is really nice, because you just use the regular GitHub workflow. You branch out, you do your changes, you fork it, and then you bring it back into the repository. So it also immediately gives you this collaboration, which I think is really, really powerful.
So I think it’s like this thing which helps us to really maintain the quality… Though, there is one thing - if you have 1000 extensions, that’s a lot of volume. We’re getting multiple pull requests every day. So we’re going through this, we have a dedicated team looking into this… But now we have one person, Tom, which actually goes over some of the extensions and even improves them.. And especially the top extensions, that everybody has installed, we try to stay on top of that. If there are urgent bugs which our users can report, we help fixing them. We work with companies and creators to be able to improve their extensions, to bring in the latest features… We have other startups launching their things in our store… So we’re really building like an ecosystem around that. But first and foremost centered around two simple things. You want to keep quality, and you want to make it easy for developers to contribute.
[01:10:15.15] And funny enough, the pull request, this little abstraction that all developers know for a while, works magically for that. It comes with a few trade-offs. The repositories are huge right now, but we’re trying to find solutions to make it easy to keep maintaining those extensions, and contributing them easily. But nevertheless, this is like something which makes it really, really powerful.
And the funniest thing, to wrap this up, is new users - they don’t even know what was a third party extension or what’s an official extension anymore, because they look and feel exactly the same. So they might not even know that this is like an open source extension. We highlight that in the store, that it’s built by people and stuff like that, but when they’re using the extension it’s so immersive into the Raycast experience that you have this feeling. And I think this is like the really important bit here. It’s a shared ownership between us as a company, but all the contributors, and we’re helping each other to get to this quality bar.
I like the idea of it being part of the repository that you have on your own GitHub. I think that actually helps you not have – I mean, you want to have distribution in terms of your user base, obviously, but you don’t have the code be distributed, insofar as Git is already a distributed version control system. So barring the awareness of how Git works, let’s go above that and say this is all located at Raycast’s user, your org on GitHub, in the extensions repository, in the extensions directory within that repository. And so all of it, in a way, has a high level of control from a Raycast perspective. You have a level of control to even remove, or probably to veto, or to be like “This probably doesn’t fit. Let’s not merge this pull request.” Because it’s not going to be in master or in main, whichever you’ve chosen if you’ve gone back and renamed, your primary branch; it’s not going to be in that main branch until you’ve accepted the pull request, right?
Exactly.
So there’s a level of even vetting, I think, that I wasn’t quite aware of. Now that makes a lot more sense, how you’re maintaining that control.
There is an interesting side effect… So it helps us also to curate the store. So if we see there is an extension that is the same or similar to another extension, we can hint the author of like “Hey, maybe we contribute the extra features to the existing extensions.” Because from a user perspective, if you see five different extensions in the store, you might not know the differences. So we try to do those things as well, which is like less on the extension level, but more on the higher level, to make sure it’s like a really nice experience.
And then the other side, in fact, that was quite helpful was if you have a single repository, it’s perfect for teaching as well, for educating. Because as a new developer comes and wants to know how to build an extension or how to use this feature, there’s now endless of features or examples that you can just link to and say “Hey, just use this React hook. Here’s an example. Check it out.” Some people take one extension, and they’re sort of tagging it as a template, and then bringing in their own changes for like a new extension.
That was something we thought about initially, but it was a bit of a surprise how much that actually helped to like spearhead that… Because we’re like two years in and got to like 1,000 extensions really, really, really quickly… Which was like – the open-sourcing is nice, because people really associate themselves with the Raycast community, and bring in this openness and the developer mindset around it.
[01:13:57.10] A lot of activity here for this, for sure. I think that maybe one more layer deeper from a technical level, but not quite actually technical, but more like technically speaking license-wise… The entire repository is MIT-licensed, so congrats on being not just free as in free, but free as in libre, the true permissive nature of open source. And I guess that means that every extension that’s part of this, since it makes it in there, is also permissively-licensed open source software, that can be free to use however “literally” open source can be used, the real definition of open source.
Yeah, so we built our API that allows people to build those extensions. We built a [unintelligible 01:14:41.23] that basically allows to render those things in Raycast, which is the primary host for those extensions… And we wanted to make sure that we have it like this. But we also wanted to make sure that when people build those extensions, that there is this concept of the shared ownership. As you mentioned, it’s part of our repository, so we own what comes in there… But we have other people that decide “Hey, I don’t want to share it in the store. I maybe want to just distribute it outside”, so they keep their own repository and people can download it from there and add it to Raycast from there. So I think this is also just the flexibility.
I think it’s quite interesting when you work with developers - and I’m speaking basically about myself as well - because you just don’t want to bull***t people, right? You want to basically be honest with people. I mean, you generally should. I think developers, they’re extremely good at picking out other things; when they’re logically not connected together, you don’t make yourself friends with it. So I think that we’re just good citizens, and going back, this is how we would like to have it. So I think there is no harm having it like this, so we’re just trying to be transparent around those topics as well.
I dig it. I’m excited about that. So I guess, to tail off the store story…
We should build a Changelog extension, by the way, to browse all the episodes. Didn’t you have an API?
We do have a – I think it’s a behind the scenes API. It’s never been first-class citizen. I’ll have to double-check with Jerod. I know he had made that a priority, but I don’t know how well-documented our API – if it exists, how well it’s being used or consumed.
Let me know. It would be fun having a little command in Raycast, you open Changelog.com, you see all the episodes, nice covers, and then you can click and it opens it up in the preferred podcast player. It would be the really cool.
That would be kind of cool. I guess if you had like settings, you’d probably base it on installed applications, Spotify or Apple Podcasts or whatever, and choose your opener for it, and the extension preferences… And then whenever you – “fresh changelog”, I don’t know. Or “changelog episodes” or “latest changelog podcasts.” I don’t know. It could be fun like that.
It’d be cool.
That would be cool. Yeah, that’d be dope. I would certainly use that, because I use Raycast daily. And if I could just have one more thing in there… Like, I just installed Tailscale as we’re talking. I was like “Okay…” Because I was browsing the store, I’m like “What’s here? What do I use?” I use 1Password, I use Tailscale, I use Docker, I use Zed as my editor… You have nothing for Zed yet, because Zed is too niche, which is cool… What can I do with Zed in Raycast? It wouldn’t make any sense.
Yes.
I was thinking, what’s some low-hanging fruit that I already use? And I’m like “Well, Tailscale. Sweet. What do I have there? Let me list my exit node, or let me define my exit node”, or whatever it might be. Or list my status and whatnot. So that’s kind of cool. And that’s actually - I’m noticing on the store, it’s contributed… You know, when you go to raycast.com/tailscale/tailscale - I don’t know why there’s a double up there, but you can explain that… It’s actually by the Tailscale user, I guess. Then you have contributors, which I believe is probably pulled from the GitHub API and the contributors on GitHub, but it’s actually a Tailscale org, or user. I mean, I don’t know… How did they get their name up there, Tailscale?
[01:18:17.15] Yeah, let me check, actually… So generally, we kind of follow the GitHub pattern there. So what you have is you can have one organization or user, and then when you contribute an extension, we basically append that. So similar to a repository where you have username, repl name, we have username, extension name. And then we also have companies that we collaborate with, because oftentimes when you installed an extension and it comes from the official company, it makes it more trustworthy.
Oh, yeah. Absolutely.
So that’s why we collaborated with companies like Tailscale, 1Password, Linear, to say like “Hey, this is like the official extension.” Because then you can sort of trust it, and it gives that extra boost of confidence to make sure “Okay, yeah, this sounds reasonable.” As I mentioned, all extensions are open source, so generally, you can always look up if you’re a developer what happens in there, which is sort of also a security measure, to know what goes on there, and like it’s transparent for people to look into it. This is something which we find extremely valuable, having this sort of official extensions.
It’s actually listed in the pkg.json details. You have author, obviously, and you have owner. And the owner in this case for Tailscale is obviously Tailscale. Which is kind of cool.
Which is kind of interesting… Like, why do we have two different ones? It might be too niche, but I think is a nice detail. Like, oftentimes we have a person starting building this extension, the author, and then this grows in popularity, and then we want to make it an official extension, and still want to keep the original author, because they put so much effort into it to make it what it is. So we have them still as the original author in there; they get the extra credit, and that has basically the owner separately as the organization.
We had somebody, for example, similarly in the Notion extension, which initially was built by a French PM, and he really built this thing really, really well… And then we made it – like, together with Notion we said “Okay, let’s make this an official extension to show that this is really the official Notion extension”, but still want to keep the credits to the original author… So we have them in there as well. I think it’s just these nice touches, which is like if you built this yourself, you want to still have this credit… So we just didn’t want to transfer that away artificially.
I agree with that. I do agree also that you need to have an owner mechanism, even if it’s the original author. You might have author, Sam Linnville, and owner Sam Lynnville, until Tailscale’s like “Yeah, Raycast will collaborate with you and take ownership of that, and let that become part of our first-class citizen extension ecosystem out there”, because what you give that brand is really added user experience, and I guess in some ways more usefulness, and potentially distribution… Because I might go to your store and discover something new. I mean, who doesn’t know about 1Password, or even Tailscale…? Tailscale, by the way, is a sponsor, and so is 1Password. They’re gonna become a sponsor really soon, so I’m excited about that. I’ve been a lifelong user of 1Password, so I’m excited to have them on as a sponsor here in the near future.
Oh, yeah. Great.
We use all their features in our infrastructure, and as a developer I use a lot of their CLI features, and all my SSH keys are stored in there, I biometric all the things… Anyways, ad is over for 1Password. I’m a big fan.
How cool to close the loop… Like, having something that you’ve been using for such a long –
Right?!
…personally, and then getting sponsored by it. It’s like an interesting thing.
[01:21:54.27] Yeah. Well, they need help connecting with the developers, so… I think there’s a lot of people who know about 1Password, but not a lot of people who use their developer tooling, or have a clear awareness. That’s part of the key too, is like part of distribution for brands and communication is go where the people are… Which totally makes sense while you’re on Twitter and X, because that’s where a lot of people are. I think in the last couple years we’ve seen that ecosystem fracture a bit, and you have more people who have completely abandoned it, never coming back, and have moved to Mastodon, or Slack, or just nothing. They’ve sort of abandoned social media. Maybe now the lurk on Instagram, instead of being active on a platform… Which is cool, too. But as a brand who’s trying to maintain communication levels with folks and whatnot, it’s become infinitely harder in today’s age, really.
Yeah. This is what I mean… You can build features and add new stuff, but if people don’t discover it, it doesn’t matter. And it’s really interesting… It doesn’t matter how big or small the company is, you have this problem, in one or the other way… Especially in things like where you maybe want to branch out into new target audiences, and want to diversify your feature set a bit… You kind of need to then sort of relearn those mechanics… “Okay, we are the new users? How do I reach them? How can I make my brand attractive to them? Did they know about the brand differently before?” Super-interesting. I feel like this is like – yeah, especially in developer land, it’s like a really interesting topic, which many companies haven’t cracked.
Alright… Now, Thomas, it’s time to talk about… AI! Are you ready?
[laughs] I hope so.
How excited are you to talk about AI? I mean, I wonder – it’s now become the norm, and in a lot of cases there’s people who are fatigued by discussions of AI, and it’s become a meme in lots of ways too, where XYZ brand has a new launch, and artificial intelligence is now baked in some way, shape, or form… And then obviously, you launched Pro a while back… I came for the setting sinking personally, and did not come for the AI, but now I can appreciate the AI, because I got 3.5 for free, or I guess for paid, for free with my Pro plan… [laughter] But then you also have the option to have advanced AI in Raycast. This has got to be a boom for you; one way to have a single interface, a single pane of glass, as a lot of people in tech say, to AI tooling; the various LLMs. What does this mean for Raycast? Have you seen a massive growth? Is there a new resurgence internally? How does this work for you all?
Yeah. First of all, I get it. I mean, I think everybody is fatigued about AI, right? So this has been around now for one and a half years. Every week there is something new. It keeps getting better, and new stuff enabled, and whatever… Every company integrates it, every company talks about it… So I definitely get this. And I think it’s also – I personally wish this gets a bit less about AI, and more about what actually is possible, of what actually features people build… Where AI becomes just like the enabler, the technology that enables it, but you talk more about actually the innovations you do, and less about AI and model.
That being said, we recently added more of those models, because we’re in this really weird timing right now where it’s one of the only things I can remember from my life where it comes out and immediately everybody knows about all the details, is an expert in it, knows when to use which model, knows their preferred model whatsoever… And it’s like, it’s kind of hard to go against this flow, and so you’re completely neglecting it… Which is basically - we did our pivot there in a way; we first wanted to just support Open AI models, and said like “Those are the clear winners. We’re making it easy. We’re just going to have those models.” But then loud and clear, our community said, “Hey, hold on. Anthropic is actually really good for XYZ.” And then there is Perplexity that is really great for when you want to have quick answers around general knowledge… And it’s like “Oh, hold on. Yeah, this kind of makes sense.” And it’s not so black and white, the details in the devil. And so this is why we sort of added more of those LLMs to Raycast, and we really see that now as like Raycast AI, it’s sort of “This one interface for many different LLMs”, and you can pick and choose the ones that suit you personally the most, or suit the task at hand that you want to do the most.
[01:30:08.13] You maybe need an extremely fast LLM, which is like less capable, but it’s good enough for what you want to do, like fixing spelling of a sentence, or something. But maybe if you’re diving down into like a coding problem, you want to make sure that you have the best LLM, and it can reason about the problems you have… And it’s fine if it takes a bit longer, because you get more value out of it.
So that’s like sort of the conclusion we came to. Personally, I don’t think that’s sort of the end state. We’re already thinking about “Can we do something automatic, so that we pick the right model for your problem, and you don’t need to care about it?” But it’s more like sort of the implementation detail behind the scenes, like we pick one or the other, and make a good guess of what’s the right model for this. Because if I think about AI, I don’t think about picking a model, right? I just think about “There is like an intelligence that helps me doing something that I would need to do otherwise myself.” That’s really what it is about.
And then the other angle to it, which - now I want to talk more about the features. What Raycast is interesting – if you use Raycast, you do it with your keyboard, you insert the text, and then we sort of interpret this text. At the moment, this is very static. You search a command to send to your window, we send to your window. There is another command to send [unintelligible 01:31:28.02] left, to move it to the left. So it’s very statically-defined what you can do. But what the AI allows you to do is that this becomes more of a fluent thing; this becomes more of something – I can enter something “I want to do XYZ”, and then we essentially figure out what to do.
And the interesting bit here is when you think about the store and the extensions we chatted about, all of them are connected to different tools. So they’re connected to your issue tracker, to your wiki, to whatever you have… And so you can then start thinking about “Oh, this is quite interesting… So now I can connect things together that I would do otherwise.” And this gets much more around like what are things that you do on a daily basis, very often, that would be good to abstract away and make it quicker to do.
And so this is something which we’re thinking about, how can we get out of this very statically-defined feature set? “This is the, I don’t know, 1000 things you can do”, to like more “Hey, you can shape them up yourself by basically chatting or talking or inputting the text, what you want to do about this stuff.” And with that, all sorts of problems come… Which is like the fun problem. So it’s not straightforward… Otherwise, we would probably have built it by now. And it’s extremely hard to build something that is reliable and fast… Which basically Raycast stands for, right? We chatted all the way at the beginning about how to replace things like Spotlight - you need to be really fast, you need to be reliable, you need to be 10x better… And now you’re going always to the opposite direction, to like LLMs that hallucinate, they’re slow… How do you combine those two things to make a good product? And some of those things will hopefully be solved over time. Things just naturally get better and faster with those language models… But how can we actually solve the unique problems to our use case, and how can we make those really, really good for what we wanted to do?
Yeah. I think the challenge is interface. How do you maintain some sort of native approach? I know when I use ChatGPT proper on the website there’s this analyzing aspect; it has this sort of spinning wheel. Something’s happening while you’re waiting, some sort of feedback loop. And when I ask the same question on ChatGPT 4 native, on the website, or inside of Raycast, the output is different. It’s a little bit – I don’t know what makes it different, or even what you do behind the scenes to take what they feed you via the API to be different than what they have on the web… I suppose you could say the native ChatGPT way.
[01:34:09.01] And so that’s always been my concern, is like how do you build a tool successfully around a moving target that is AI, that has unique ways to have a user experience first class, you know, when you’re out there proper? And wouldn’t the way – you know, wouldn’t the purists, so to speak, who really care about the director of their movie kind of the thing… I mean, I’m just thinking like, the purist is like “It must be shot on film” kind of thing. Back to like “I must go to ChatGPT proper to get my ChatGPT 4”, or DALL-E, or whatever they have there. How do you make sure that Raycast is superior in all the ways you want it to be superior as an application, but not less than the actual native way, you know,, Claude may operate, or ChatGPT may operate, for those examples?
Yeah, definitely. I think it’s quite interesting, because [01:35:08.22] have many others that are doing something similar… So you ask yourself the question “What should we actually do?” Coming back to when we chatted about founders, “Okay, how do we know we’re building the right thing?” So my take on this - this will probably change, because AI changes so quickly… But at the moment, it feels like everybody tries to build this super-generic AI that solves everything, all of our problems, in just a simple chat. And while this might work, and we can get there eventually, it’s quite hard to build something that generic, because usually we do it the other way around; we build tools for very specific things. We have an IDE to write code, we have a Notion to write not code, but also a type of text, right? And a completely different interface, completely different tools, but both of them produce text at the end.
So now going back to basically this, like, what is actually the unique stuff that you do with Raycast? What is actually the things that we can do good, that’s suiting us. So we’d more come from this angle. And when I think about that, it’s more “Okay–” We chatted about “How can we make people staying in their flow better? How can we make sure they get the information they need quicker to do that job? How do we make sure that we remove those distractions?” Because all the tools they use on a daily basis, believe it or not, they have an agenda that they want to put on top of you. They want to make you visit this tool, for better or for worse. But you have your own agenda, so we want to make sure that we can stick to your own agenda. And some of those things, as I mentioned, can be solved with AI, in an intelligent way, by connecting those things better together… But some also maybe not.
So I think it’s quite easy at the moment to see like the frenzy of “Oh, we solve everything with AI”, which I’m always a bit mindful about… Because sometimes the best solution might be not with AI. It might be just the good, old, classic code that we write, that produces much more value than we think. And then basically when you come with this mindset, that it’s about more what’s sort of the secret sauce that we have, that fits our target audience, that are really the problems they have on a daily basis… And that’s sort of first class product-building. You go to your users, you figure out what problems they have, you solve them, with or without AI. This is like basically them finding a solution. But at the moment, I feel like it’s a lot around “Oh, we’re talking about a solution, it’s AI, but we don’t really know the problem.” And that’s, I think, a bit dangerous, if you start this way around.
[01:37:50.06] Well, one thing you can recommend, or at least mention, is the amount of models. You released a blog post literally today, the day we’re recording, April 10th… So this is being recorded April 10th, by the way, for everyone listening… You’ve got all the models, essentially; at least the ones that seem to matter most. You’ve got the ChatGPT 3.5, which really, if anybody’s using that, I just feel bad for them, basically. But it is about access. Then you have GPT 4, you’ve got Claude 3 Opus, you’ve got turbo versions of GPT 4, which I didn’t even know existed. I didn’t even know you can turbo GPT 4. You can have extended versions of it. You’ve got Claude 3 Haiku, Claude 3 Sonnet, SONAR Small, SONAR Medium, LLaMA, Mistral, Code LLaMA… You’ve got all the different LLMs out there, at least the ones that are most popular today. So you’ve got one interface to sort of access the most popular ones out there. How will you maintain, I guess, this? Raycast began as a launcher, and now is a full-fledged access to LLMs application. Where do you go from here?
Good question. So Raycast itself is a set of productivity tools in our mind. It’s basically – we see the launcher as like the centerpiece of it. The launcher is essentially making sure that you can access all the information, and that’s where we’re coming from. We already have something like Raycast floating notes, just like little notes that you have on the side, to basically take notes during a meeting, or during your day. I use it to plan my week and check off my tasks.
So we have sort of this concept of having multiple applications in one. The AI chat is the latest addition. So AI chat is like - it [unintelligible 01:39:32.27] it almost feels nowadays like a standalone application. And we feel like Raycast itself evolves more and more into like our own ecosystem, like a productivity suite. It’s all packaged in one application, because nobody really likes to download multiple ones. But we feel like that’s like a nice way of like structuring your work, where you have this productivity suite that works really nice together. The launcher is the centerpiece of it, and then you basically can use notes, and AI chat separately, to basically enrich that. And there might be other things coming that we’re adding to this mix as well… But the launcher, while it’s a great interface for quick access, when we built the AI chat, the interface of the launcher isn’t great if you want to have deeper conversations; conversations that go over multiple messages, that you maybe want to refer when you go back to your code editor, or where you left off… So there we basically saw there was a need for like a specific interface for that. And so that’s something which we oftentimes see – like, we start with like “Hey, let’s integrate it in Raycast.” And then we would see “Oh, actually, there might be use cases where it’s better it’s outside.” We’re not really shying away building it outside. And this I think is the good thing that it was all native, and close to the metal, close to the operating system… We can do that relatively easily, and we can make it appear like all the other applications you have… So to make sure that you have this consistent feel.
How do you handle when you get these multiple windows? The floating windows for the notes, for example, or even the chat window for AI. Essentially, you have Raycast as a singular application, but then you sort of have like sub-applications within that. Will you eventually have more sub applications as you grow on? What are the challenges of that from a UI perspective? How do you manage the toggling of the conjuring of an application via the launch bar, to the AI window that then stays floating? I mean, it seems challenging from like a UX perspective that you have to dance around native application land, and how that user experience is just naturally done on a Mac.
Yeah, it is a challenge. So the first thing that we did was like floating notes, which was a very primitive window. And these were kind of fine. And the whole thing was around floating. It stays on top of all your other applications. It’s a bit inspired by the launcher, which also is on top of all your applications.
[01:42:07.26] The second of them we did was AI chat, which we started similarly, like “Oh, this is just like floating notes”, and it floats, and stays on top. And then the UX challenges started to appear… Because people said “Oh, but I want to have it not floating. And I want to have a dock icon. And I want to have a sidebar.” And these were all valid feedback. We said, “Yeah, this makes sense.”
So we then realized all the interface we built with the launcher and the UI components we built there didn’t really suit the AI chat. So we went on a journey of “Okay, cool, let’s take all the feedback and rethink AI chat.” And so a few weeks ago we launched the revamp of that, which is much more like a real chat app. If you look at it, if you open AI chat on your Mac with Raycast right now, it has a toggle for a sidebar, it looks and feels almost like the Messages app on your Mac, you can have different conversations, you can create new ones, you can pick the model you want to have for the different threads you have… And so it became really this rich application. So for that we had to revamp a lot of the things. Before, we were very keyboard-driven, and we still are. But when you work with the chat, you’re gonna select text, and you’re much more clicky. So we had to actually build a bunch of things that we didn’t really had in Raycast, because it wasn’t necessary… And we had to build that out, because you just perceive this kind of window much more differently, because it is essentially like an app, it’s just bundled within Raycast to make it easier to distribute all of this.
Yeah. I suppose the challenge comes back into play whenever – if you’re a Command+Tab guru, frequent user, like I am, like most people are, I think - they are very keyboard-driven - now you’ve got this scenario… And this is where the UX I think permeates to continue to be a challenge, even now, even with these updates… It’s that whenever I want to Command+Tab away to another application, that AI chat window is still there, and I can’t Command+Tab back to it, it doesn’t feel like. And if I can, I haven’t found a way to do it yet.
But you can.
Oh, you can.
You can. So if you’re in the chat and do Command+K, you can disable Always on top. And what this does is it basically makes the window behave like a normal window. So then you’re going to Cmd+Tab, you get a Dock icon, you get all of those goodies. So we sort of have these two separate modes, depending on how the person likes to use it. Because we got the feedback like “Oh yeah, I wanna have it Cmd+Tabbing.” And then we also got feedback from others, “Oh, I love how this is floating.” And we sort of have these contradicting opinions. And oftentimes we don’t really want to add many settings, because we feel like the majority of people use the default setting anyways… So we want to keep them to a minimum. And every setting you add also has a huge cost of maintenance, because with every setting you have, you have to test two cases. And then doing rotations of that. So we keep them usually down to a minimum. But in this case it was like yeah, if we have those strong, contradicting opinions, it’s probably the right way to add a setting for that. It’s a bit hidden. One of the challenges we have generally when you have a quite compact UI, which is quite condensed, and not wanna overwhelm the user, you kinda end up oftentimes missing some of those hidden settings, which we’re going to need to do a bit better.
[01:45:47.21] Yeah, I find I’m an advanced user, or at least I think I am… And I would imagine I’m a pretty advanced user. And maybe I would have stumbled on that, but I think maybe I wouldn’t have. I am familiar with Command+K inside of different Raycast applications or extensions or interfaces, essentially. I’m familiar with that being a way to get to other things. But there’s a lot in there. I’ve got a bunch of paste responses, copy responses, copy in code, copy in chat… And I’ve really got to dig to find that particular nugget… Which - even as part of that is kind of like hidden down there. Like, I don’t even know where to look for that. Thankfully, you do have a search for actions option, which - I mean, stellar UI. I mean, by no means talking crap about your application, but just these are the UX challenges every team faces, regardless of how good you are. Regardless of how amazing your software is, you always have some sort of UX feedback, that is just like this. You’re going to have some sort of challenge. And your interface and your UX is stellar, but this is one thing I think you’ll have a challenge of. This task switcher icon to tap back to, for example - it comes right in the moment, which is good… As you’re sharing with me how to use this feature, I’ve enabled the feature to make it not float. So I’ve tested it out here in real time. And I can imagine you have your work cut out for you, for sure, on like how to continually expand Raycast to have sub-applications, or distinct feature sets, with distinct UI, with the distinct UX of that UI, within the global Raycast application. That’s such a challenge.
Yeah, that’s the fun part.
Is it the fun part? [laughs]
I don’t know, I kind of like it. It’s like, you start building it, you start using it, and then what we find [unintelligible 01:47:46.27] with design explorations. So we start with something – I’ll try to find an example. We start with something where we want to do a change, and then we dream up all these big things, and then we work on them design-wise a few days. And then we go in circles and like actually simplifying, like drastically, and coming up with like a much better experience. And at this moment, OS is this weird hate/love. It’s like “Ah, you’ve now finally found the simple solution, but you actually had to go all the big way to find it.” I like this feeling, because it feels very good that you’ve finally made it. But you need to go all the way through this extensive design period to figure that moment out… And you wouldn’t end up there when you haven’t explored all the other angles. And it oftentimes means that you throw away 90% of the stuff.
I often say the best things we build is actually the things we don’t build… Because you go through so many iterations that actually you sharpened what you actually want to do; with every iteration you know the problem better, you dig the solution out in more detail. And then oftentimes, you can then walk back and say “Actually, the simplest way is to do XYZ, and we don’t need to do all the other things.” But we explored it, and we kind of know we don’t need to do them.
Yeah, I kind of like the moment when you’re there… But the journey there is sometimes a bit painful, because you do this and “Ah, this doesn’t feel right. This doesn’t feel right.” And you have to do it like four or five times, and it’s like “Oh, now it kind of feels right, but it’s much simpler that we envisioned”, which is kind of fun.
It’s the same with code. Oftentimes you bang your head against the wall, you wanna solve this problem, and you write this crazy thing, and then you sleep over it, and the next day it’s like “Hey, actually, I can do this in three lines of code.” Problem done.
Yeah. There’s a simpler way, absolutely. Well, speaking of a potentially simpler way, did you explore the idea of AI chat, as you’ve called it a couple of times - did you explore it as a standalone application? Would it make sense to have a standalone application that is still part of the Raycast brand, same Raycast subscription, just a standalone, separate, maybe even a codebase? I don’t know, are there shared libraries [unintelligible 01:50:14.02] with? Did you explore that, and does it make sense?
[01:50:18.25] We didn’t really explore it, because it came out of the duration. The initial version was in the Raycast window; it literally had a chat in there. And then it turned out like “Yeah, this is not always great, because the window closes itself when you’re clicking outside. And then so okay, let’s move it to a separate window.” Again, a few iterations later it felt good.
There’s two things. One, we thought about “Oh, actually we could make this as a separate application and put it into Mac app store, and see if that yields some nice results, some exposure in the Mac App Store”, because Raycast itself isn’t in there, due to some limitations. And then the other idea there would be maybe you could have an AI chat also on the web. Just [unintelligible 01:51:02.05] for people to quickly check it out, and then if they like it, they could say “Hey, I want to have this all the time available on the desktop.” That could be an interesting angle to it as well.
I think the tricky bit is like if you make multiple applications, you start with a user base over and over again. Like, okay, everybody who had downloaded launcher, now you need to get them to download the chat. And then let’s say there’s a new application, you need to do the same… Where I think it’s much easier if you can integrate it. And then you can give it to users and it’s much more “Hey, you have the software already. Now you have extra functionality.” And I think you’ll see something quite often in let’s say the big, big apps, like social apps, like Instagram, or Facebook, they sometimes unbundle, and then it doesn’t really work, and then they’re bundling it in again, and they’re like “Oh yeah, now it works.” Because it’s a much easier switching cost for users.
So I suppose just hypothesizing a little bit on – this is kind of like marketing, but it’s also getting attention, gaining awareness, adoption obviously, is how well do you think you do to broadcast to the world that there’s an AI chat that is a single pane of glass, to the world that cares about a single pane of glass to all AIs? Or to, I guess, the “most popular today” artificial intelligences out there that can be used. Because I feel like the feature, this feature is locked behind Raycast the application… Which is, to some degree, arguably bigger than the Raycast brand, so to speak. And to say you have a single pane of glass artificial intelligence chat to me is like “Wow, that’s not so much the bigger thing, but it’s big enough to be standalone.”
Yeah. You’re touching down a good topic. Generally with Raycast, because it has so many features, we oftentimes find it very hard to describe it. So one of the things we did - like, we are currently working on a new website that comes out soon, where we basically work on exactly this topic of “What is Raycast? What are the main features? How should people think about it? What is the story we want to tell?” And so that’s one of the things which we can certainly do better, and I think we always can do better, especially as soon as you throw new things in the mix; it changes a bit. So let’s say a year ago it was not so AI-heavy. Now there’s more AI, with a separate chat that has access to all those glorified models… So I think this is something which we can do better.
[01:53:46.03] I think it’s generally a problem when you have such a broad feature set, or even like separate products - how do you group them together? What is the overarching theme you give somebody? Why should they get interested in this thing? How do you target them towards this or that? Which is something which we haven’t cracked, as I mentioned, and something which I think we can work on. But it’s also like a continuous work. You saw that we do a bunch of stuff on YouTube, which I think you can like weave in this message. Recently, when we revamped AI chat, it became more of a thing… So we’re kind of resurfacing this and bringing it in… But yeah, it’s something which is quite tricky to get under one umbrella with the launcher, the AI chat, that floating notes. Soon an iOS application. There was a lot there, right? It’s much more than just like a Spotlight replacement by now.
Yeah, I think that’s the – in your particular position, this is your struggle to concern with, right? Your team can probably have the concern, and have a concern for it, but it’s not necessarily their job to solve it. This is really you and Petr’s job to solve this brand. This is a brand problem. This is a – you’ve got a brand umbrella at this point. The brand is Raycast, and now you have a sub-brand called AI Chat. And I think - are you a fan of Silicon Valley the TV show by any chance?
Oh yeah, 100%.
Okay. So there was a particular – I’ll spoil this, so spoiler alert here… Richard Hendricks was trying to create this algorithm, he was really big on the platform… And at one point, I think it was season three, Hooli Chat was popular, and then you had PiperChat, which they almost - you know, Richard quit the company for a bit, and then they ran with that, and then Dinesh became CEO, and all the things happened there. So for a bit there, the whole entire show could have been derailed on pursuing this platform. And so in your case, Raycast is your platform. And then PiperChat comes out, and it’s arguably better than Hooli Chat ever was. An Hooli Chat was the behemoth in the grand scheme of things in that world, in that universe. And they pursued it a little bit, and they never did it. But it was a standalone application; it wasn’t part of the platform, it wasn’t part of the algorithm. It leveraged the algorithm to be amazing for compression, to compress all the video to make it super-fast, and all that good stuff… And I just wonder, if you zoom out a bit, is the idea of a single pane of glass, AI chat, bigger than Raycast?
Interesting, yeah. I mean, it’s hard to tell [unintelligible 01:56:26.25] I think the Silicon Valley analogy is quite interesting. There I feel like there is basically - you have a chat, which is an application with a great compression algorithm, right? And with ours I think it’s different, because I would see it more as multi-product, in a way. The closest that I could come up with is probably it’s a Microsoft. Microsoft has an Office suit, and then obviously if you have an application for email, you have an application for a calendar, and so on and so forth… So here, with Raycast, you could say you have the launcher, which solves a dedicated problem space, and you have the AI chat, which lets you chat to all the various AI models out there, and solves a dedicated problem space. So I think they can live nicely next to each other, but then the question is what’s the bigger on top, right? How do you bundle this together? At the moment, all of this is called Raycast. We’re not really in this separate product world just yet. It’s just called Raycast, and it happens to be a launcher, and there happens to be a chat and a notes bundled in there. Over time, as those pieces get more distinguished, especially for example the AI chat, which recently got a makeover, this becomes more of a thing - how you talk about it? Oh, there is now this chat, which is different to the launcher… And we probably need to find a way how to do that in a more cohesive way.
[01:57:55.24] Well, you’re pretty close to PiperChat… You know, it’s AI Chat. You’re calling it AI Chat. It’s PiperChat.
It’s PiperChat. We just need a better compression algorithm. [laughs]
That’s right. Well, the similarity to the Silicon Valley TV show was just to draw a comparison. I just wonder if eventually you’ll get to a point where AI chat not so much is bigger, but could be more focused as a product, and more focused as an onboarding, and more focused as a pricing perspective if it was a standalone application. Like you had said with Microsoft as the example, you don’t install Microsoft and get Word and Excel. You install probably something else that gives you all that stuff to get that.
Well, what’s next? Let’s talk about what’s over the horizon? I know you’ve got a single pane of glass now to a lot of the more popular LLMs out there, you’re refining it as we speak, we’ve deliberated over whether or not it should be a standalone thing, how that might actually work out… But what’s just over the horizon not many folks might know? What should people know about where you’re going?
Yeah, so let me start on the macro level, and then go into the micro level. So macro, short term, we released AI models. And the next thing, which might be out already when we publish this pod, is that we also want to make it easy to build your own presets for AI Chat. So you can define a model, give it like a few instructions, and then you can reuse it or share it with others… Which I think is quite cool, to bring in more personality in those chats, which lacks sometimes. That’s the first thing.
The next thing which we want to do, we chatted about it a bit - we have those extensions, and we want to integrate them together with AI, to really combine those two powers. Basically take the intelligence of the AI, take our unique interface and take the connections we have with all the extensions. So I think that’s like really exciting for all extension developers, and equally for all users of those extensions… Which I’m personally really excited about.
And then we have been speaking about this publicly already, it’s like iOS. That’s like an interesting take. We want to bring Raycast to iOS. It’s been one of our requests, especially with AI Chat, but also with other things, like snippets or quick links, to have them in your pocket, available when you’re on the go. So we’re working there on a mobile application, which comes out this summer, around this summer. We’ll probably start with a bit of a beta test, and then see how far we can get.
It’s not going to be, unfortunately, one to one Raycast. iOS is just too restrictive of an environment, so we kind of need to be a bit creative there. It’s probably going to be something around a companion, so you have two most important things always with you, and can reuse that. So that’s exciting.
The other big piece, which we haven’t talked publicly much about, is Windows. macOS, as much as I love it, is not the only operating system that is popular out there. [unintelligible 02:00:52.21] So for us, it’s also a question “How can we go to other operating systems, and bring the same experience to Windows, which is a magnitude bigger than Mac, or even also Linux later on?” So we’re thinking about “How can we do that?”
We always knew we want to do this, we just always also know it’s technically quite a hard task, because we talked about being a native application gives us all the advantages, being close to the operating system, giving us the performance, but also giving us the look and feel of a native application. So we’re kind of researching and finding ways how to do that actually on Windows as well, and make people happy over there… Because we’re getting that ask very often. It’s one of the feature requests that pops in every now and then, and we don’t have an answer other than “Yes, it would happen eventually.” So this year, we want to get to a stage where there is a much more concrete plan, hopefully with some early betas that people can explore it, and help us making it happen.
[02:02:00.22] Big, ambitious goals to be multi-platform, for sure, especially if you consider Linux down the road… And I suppose you probably have to hire, right? You probably couldn’t do a Windows application with the same team. You probably have to expand by at least one or two, maybe three. A small team, or people who specialize in Windows application development. And I’d imagine that the real challenge is probably not just that, but like keeping the user interface similar.
Yes.
If you’ve come to know Raycast for what it is, you know that it’s got a great, beautiful user interface, a really good UX in terms of like what you can do with a single, limited application like it is, in terms of like its UI footprint is not very big; it’s meant to be minimal. So you do a great job of maintaining that minimalism, but also allowing you to even expand the launch bar with a down arrow, for example, to see more applications, or to see the release notes, or whatever. I think those are all subtle ways you allow the application to remain minimal, but also expand when necessary. That’s going to be a challenge to do when you go to Windows or another platform, is like maintaining that stability from the UI.
Yeah, 100%. I think there’s a lot of challenges; there’s technical challenges, there are design challenges… It can be a nice opportunity to also rethink some of the UX and the design, to set ourselves up for the next five years… It also can help us rebuild some of our technical foundation, to like also sustain longer… Because we mentioned we have now not only a launcher, we have also a chat on the side, and other things… We have all of that. So I think that’s sort of also timely quite interesting. Recruit the team now, we want to grow it a bit further to expand to this… And then also making sure that we have - going back to like the momentum to ship on multiple platforms, which is also not the most easiest thing to do… So that’s all the things we’re basically figuring out as we speak, more or less. We have already a sort of a plan that we want to explore, and then hopefully we can share more about it very, very soon, when we gain sort of the confidence that that is the good way for us building all of this.
A good deal. I appreciate you digging deep into all the details, and even allow me to push back here and there on different parts… Definitely what you think about that separate application, AI Chat. Raycast AI Chat… I don’t know what to call it, but it seems like a big deal to me; maybe potentially a bigger deal, or – not a bigger deal necessarily, more like a separate deal. It’s less about like a bigger deal, but more like a separate –
A separate deal. I like that.
At some point the AI Chat is going to have enough of a feature set that it really is distinct and different than Raycast application proper.
Yeah.
And as a Raycast user, I see that already, you know, from my own perspective. It’s a tool, but I suppose if Raycast has given me access to productivity tools that give me productive natures, I suppose that can be argued that it is a subset… But I’ll leave it there. That’s enough for now.
Thomas, thank you so much for digging in. Thank you so much for sharing some of your journey product-wise and direction-wise here on the Changelog. I loved that, digging in with you… And I appreciate you coming on show. Thank you so much.
Yeah, thank you very much, Adam, for having me. [unintelligible 02:05:22.26] listener, and always happy to hop behind the mic and contribute to the Changelog as well.
There you go. Yeah, man. Well, thank you.
Our transcripts are open source on GitHub. Improvements are welcome. 💚