Inside DuckDuckGo

DuckDuckGo

Behind the scenes with the DuckDuckGo team — sharing insights on product, engineering, leadership, and AI. insideduckduckgo.substack.com

  1. Duck Tales: How we've made it easier to generate images privately in Duck.ai (Ep.33)

    4d ago

    Duck Tales: How we've made it easier to generate images privately in Duck.ai (Ep.33)

    In this episode, Beah (Chief Product Officer) and Matej (Engineering) discuss the evolution of image generation in Duck.ai, UX improvements, and the challenge of balancing output quality and speed. Disclaimers: (1) The audio, video (above), and transcript (below) are unedited and may contain minor inaccuracies or transcription errors. (2) This website is operated by Substack. This is their privacy policy. If you have feedback on Duck Tales, or episode ideas, email us at podcast@duckduckgo.com Beah: Hi, welcome to Duck Tales, where we go behind the scenes at DuckDuckGo and discuss the stories, technology, and people that help build privacy tools for everyone. In each episode, you’ll hear from employees about our vision, product updates, engineering, or approach to AI. Today I’m here with Matej, and we’re going to talk about image generation in Duck.ai. I will let Matej introduce himself, but quickly I’ll just say that if you haven’t met me yet, I’m Beah, I’m on the product team here at DuckDuckGo. And yeah, Matej, take it away. Tell us a little bit about yourself. Matej: All right, Matej. I’ve been at DuckDuckGo for a year and a half now, and I’m working on Duck.ai and I work primarily on image generation last year from September until Christmas. Beah: Awesome. Well, okay, so just to kind of get started, tell me a little bit about what that even means. What is image generation in Duck.ai? And if you’re able, I I think a demo would be great. Matej: Yep, definitely. Let me share my screen here. All right. So if you go to the Duck.ai, go to the Duck.ai and you will see basically this screen and you probably notice that there’s this option new image, which is when you click on it, then you type any prompt in here. Duck.ai will try to generate an image for you. So let’s show me an image of a cat on the windows. So hopefully at the end of this we’ll get an image. This is going to take a little while because image generation is quite a heavy process. Yeah, this is the simplest form of it. Beah: Okay. I see it. It’s coming together. Matej: We’re getting, yes, it’s coming together and here’s our little cat. can click on it, zoom on it, download the image and copy it if we need it. Or we can keep it writing on it and ask for adjustments in the image. Beah: That’s pretty good. Good. I mean it has like the right number of limbs. There’s nothing too crazy going on here. I’m pretty impressed. do you wanna demo like any adjustments or anything else you wanna point out while your screen’s being shared? Matej: Yes, that’s correct. Sure, we can try it. Add another cat to the image. Let’s see what it comes up with. Beah: Okay. another cat. yeah. Cool. And what what model is operating here? Matej: So, we’re currently using GPT Image 2 model. We’ve been through multiple iterations of this and it’s always been a trade-off between cost, the output quality and the performance, so how quick the model is. We went through GPT Image 1, 1.5, 1 Mini and 2. Currently the GPT Image 2 model is slower, however it... the output quality is much, much better than previously. You probably cannot see it in images like this. However, if you would prompt it to generate a text, then you would see a clear difference between different models, and GPT Image 2 follows instructions really well and generates the text really well. Beah: Hmm. Got it. So like a bad job if you say if you tell it to put some copy in an image is like it doesn’t get the letter. It like uses different copy, it like mangles the letters. Is that right? Yeah. I’ve definitely been there. But hey, look, this cat also has the right number of limbs. I don’t see anything problematic or fishy about this. I guess it’s kind of a s a softball query, because there’s plenty of cat images on Matej: Exactly, exactly. That’s the case. Yeah. Beah: In in Windows online, huh? Yeah. A demo query. Nice. Cool. okay, awesome. Well tell tell me a little bit, like stepping back again, tell me a little bit about why we even built image generation. Matej: That’s correct, yes. Yes. So I think from the outset, we knew that we will have to at some point. The reason for that is most of the competitors or similar products already provide this feature. We knew that we had the capability, but also we had some user feedback that this is like a highly requested feature. It doesn’t match. Like at this point in time, this is like a baseline feature that is expected by all the users for you to have in any sort of AI product, I would say. Beah: Yeah, yeah, got it. and all right, so what were like did you run into any challenges when you were building this this feature? Matej: So I think challenges were not technical. Surprisingly, most of the challenges would come out of, for example, content moderation. How do we prevent people from generating, for example, self-harm images? And then the second part that I’ve already mentioned is how do we balance the quality, performance, and cost at the same time? So those were the two challenges that I would say were that come to my mind as we’re building this. Beah: Yeah. Gotcha. And like what was the what was the runtime on this work? Like how how long have you been working on this? Matej: So I started working on initial prototype in September last year, and we shipped it to production just before Christmas. So that was it. Beah: Got it. And was it mostly you or was there a team of people working on it? Matej: In the beginning, was mostly me and then another engineer joined me for UI work. So I did mostly the back end and then a little bit of wiring on the front end. Specifically for like, you can also upload your own image and then ask the model to make adjustments to it. So this is the part that I was working on. Beah: Yeah, yeah. Nice. Have we gotten any interesting or surprising feedback since it’s been live? Matej: So I wouldn’t say any interesting, but what was surprising to me was that the reception was quite positive. And I was a bit worried when we built this feature because in general, image generation is perceived as a fairly harmful thing. depending on your intent, you can also do harmful things. However, I was surprised that most of the people were positive and they appreciated to have a privacy focused way of generating images. Beah: Yeah. Mm-hmm. Mm, sounds like the hard work that you put into, you know, putting the right content generation guardrails on it and so forth must have must have paid off. Matej: I hope so. Beah: Nice. So like going forward are there improvements that we’re that you guys are making on this feature? Matej: So we’ve already made a bunch of improvements. This current iteration that you saw in the demo is an evolution of original implementation. Previously, we had a separate mode just for image generation. It was not integrated into your normal conversations. And this is one feedback that we’ve received and we pivoted away from the separate mode into having it in line in your regular chats. Beah: Mm. Matej: Another piece of feedback we’ve heard, and I already mentioned this, we’ve gone through multiple models because people are asking for better output. Going forward, I don’t think we have anything in particular. if you have any feedback, I’m happy to read through it and put something on the roadmap. There are many ways we could take this. I can imagine we have like we had we can add a freeform canvas and you can ask a model to make your image pretty like you draw something with your free hand and you’ll get a nice image or advanced editing you mask out something and you ask a model to replace that bit of an image with something else. So there are many, many different ways we can take it. Beah: Yeah, yeah. Nice. Yeah. going back to a second for the whole the like to the inline versus a separate separate mode thing. So that’s like just just in case it’s not obvious that like it used to be that you had to start your chat in image mode. And if you started with any other model or you know, you were mid-chat, you couldn’t like jump into image generation, right? So now if I’m like mid-chat on something, can I just ask it to generate an image and Like it’s properly it can jump between those modalities. Matej: That’s correct, yes. Beah: Nice. And then how does it so since we’re using one model for image generation, if I start chatting again, how does the how does the does it just go back to the previous model that I was chatting with? Matej: Yes, that’s correct. So if you’re in a conversation, there’s in the background, there’s essentially two models. One is for your conversation, which will be GPT-5 mini or Opus. And then there’s another model that’s specifically for image generation that’s always being called whenever you ask for an image, which is GPT Image 2. Beah: Got it. And I can just jump back and forth willy-nilly, yeah, to edit my image or have a chat. Okay. Gotcha. and then how do we know whether like how does the model know? Not not how do we know, but how or how does Duck.ai know whether to be you know, interpreting my prompt as a an image generation command or continue discussion? Matej: Correct. Yes. That’s an excellent question. So we have image generation tool on our back end and basically it analyzes all the prompts that are coming in. And if any of those is categorized as one that is requesting an image, then it will trigger the tool and that tool will generate an image for you. So we have some. Beah: How good are we at that? Like is the just are we v are we perfect at classifying or do you think there are times right now when like somebody wants to be editing the image and they get a text response or vice versa? Matej: I don’t think we’re perfect, but I think we’re pretty good, I would say. I would say about 90%. We have a set of evaluations that we run on these tools and on various prompts, and we keep

    14 min
  2. Duck Tales: Dax (our mascot) is coming to the physical world, on shoes, shirts, and security keys (Ep.32).

    Jun 3

    Duck Tales: Dax (our mascot) is coming to the physical world, on shoes, shirts, and security keys (Ep.32).

    In this episode, Gabriel (Founder) and Dan (Brand Strategy) discuss our first set of branded collaborations, where the idea came from, and why people would rep Dax in public. Show notes: Shop the collaborations here Disclaimers: (1) The audio, video (above), and transcript (below) are unedited and may contain minor inaccuracies or transcription errors. (2) This website is operated by Substack. This is their privacy policy. If you have feedback on Duck Tales, or episode ideas, email us at podcast@duckduckgo.com Gabriel: Hello again. Welcome to Duck Tales, the show where we delve into all things DuckDuckGo. I’m Gabriel. I do a bunch of these, but not all. I’m the founder of DuckDuckGo. I’m here today with Dan. Dan, you want to introduce yourself? Dan: Yes, absolutely. Hey everybody, I’m Dan. I help lead the brand strategy team and I’m excited to be chatting with Gabriel today. Gabriel: Cool. So we’re gonna actually turn it around today and Dan’s going to interview me a bit about something special we’ve launched recently. That said, before we get started, we have a new email podcast at DuckDuckGo.com where we would love your feedback about Duck Tales. What episodes should we run more of? What do you like? What do you don’t like about the show? Should I get a real microphone? Blah blah blah. Please email us. We’ll we’ll read it and get back to you. But now we’re going to turn it around and Dan, take it away. Dan: Amazing. Before jumping into the questions, I’ll first just introduce this special topic we’re gonna dive into. Today we’re here to talk about the how the DuckDuckGo brand is doing collaborations. And we’re doing branded collaborations with Atoms Shoes, with Cotton Bureau Shirts, with Yubico Hardware Passkeys, and more collaborations to come in the near future. So before diving into the specifics about why we chose each of those collaboration partners, we want to take a step back and chat about why, in general, we’re doing collaborations. We want to chat about brand and the DuckDuckGo brand in the larger landscape that we live in, and just have an interesting conversation about this exciting new work stream we’re doing. So with that in mind, I can jump into the first question. The first question is why go physical now? And to add a little bit more meat onto the bones of that question, allow me just to explain in a little bit more depth. It’s really interesting to see how some brands are bringing gaining cultural influence in unexpected ways. For example, a brand like Teenage Engineering makes audio hardware, but has become a lifestyle statement. A brand like Starface makes acne patches, but it has become a signal a symbol of empowerment. And so that brings us to DuckDuckGo, which is an internet privacy company now releasing branded collaborations with fashion and technology hardware companies. So the first question is, why does it make sense for DuckDuckGo to go from a purely digital brand to one with a physical presence in people’s lives? Gabriel: Yeah, and and if everyone is aware, Dan is relatively new, so he doesn’t know all of DuckDuckGo history. And I this is not as thought out as you might imagine. But let me take you through some of that history. So when when we first started, it was just me and I we’ll get into this a little more deeper, but I really like offline stuff. I mean as most people do, but like particularly like good products and showcasing Dan: Yeah. Gabriel: stylish things and whatnot. So I very early on made stickers and t-shirts. And for several years I would send people stickers for free. You could there was a there was a like a place on the site you could put in your information. I’d only use it to study the sticker and delete it in a privacy respecting way. But I probably sent liter I probably mailed thousands of individual people stickers out. At some point and people love it. And then we also had you know I I almost exclusively wore t-shirts for a long time and I I really had a thought, we’ll get you into this a little bit as to like what makes a really good t shirt. So I had some really good t shirts made and some we had a little store going that was just a cost and we gave away a lot of free t-shirts too. But at some point the free community picked up on this kind of stuff, which is not DuckDuckGo users, just people who want free stuff, and they overwhelmed my inbox and our free program such that we had to like completely take it down. And then we ran the store for a while with just the t-shirts, but our vendors kind of changed, went out of business. Various things happened where the store went down, and then we were like it’s not we got other things to do, so we haven’t put it back up. And so that was probably six, seven years ago, maybe when it last existed. So we did have it for some period or some amount of things. They weren’t collaborations per se, but DuckDuckGo offline products. And then it went away. Since then people continually asked for it. Can I get some DuckDuckGo stickers or t-shirts? And we have them internally, obviously, for company swag, which you probably have gotten already. And so we do send them around occasionally, but they’re not publicly available. Then fast forward to this year, and I just was like, I found myself with some extra time just looking at lots of interesting products for my personal consumption. And I was like, I would love to have a DuckDuckGo collaboration on some of these. And so these are the first ones we did. And I just wanted to exist in the world. And so it was it wasn’t some grand strategy more than I would like it. And then given that I would like it, I thought maybe other people would like it. We did do a lot of data research around this. And so our goal was to put it out, and hopefully our DuckDuckGo fans are interested in it. But that’s that’s really the longest word of it. Not a big strategy, more just like I want it to exist, and I’m very glad that products do exist and we’ll talk about them, but that’s really what it is. If if people really do like it, we’ll do a lot more. But if they don’t, then we’ll probably won’t do a lot more. Dan: Well, I I think that makes total sense. And I also think that the timing for these products makes a lot of sense as privacy becomes goes from what is often considered more of a niche concern to what has really now become a really important mainstream concern for millions and millions of people. And so I’m curious when people wear the DuckDuckGo brand on a t-shirt or shoes or any other product, what does it stand for and why are you excited for people to rep the duck the DuckDuckGo brand? Gabriel: Yeah, so we have a we people don’t really know because we’re not the majority search engine or you know, obviously that’s Google, but like in the US we have about ten percent of people who identify as DuckDuckGo users in the surveys we do. So it’s it’s a really not insignificant amount of people. And you know, our search share is lower because they may not use us all the time or on all devices, but that’s about the percent of users we have in the US. Those people, you know, are are what we call or we call deeply care and act on privacy people. They not only care, a lot of people care and say they care, but they’re doing something to act on it. You know, usually to escape creepy ads or just to protect their personal information from getting out, not leaving as much of a digital footprint, not having as many, you know, recommendations and algorithms, all sorts of good reasons to choose privacy, but they’re making that choice explicitly. And that’s kind of a lifestyle choice. And I think that lends itself to expressing yourself that you know you’re in this choice, like you care about privacy and you want other people to know about it. That also helps DuckDuckGo for everyone listening because most of our growth, the biggest component of our growth has been word of mouth. And so if you are a DuckDuckGo user, you know, you’re already educated enough to like make that choice and know why. The majority of people aren’t. And so it really helps like individual people to go out and educate people why privacy and and security are important online. And having something like a t-shirt or a sticker is like the icebreaker in that conversation. People wear the shirt and there other people come up. We get this all the time. People come up to them and be Well, what DuckDuckGo? Or or because we have a lot of users now, I love DuckDuckGo. And then they can talk about it and just meet other people who are also users. But I think that’s really the core the core like reason. Dan: Absolutely. And I you’ve touched on this just in what you just said. But I know that wearing my company swag, whether I’m going to the gym or walking around the park, inevitably a few people come up to me and say, I love your shirt, man. Where can I get one? I love DuckDuckGo. What’s going on with DuckDuckGo today? And I explain, I actually work here, but soon enough we’re gonna have collaborations that everyone can wear and be a part of. It’s rare to see a brand where there’s so much true love for the brand and trust for the brand. And I’m curious, where do you think that brand love comes from? Gabriel: I don’t know exactly, but I think it comes from or starts from that we really do put users first. I mean, like that is the goal of the company. We’re obviously like protecting your privacy, but even like almost more fundamentally than that, like we’re and it got started as a you know user first brand. So like we don’t make as much money as we could. That’s unlike most any other company because we are explicitly choosing to put users first and their privacy first at the expense of profits. And we think users appreciate that. In addition, we just try to have fun. So like the goal with kind of some of these collabor

    24 min
  3. Duck Tales: The role of user research, A/B testing, and "dogfooding" at DuckDuckGo (Ep.31)

    May 20

    Duck Tales: The role of user research, A/B testing, and "dogfooding" at DuckDuckGo (Ep.31)

    In this episode, Beah (Chief Product Officer) and Zac (SVP, Insights) discuss our approach to user research, how we run robust research while respecting user privacy, and why moving quickly matters. Disclaimers: (1) The audio, video (above), and transcript (below) are unedited and may contain minor inaccuracies or transcription errors. (2) This website is operated by Substack. This is their privacy policy. Beah: Hello and welcome to Duck Tales, where we go behind the scenes at DuckDuckGo and discuss the stories, technology, and people that help build privacy tools for everyone. In each episode, you’ll hear from employees about our vision, product updates, engineering, or approach to AI. In today’s episode, we’re going to talk about user research. And so my guest here is Zac. Zac, do you want to introduce yourself? Zac: Yeah, hi, Zac Pappas. I am on the Insights team at DuckDuckGo. I’ve been here for coming up on 14 years and pretend to participate in a lot of market research, user research, and other conversations that we have where we try to infer what users want and whether or not we’re giving it to them. Beah: Sweet, thanks. And I’m Beah. If you haven’t met me, I’m on the product team at DuckDuckGo. All right, let’s launch into it. I have questions for you, Zac. Are you ready? Zac: Ready as you’ll ever be. Beah: All right, so let’s start. Why don’t you give me an example? Like when we’re talking about validating things with user research, just like let’s set up an example of what that means and what that would look like. Zac: I think so. Yeah. So I guess starting with what is user research and why do we do it? I think the obvious answer that people tend to think about are, you know, sitting in an interview or doing some sort of focus group and learning from people. But really, for us, user research is kind of all of that plus, you know, internal dialogue and real testing like A/B testing. So to put it, you know, simply, I guess, user research for us is just trying to be wrong very productively and being efficient at being wrong productively over time. So for us, everything really starts out as a guess or an assumption about users or their behavior about, you know, what is upcoming in the market and research checks that, you know, our assumptions are correct or at least as close to correct as possible. And we try to do that as cheaply as possible, meaning quickly without spending more time on it than what we’re gaining in terms of the product that we’re creating. So an example could be our homepage at DuckDuckGo.com because our homepage has been around for as long as I think DuckDuckGo has been around, but has gone through many, many, many forms. We’ve done tons of A/B testing on it, showing one version of it to some users and a different version to other users. We’ve done a lot of user testing on it, like sitting down with actual consumers of the homepage or users of the homepage. Everything from discussing with parents how they perceive the homepage. So a lot of subtlety that goes into what we think maybe appears as a pretty simple layout or design. Beah: I had a little connection issue there for a second, but I think it’s alright. Let’s forge ahead. Sorry, audience. So, the homepage, I think, as you pointed out, sort of like deceptively, seems deceptively simple, it’s not highly functional software, it’s a page, there’s a few boxes on it, a field, but like what makes it so tricky and worthy of user research. Zac: Yeah, good question. Because it is kind of subtle, or I guess it doesn’t seem very obvious. So if you think about it, the homepage is really where we have a big mix of different user types coming in. Making any assumption about a part of our product usually means that you have to infer who is using it, meaning are they younger or older? Do they have a lot of context about what they’re doing or very little? So our homepage is actually a mix of different user types. There’s a lot of returning users who are very familiar with DuckDuckGo, they’ve been coming to it for a very long time. And so when they come to the homepage, it’s a pretty like rote act for them. The other group that really comes to our homepage a lot are new users or new visitors to the brand and product space in general. So they have maybe very little context about what DuckDuckGo is or what products we have. And so you can imagine, you have these two very diametrically opposite groups that come in, people who have a kind of a strong habit formation and muscle memory on how to use the page and then others who don’t have anything and they kind of, you know, maybe say meander or explore more than they are, you know, directly going to the thing that they know that they want. So what we learned over years of A/B testing, user testing, and kind of regularly reviewing what the experience is like for real people, we found something kind of interesting, if I can just generalize it, which is new users — like kind of people first visiting DuckDuckGo for the first time — really look at the center of the page. And if you see DuckDuckGo.com today, it has these two prominent boxes in the middle. It depends on the browser that you’re in or the form factor that you’re on. But primarily what we know is new users will tend, their eyes kind of follow the middle of the page. And so when they land, we really want to show them an overview or a good sense of what DuckDuckGo can do for them. Whereas returning users, people who’ve been coming back for a long time, tend to want to find the search box. And so we can, or at least we have some confidence that we can move the search box around, you know, the top of the page where it’s at now, to the bottom, to the middle. And if you’re a returning user, because you kind of expect or know that it’s there, you will more easily be able to hunt and find it. So the configuration that you see today, and maybe changes as things develop, really does to us strike a very good balance between new and returning user needs, both something that a brand new user can figure out and use efficiently and kind of get a lay of the land of what DuckDuckGo is and what we do. And then returning users can quickly get to the search box or other more mechanical parts of the product without too much friction. Beah: So how did we actually learn that? Like what testing methodology did we use? Can you walk me through it? Zac: Yeah, a lot of, I’m sure, pretty standard things for people who are used to product development, but A/B testing primarily. A couple years ago we were running, I think, like at least one A/B test of the homepage, like one alternative version of our homepage every week for pretty much the entirety of 2024, 2025. That year we had a ton and tons of homepage tests. And then independent of the actual A/B experiments that we’re doing, we will regularly run diary studies. So recruiting 10 to 20 DuckDuckGo users or other different user types, even non-users, to give them some background on the product. And then really give them a chance to use it for multiples of weeks and have them do journal entries and take notes of the things that they’re running into that they’ve experienced that are emotionally supercharged or maybe had caused some great duress in how they tried to use the product. So anything that’s really notable to that user can come up in a diary study. What we’ve also done in the past is to try to create alternative versions of our homepage from designs or a design system that we can give to users to play around with in real time. So we can actually simulate what an alternative version of the homepage might look like and how it should act and give them a clickable prototype that they can use, get some feedback before we ever invest too heavily in the platform. So it’s been a mix of really just doing a lot of testing pretty much every week since the conception of the company on some run. The homepage was a big focus for us for the last few years to try to nail something that could eloquently show what all of our kind of product offering is between search and now the expansion into Duck AI and of course the apps and email and other things. Beah: Yeah, so like there’s like, sounds like we’ve been marrying, and I think we do this elsewhere in the company, a mix of like quantitative research where we get to hear how people think, you know, people who are opted into some kind of study with us, like we actually get to understand what they’re thinking, what they’re doing in some detail and then just like quantitatively looking at results in an A/B test. Zac: Yeah, absolutely. And probably the maybe thing I didn’t say was we were very active on our social media. We point most of our users, at least if you click around our website, a lot of things point to our subreddit, which is reddit.com slash r slash DuckDuckGo. If you have product feedback, if you run into a product issue. So we do try to, and we have lots of people here that every day are checking comments or posts to that subreddit just to see if we released something and it’s causing some undue user harm. Tons of feedback boxes around our SERP, like the search results page within the app. And so we’re constantly trying to encourage that if a user has a negative experience, they’re able to get it pretty frictionlessly by a message to us. So we’re looking at social media, we’re really running really structured user tests, like intentional user tests, A/B testing and just kind of a what they call dogfooding or like internally using the product a lot and trying to be very critical about our understanding of what users really need. Beah: Yeah, I’ve said it before and I’ll say it again. If you’re writing feedback to us, a human is probably not just reading it, but like taking it to heart and thinking about it. So, um, how about like, tell me what are the priva

    19 min
  4. Duck Tales: How DuckDuckGo provides useful “near me” search results, while keeping your location private.

    May 13

    Duck Tales: How DuckDuckGo provides useful “near me” search results, while keeping your location private.

    In this episode, Greg and John (Search) discuss local search results, and how we help you find local cafes, restaurants, and business, without knowing your precise location. Disclaimers: (1) The audio, video (above), and transcript (below) are unedited and may contain minor inaccuracies or transcription errors. (2) This website is operated by Substack. This is their privacy policy. Greg: Hello and welcome to DuckTales where we go behind the scenes at DuckDuckGo and discuss the stories, technology and people that help build privacy tools for everyone. In each episode, you’ll hear from employees about our vision, product updates, engineering or approach to AI. I’m Greg. I work on the search engine here at DuckDuckGo. With me today is John. John, would you like to introduce yourself? John: Hi, I’m John. also work here at DuckDuckGo on the search engine and I’ve been focused on working on local search for most of my time here. Greg: Awesome. Yeah, that’s kind of what we wanted to talk about today is local search. And so I’m looking forward to chatting with you a little bit about how local search works, how we do it at DuckDuckGo and get into some of the challenges that we have as a private search engine and how we solve those. Local search generally, it’s kind of maps related searches. whether you’re searching for places, businesses, restaurants, those kinds of search queries we kind of call local searches. We have a couple different versions of a map that shows up on the search results page. When you do one of those searches, either you’re searching for something kind of in a city and you put the name of that city in your search query, or if you search for something near you, have ways to provide those results. still in a privacy preserving way. So maybe as a starting point, I thought it would be good to just, if you could walk us through a little bit of the life of a local search query, how it goes from kind of something the user has submitted to us to what we decide to show on the page. John: Yeah. So we start with a, we get a user query. So somebody type something in and sends the query to us. And we try to figure out whether that would benefit from some sort of mapping information. So maybe the query contains a number and a few words and then drive or street or road. And you know, that looks like an address. So we’ll show a map of that address. Other common patterns are, you know, common. types of businesses like restaurants, hotels, cafes, and those sometimes come in with location indications. know, cafes in New York City or cafes in Paris. And sometimes they don’t, sometimes it’s just cafes or cafes near me. So we kind of have to handle both those types of situations. And the ones that are nearby are really kind of the more interesting ones. because we have to find a way to figure out where Nearby is for the user. And we have to do that in a very privacy-respecting way because that’s our whole thing. So the browser, the web browser that you’re using will send a location. But we don’t just straight up use that because we deal with lot of partnerships where we have to get some data from our partners at Apple and TripAdvisor. And we don’t want to just send them raw user locations because that is a privacy issue. So what we do is we’ll kind of add some noise to it. So if you say you’re at, you know, this exact location in a city, instead of sending that, we’ll move you a little bit. Depending how big the city is, we might move you just a few hundred meters. If you’re way out in the country though, where maybe you’re our only user for miles, you know, we might move you a few miles. And so that... can affect your results, makes them a little less accurate, but we think we do it with as little noise as possible to get you a lot of privacy benefit while still giving you results that are hopefully very accurate to the location you’re interested in. Greg: Yeah, so there are a couple of things in there that I think are interesting to talk a little bit more about. when you kind of described how we add noise to a user’s location, there’s a lot of documentation, by the way, about this, if you want to read more on our help pages. But I’m wondering how we think about the kind of trade-off between making sure that the results are still good and the way that we’re obfuscating someone’s location is sort of sufficient from a privacy standpoint. So maybe you can talk about the first part first. How do we think about the quality of the results and whether or not we’re showing the right local results for someone when they do one of those nearby queries? John: Right, yeah, we have a lot of criteria that we check against before we show results to users. We’ll get a whole bunch of options that might be relevant to the query. And if you’re searching for a cafe, maybe a restaurant is relevant, but probably a hotel is not so relevant. And so we may make sure we get the category right first. And then we also want to make sure the location is correct. And because we’re dealing with partners, they might give us some locations that aren’t as relevant just because we don’t give them as accurate of a location. And so we’ll kind of refine those on our side without sharing some of that information with a partner to say, you you gave us this location that’s 100 miles from the user and that’s maybe because we gave you the wrong location on purpose. And so we’re not going to show that to the user, but we will show these other locations that are actually nearby and relevant to the users. Greg: Got it. Yeah, and then, I mean, even, you know, sometimes when there is a location in the query, it could be one of those that is still ambiguous to us, right? I think a lot about the difference between Paris, Texas and Paris, France. Users don’t always clarify what they mean. So we have to try to figure that out based on context too, right? John: Exactly. even some locations that are very well defined. If somebody says New York City, that’s just one place that we’re going to look. But New York City is huge. just determining which part of New York City is maybe the most relevant to send to the user is another challenge that we have to figure out. Greg: Yeah, and I mean, just we’re sort of riffing on these now, but, you know, if you search someone searches for New York pizza, right, that could be they’re looking for a pizza restaurant in New York City, or they’re looking for a restaurant near them that serves a New York style pizza. So, yeah, all kinds of things that we have to sort of contend with and try to figure out to give those right results. I’m wondering if maybe we could talk a little bit more than about. the different types of ways we actually display the results once they appear on the page because we have a couple different versions of our local modules that we show depending on the type of result and the number of results we get back. So I’m wondering if you’d say a couple things about that. John: Yeah, we have many different ways to display based on what the user is searching for. As I mentioned earlier, we have a special address display if you’re just looking for a map given a location. That’s a pretty bare result. It’s mostly just a map and the location label. Some more popular landmarks, we have a special display for that where you’ll get the map and if it’s the Eiffel Tower or something like that. Then you’ll get a picture of the Eiffel Tower and a little description that we sourced from. Wikipedia and then there’s a business searches is the next big category and those are kind of divided into two as well if you’re searching for a very specific single business like, you know Joe’s cafe and Las Vegas I don’t think there is a Joe’s cafe in Las Vegas maybe there is Then then we’ll just show you that one Joe’s cafe ideally, you know, we don’t want to show you Bob’s cafe That’s also in Vegas or Joe’s cafe. That’s in Idaho or something Greg: There might be. John: And then there’s the sort of category or chain type businesses where if you search for Walmart or restaurants, we’ll show you a big listing of businesses and where they are distributed on the map to let you kind of click in and explore more if you want to do details about each one individually. Greg: Got it. And then that’s gonna vary too based on the category of the result, right? I think we have some kind of special display for hotels as well. John: Yeah, we’ve just kind of introduced this and I can share this real quickly because I think it’s a pretty cool feature. So just recently we’ve added some pricing indicators. So if you’re searching for a hotel, you probably want to go stay at one of these hotels. And one thing that is important about staying in a hotel is how much is it going to cost and is it available at the time I’m traveling. So we’ve got a new interface. We just released this last month where you can put in your check-in dates, check-out dates, how many people, and it’ll tell you a pricing estimate of how much it’s going to cost for those dates. And then once you click into it, you can get different offers from different providers. So you can get expedia and go through and actually have really easy access to booking one of those hotels that you’re interested in. Greg: Awesome, yeah, I think this is a really good example of something where it’s a new feature that we’ve added that captures a particular use case that we know users have. mean, that we ourselves as users of a search engine have when you’re booking a hotel, trying to make it easier for users to complete the task that they’re doing, not necessarily just kind of see the different results. I’m wondering, maybe you could talk a little bit more about some of the other challenges around those additional use cases or business data that’s important for

    14 min
  5. Duck Tales: How DuckDuckGo uses data science to measure marketing effectiveness, privately (Ep.29)

    May 6

    Duck Tales: How DuckDuckGo uses data science to measure marketing effectiveness, privately (Ep.29)

    In this episode, Cristina (CMO) and Baran (Data Science) discuss our privacy-first approach to marketing measurement, the role of incrementality, and how the team operates day to day. Disclaimers: (1) The audio, video (above), and transcript (below) are unedited and may contain minor inaccuracies or transcription errors. (2) This website is operated by Substack. This is their privacy policy. Cristina: Hi, and welcome to DuckTales, where we go behind the scenes at DuckDuckGo and discuss the stories, technology, and people that help build privacy tools for everyone. In each episode, you’ll hear from employees about our vision, product updates, engineering approach to AI, or how we operate as a company. I’m Cristina on the marketing team, and I’m here today with Baran on the data science. Would you like to say hi? Baran: Hi everyone. Cristina: So for our viewers, if you’ve already listened to episode 9 with me and Chuck, you know that, like our product philosophy, privacy is core to the ethos of our marketing. And most of the common marketing practices we just don’t do, identifying and targeting individual users, retargeting, using behavioral data, using third-party cookies and pixels, all that, all hard nos. We have very thoughtfully developed privacy-respecting measurement that is a bit unique, but includes techniques that I think and hope all marketers can adopt. Thankfully, we’ve come a long way from when I was doing the campaign analysis. And thanks to everyone’s data science background, we have much more sophisticated techniques and models. And I’d really like to dive in on a slice of that today. So first question, most companies measure their marketing through attribution, tracking who clicked on what and then installed. We sometimes do a version of when it’s possible to in aggregate and anonymously of course, but can you explain how does it work for us and is that even the right question to be asking? Baran: Yeah, thank you, Cristina. On one hand, we have a self-built, simple and privacy-respecting attribution. And on the other hand, we have a few channels who do their own attribution. But with both of them, we have three issues. One, only a small percentage of our total impact through the campaigns is captured by attribution. Let’s take the most obvious one, TV campaigns. There might be a QR code on the screen, but most people would just go to the app or Play Store to download the app instead of scanning the QR code. And then it doesn’t work on all channels. Many channels only support the industry standards, more privacy in ways of attribution methods, not necessarily what we built. And third and most importantly, which is also valid for all other companies, is attribution is not the same as incrementality. It measures who clicked, but not which channel actually caused, let’s say, a metric like an install. And the real question is actually incrementality. Cristina: Okay, so then if attribution doesn’t answer the real question, how do we introduce incrementality and how does that answer the question? Baran: So ideally it would be A-B testing for incrementality for a channel within a channel’s advertising platform. But there is no way to do this. Channels don’t provide this. It could also be because this would make it very easy for marketing teams to understand the incremental impact. The closest thing we can do is randomized GeoLift tests. Cristina: Okay, so incrementality is a concept I think a lot of marketers are likely familiar with, but to make sure everyone’s on the same page, can you walk us through what one of these tests actually looks like for us? Baran: Yeah, we can take all the geos in a country, for example, if it’s the US, we have the DMAs, they are like New York, Los Angeles, we would randomize them into two groups of test and control. While doing this randomization, we will optimize for comparability between the groups in terms of the metric that we’re interested in measuring, such as installs. And then once we have run the test, let’s say the test would be launching a campaign in the test geos, we would use the pre-period of the campaign to measure the relationship between these tests and control groups aggregated metric. And then for the campaign periods, we would use that relationship. And then based on the control geos actual metrics in the campaign periods, we would estimate what we call the counterfactual, what we expect the metric in the test group to look like in the absence of a campaign. And the difference between the actual test results minus this counterfactual would give us the causal impact. Cristina: Okay, I think that’s pretty clear. When the test is done though, what kind of answer do we get? Is it as simple as it worked or it didn’t? Baran: Yeah, so it’s not necessarily binary significant or not. In this case, unlike product tests, significant would mean the channel had a significant impact on installs. But maybe it did, but maybe it was too expensive. What matters is, for example, metrics like a cost per install and especially an uncertainty around this metric. If the uncertainty is narrow, we would have high confidence in the result. If it’s wide, we would have lower confidence and take decisions based on this uncertainty. And we do these by using Bayesian methods, which is helping with better decisions than a simple yes or no. Cristina: Got it. So if we think this is the gold standard, why isn’t everyone doing it? Baran: I think the main reason is the operational complexity. A clean test requires ideally a full turn on or off in the test or control geos, and there’s multiple parties involved in this. Let’s say you have companies with a paid search team and you’d like to do a test on the paid search channel. It would mean they would have to turn off their channel and maybe they have goals that they have to hit. Cristina: Yeah, this is an interesting peek into our culture. So can you help our viewers understand why we typically don’t have these problems? Baran: Yeah, we have a small and unified marketing team. No one person or team is controlling a single channel. There are no, let’s say, siloed budgets per channel or channel group. There are no consequences if a channel stops. Let’s say if we don’t run a certain channel anymore based on test results, the people running these channels would switch to another channel, which makes more sense. And also lacking more sophisticated attribution make it even more important to run these randomized GeoLift tests. So in this case the necessity actually becomes a strength from the marketing data science point of view. Cristina: I like the way you position that we turn a bug into a feature. We’ve had to get creative and develop marketing and data science methods that respect user privacy while still giving us the insights we need to make data driven decisions. I think it’s not just about what we do. It’s how we do it. That sets us apart. Our approach to marketing is as unique as our product philosophy. So what was it like the first time you ran one of these at DuckDuckGo? Baran: First time it was also a new experience for me, because I was also used to from previous work the operational complexity part. When we first discussed about turning off a channel, I was very amazed when the team said, okay, let’s just do it, let’s do it like this week, next week. There was no conflict, even though it was a high scale channel, nobody worried about their goals. In the end, the results were not favorable. So we ended up significantly cutting spend and optimizing the campaign from those results, and since then we repeated this approach many times. Cristina: I think that’s a great example. I like to think of us as a somewhat nimble team. And yeah, one of our core values is questioning assumptions. And this marketing experiment is a clear example of that. I really appreciate how we’re not territorial. We’re very much of all on the same team kind of mindset. So you get the results, then what happens? Baran: So if it’s a new channel, let’s say we ran it for the first time, either if the results are favorable, we might scale it up, start running it further at scale, we might keep testing if the results require some optimizations, or if the results really out of hope, we will just stop further testing. And if it was an existing channel, let’s say we turned it off in the test geos, then depending on the results, if the results were not favorable, we might adjust spend, change our, let’s say, target cost per 1000 impressions or another metric that the channel allows, we might further optimize or if the results are more favorable than we thought, we might increase scale. Cristina: Sounds like a lot of work. Do you have to keep running these tests every time? Baran: Yeah, that will be very difficult, but quick answer no. Let’s say a channel, a digital channel has a meaningful attribution rate. Let’s say if a channel claims y attribution, it has, let’s say 100 installs. Then we run this test, we see, actually we measured 50. Then we would call this 50% the channel’s attribution rate. And as I mentioned, we were using Bayesian methods. We will also measure an uncertainty around this. Let’s say 50% is the point estimate. Our full uncertainty is from 40 to 60%. We would apply this ratio to ongoing attribution data that we get from the channel anyway. And we would monitor without retesting it. But of course, this attribution rate could be subject to change. If there’s a material change, let’s say a major shift in the creatives, a structural change in the placements of the channels in the age groups and so on, then we would retest. Cristina: Interesting. So what about for bigger campaigns like TV, where it’s not possible or cost efficient to turn it on and off in specific regions? Baran: Yeah, very interesting. Like if you’re running, if you would like to

    12 min
  6. Duck Tales: The fire button, a delightful way to delete your browsing data (Ep.28)

    Apr 29

    Duck Tales: The fire button, a delightful way to delete your browsing data (Ep.28)

    In this episode, Beah (Chief Product Officer) and Sveta (Design) discuss the fire button, the recent redesign, and how it improves both user privacy and delight. Disclaimers: (1) The audio, video (above), and transcript (below) are unedited and may contain minor inaccuracies or transcription errors. (2) This website is operated by Substack. This is their privacy policy. Beah: Hello, welcome to Duck Tales, where we go behind the scenes at DuckDuckGo and discuss the stories, technology, the people that help build privacy tools for everyone. In each episode, you’ll hear from employees about our vision, product updates, engineering, or our approach to AI. In this episode, we’re going to talk about the fire button. And I will be your host today. My name is Bea and I’m on the product team. And we have as our guest Sveta. Sveta, do you want to just quickly introduce yourself? Sveta: Yeah, I’m Sveta. I work on mobile apps at DuckDuckGo for now five years. Beah: Sweet. Thanks. And you’ve been, you’re a designer by trade, right? Sveta: Yeah. I’m on the design team. Beah: And you’ve been doing a lot of work to improve the fire button on mobile. And so that’s what we’ll jump into today. Okay, so first of all, let’s start with the basics. Like, what is the fire button? What does it do? Sveta: Right, so the fire button is a button that’s located quite centrally in mobile UI and it looks like a fire. And when you press it, it removes, it deletes all of your tabs and all of the browsing data and all of the history. So pretty much removes everything, all of the browsing activity and you can start from clean slate. And it also shows a really cool fire animation when you do that. Beah: That seems like a good prompt to actually show it. So let me see if I can share my screen here. Can you see that, Sveta? Okay, then hopefully our audience members can as well. Alright, so this is the fire button here. I’m just on a website, on NASA’s website. I’m going to tap the fire button. And so I have, what are these two choices here? Sveta: So the first, the primary button will delete all of the tabs, all of this data for all sites. And the second button is a choice to delete activity for only this one tab. So it will close this tab and will delete all of the site data associated with the sites visited in this one tab. Beah: Alright, I’m going to choose that one here. Delete this tab. Awesome. All right. I just, I wanted to only delete the one because I also wanted to show like if you’re using, if you’re a Duck AI user, this is a new feature. But if you’re on a particular chat, for instance, a chat about what music your dog might enjoy, you can hit the fire button and now you have this opportunity or this option to just delete this chat. So remove it from your chat history. Sveta: Nice. Beah: Boom. All right. let me get it shared on. Okay, I don’t think we’re sharing anymore. Cool, so like what is the benefit of using the fire button? Sveta: Yes, the primary benefit is privacy reasons, because as you browse the internet and you visit sites, you accumulate different site data such as cookies or different user preferences that then tracking companies can, if you accumulate a lot of it, they can use it to identify you and connect your browsing activity to you. Sell that information to other companies to show you targeted ads. And our browsers, we actually block most of the trackers and most of the cookies, but there are still some cases when we can’t do it. And then that’s a good practice to delete all of this data every now and then. And then the second reason is just still schooled and it makes you, lets you start your next session from clean slate. Beah: Yeah, I like how those two, they’re like different reasons to use the fire button, but I kind of like how they converge too. Like part of what feels good about a clean slate and not having like stuff everywhere is, I think for me, like not having your data everywhere, you know? Like it’s just clean, it’s like a sense of control and I don’t know, care, I suppose, that you can apply more easily with fire button. Like you can tell me if this is how you would characterize it. Like you can delete data in most browsers, but it’s just a lot harder, right? Like you don’t have a button front and center with just the options that you need, like one or two taps away. Sveta: Exactly. It’s usually tucked like hidden somewhere in the settings. I think it’s actually pretty cool that we managed to turn this really mundane and boring technical thing in a really satisfying experience. Beah: Yeah, and one thing I didn’t show is that you can actually pick between, I think, three different animations. Like the fire is the default animation, but there’s like this kind of nice swirly animation and all like water animation. And then you can also just turn animations off if like what delights you is speed and efficiency and not an animation. That’s cool. Cool. Tell me a little bit about like how the fire button has changed over time. Sveta: Yeah, so what the confirmation that we’ve seen just now, that’s updated design that we’ve launched recently. But for years, I think since we first introduced the fire button in our mobile apps, we just had this system, little system confirmation to confirm, delete all of your tabs and data that was very small in the bottom of the screen and it was really easy to press. And it was of course good for users who were regular fire button users because it was quick. But then there was also a big risk that you could just accidentally press it and delete all of your tabs and data without intent. Beah: Yeah, so if your intent was to blow everything away all the time, fine, great, it works great for you. But if you wanted to be a little bit more surgical about it and keep some tabs around, then it neither worked for you. It didn’t really work for you, and if you accidentally used it, you might really regret it. Sveta: Yeah, we did get some that obviously there’s if you’ve accidentally deleted all of your tabs without wanting you would write us an angry feedback, which we sometimes received you open it and you see all caps that chances are from someone who just deleted their tabs. Beah: Yep. So take note, dear reader, if you are writing angry feedback, a kind human like Sveta is reading it and taking it to heart. And so in this case, what did we do about it? Sveta: So we’ve changed a lot how the confirmation dialogue looks like. It’s bigger, that you’ve seen it. It takes a lot of space on the screen, so it’s harder to miss. We’ve on purpose moved the buttons a little bit high up. So when you press the fire button and your thumb is right above the fire button, the confirmation buttons, they are not on the same spot. And there is an animation, pictogram that also attracts attention. it’s just everything is made for you to pause, read the label, and make an informed decision. And then another big change is that we’ve added a second option because before you could have only deleted everything, all of your tabs and all of your data. And now we have a second option that you can delete just one tab and the data for that tab. Beah: Yeah, yeah, I love, by the way, like, I’ve developed, you know, I’ve been using our mobile apps for a long time, but I’ve developed this kind of workflow recently now that we have the single tab, single chat burn, so handy, we have this kind of, we’re in the process of updating behavior when you open the app after an idle period, we take you to a new tab automatically, so you can just start typing your query or your chat or whatever. I like realize there are tabs that I want to keep around, the things I want to keep around, but there are a lot of things that I just want to do a quick search, a quick whatever, and it’s just, it’s throwaway. And like now I open the app, I’m in exactly where I need to be, I don’t have to think do I want a new tab or do I want to, you know, override this tab? And then like when I’m done, you know, five seconds later, just doop, tap, burn that tab, and it’s just, I don’t know, there’s, it’s a very satisfying and efficient workflow for me for the I don’t know, 70% of things I do that are just quick interactions with the app and don’t require any kind of historical retention. So I love it, Sveta. Thank you. Sveta: I think there’s something interesting about this approach to delete activity from one tab, because in other browsers, the way they solve this problem, the task of deleting some of the data, not all of the data, they use time. So you can delete an activity for, let’s say, last 20 minutes or last hour, but then it deletes it across other tabs, all tabs. While in our browser, like you said, you just did one thing in one tab, and then we delete that one tab without affecting any other tabs. Beah: Yeah, yeah. I think it’s a great shift. Do you want to talk at all about the design process that you used with the team to get to these improvements? Sveta: Yeah, so our first hypothesis or first direction that we explored for this new mobile confirmation was the same approach that we have on desktop browsers where we have a list of options for users. Every time you press the fire button, you can choose, do you want to delete tabs or keep tabs, delete the side data or keep it. And that is a good direction because it gives most flexibility, but it also, we realized that in mobile context, just looks, it looks heavy. It took over the whole screen, the confirmation just, we were asking users to make these choices every time. We, well, in our old design where you had to only press one button. There was something nice about that privacy package. We gave users the most private option with one button pressed. So we decided to instead just add another option so you could either delete everything. With one button press or

    20 min
  7. Duck Tales: How we privately sync bookmarks, passwords & AI chats across your devices, without you needing an account (Ep.27)

    Apr 22

    Duck Tales: How we privately sync bookmarks, passwords & AI chats across your devices, without you needing an account (Ep.27)

    In this episode, Beah (Chief Product Officer) and Emanuele (Engineering) discuss Sync — which lets you have consistent bookmarks, passwords, and AI chats across devices — how it’s unique from a privacy perspective, and what’s coming next. Disclaimers: (1) The audio, video (above), and transcript (below) are unedited and may contain minor inaccuracies or transcription errors. (2) This website is operated by Substack. This is their privacy policy. Beah: Hi, welcome to Duck Tales, where we go behind the scenes at DuckDuckGo and discuss the stories, technology and people that help build privacy tools for everyone. In each episode, you’ll hear from employees about our vision, product updates, engineering or approach to AI. In this episode, we’re going to talk about our Sync feature. So today, Emanuele has joined me. I’m Beah. You haven’t met me before. I’m on the product team here at DuckDuckGo and Emanuele is, well, I’ll let you introduce yourself. Emanuele: Yeah, thanks. Hi, Beah. Welcome everyone. I am Emanuele. I have been at DuckDuckGo for about six plus years and I’ve been involved in Autofill and Sync almost from the start. Yeah. Beah: Cool. All right, well let’s dig in. I have a few questions for you. So first of all, what are we even talking about? What is Sync? Emanuele: Sync is a feature that lets you synchronize your data from one device to another. For example, you may have a collection of bookmarks on your desktop and you want to see the same bookmarks on your mobile device. You set up Sync and all your data is showing across both devices seamlessly. Beah: It sounds very handy. So you can sync bookmarks. What else can you sync across devices? Emanuele: Yeah, you can sync also autofill data, credentials, and credit cards. You can also sync, well, we said bookmarks. Recently, we added Chat Sync, so you can sync your Duck AI chats across devices. This is currently only available for our own first-party applications, but we are expanding to other browsers as well. Beah: Nice. So like, just to kind of paint a picture here, I have a MacBook Pro, I have a Windows laptop, I have an iPhone, and have an Android phone as well. And I’m like, you know, trying to log in to Reddit in all these places. If I save my Reddit credentials, my login, my username and my password on any of those devices, then it can automatically sync to all of those. So then the next day when I’m like out and about on my phone, if I logged in on my laptop, like the password just autofills and I can log right in. Is that right? And then now with that... Emanuele: Exactly. Yeah. Beah: Duck AI chats, as you’ve mentioned as well, if I wanted to like, so what’s the yeah, tell me about chats. What’s the use case there? Why do I care that it’s across my devices? Emanuele: Well, the use case, I use it a lot personally when I chats on the desktop and then I want to continue in the evening on the couch, I can resume the same chat and continue the conversation with Duck AI from there. I also use it for looking at older chats and basically maybe I chatted with Duck AI for something a while ago, and all of a sudden I remember, oh, well, there was this information that I already discussed with Duck AI, and I can go when I’m on the go outside with a friend and show my finding even when I’m on the go. Well, with Duck AI specifically, the Sync feature also increases the limits of how many chats you can store in Duck AI. The limits used to be 30, we bumped it at 100, but with Sync you have a lot more storage, so you can store a lot more chats with Sync activated. Beah: Nice, so if I’m like chatting on my phone, chatting on my computer, I’m like, you kind of need it because you potentially are like doubling or whatever, multiplying the volume of chats that you’re having and you don’t want to be like penalized, like lose those because they’re synced across devices. You just want them available. Emanuele: Right. Yep. Beah: Yeah, that makes sense. Tell me, like, let’s talk about how we do Sync from a privacy perspective. Like, are there any considerations there? How do we do it in a way that is not identifying and protects all of our users’ privacy? Emanuele: Yeah. First of all, all of the data in Sync is encrypted end to end, which means nobody but you can access your data, not even us. We don’t have the decryption key, so the information stays encrypted on our servers and nobody can access them. We went a step further in that we don’t really ask you for emails to sign up on anything. We don’t ask you for your passwords or anything. We just set up an account in a way that’s secure with basically a random string that is used to encrypt, I’m kind of simplifying things, but like a random string that is used to encrypt your data and then the string stays locally on your device. This ensures that, you know, whatever happens in the server, the data cannot be decrypted by a malicious actor. And we, as a company, cannot know who you are. We don’t have any information on you and we don’t have any way to tie your data with a specific person. Beah: How does that compare, like, how unique is that? Like, is that what everybody does with sync and password management or is that pretty unique and how so? Emanuele: The end-to-end encryption is a pretty common pattern in password managers specifically. Not as much maybe in browsers, I don’t think. But the fact that the account is... that you don’t need an email to log into your account, that’s pretty unique. I don’t know that there are many other companies that do anything like this. Beah: Yeah, I can’t think of any mainstream, well-adopted examples anyway where you don’t need an account. Cool. How hard has that been in practice? What technical challenges did it create? Or was it just hunky dory? Emanuele: Yeah, no, it’s not easy, especially when you create an account that doesn’t have an email associated with it, it means that certain things that users are accustomed to, that they expect, they’re not there. So you have to kind of create user experiences that allow users to use their accounts seamlessly without thinking about an account, but with all the features that they expect. Specifically, the recovery part is the complex part because we don’t have data. We don’t have any way to retrieve your data. Therefore, you have to save a recovery code to decrypt the data on your side. The complexities that we face are both in terms of UX, as explained, but also there are complexities on the engineering side, as we need to ensure every time that all the flows are accounted for in this sort of accountless account. And yeah. Beah: Yeah. Emanuele: When we start to connect certain things together, like the chats and Sync and, you know, so we will look into subscriptions as well. We’re basically connecting different systems that all are sort of blind to the user concept, but they still have to sort of contain this data. So that’s a high level. Beah: Yeah, as you were talking, I was thinking, this is like a great example of one of those things that’s like deeply, deeply complex. And like for it to work, you just have to like, you have to boil down that complexity and like, shield the user from that complexity and present a very simple, it works, very little room for human error, no requirement of deep understanding of how it works. And I think that is a really interesting challenge. Emanuele: Yeah, I think our UX for setting up the account has this advantage that you don’t have to type anything and you just set it up and when you have to transfer it to another account, you just scan a QR code and the data is automatically transferred via that QR code scan. I think that’s kind of handy in the setup step. But again, it poses a few challenges then in the recovery phase. Beah: Yeah, like you don’t have to remember a password or remember what email you used. You just have a device, another device, and then let them talk to each other. But getting there was really hard. I mean, and maybe there’s still places that we want to improve the UX, but I just, I know we’ve been like finessing it for a long time. Now I’m somebody who like has to sync things all the time because I’m constantly like uninstalling and reinstalling and trying new devices as part of my job, like testing and you know, understanding our products and looking for gaps and like, so I go through the Sync setup, you know, way more often than any normal user should have to. And it has gotten a lot better. Like I, there are moments when I’m like, that was easy, which is what we’re going for. Emanuele: Magic. Beah: Yeah, magic. Magic. Emanuele: Yeah. We are actually working right now on an improvement to the Sync screens. We are going to launch an experiment on iOS first. And we hope that the Sync flow will be easier, even easier for users to understand specifically the very first step when you decide whether you want a new account or you want to connect to an existing device, that should be easier. But they’re just improvements around the existing flows rather than a new different flow. Beah: Yeah, I think one of the things you’ve done really well as a leader of this work, Emanuele, is continuing to watch the data and poke holes in the flow and basically make sure that we’re simultaneously building new features and optimizing what we have and just making it better and better and better as we learn more. I’m curious if there are any kind of in that vein or you can leave that direction if you want. You can say whatever you want. If there are things that have surprised you in the process of building Sync and getting feedback and watching the data points and so forth. Emanuele: Yeah, I think one sort of surprising thing was that the people were not really finding the feature organically. As soon as we started building entry points where they were useful to the user fl

    17 min
  8. Duck Tales: How we build, design, and trigger instant answers on DuckDuckGo search (Ep.26)

    Apr 8

    Duck Tales: How we build, design, and trigger instant answers on DuckDuckGo search (Ep.26)

    In this episode, Greg (Product) and Karl (Design Engineering) discuss how we build, design and decide when to show Instant Answers. Plus, how we’re balancing instant answers with optional AI generated answers. Disclaimers: (1) The audio, video (above), and transcript (below) are unedited and may contain minor inaccuracies or transcription errors. (2) This website is operated by Substack. This is their privacy policy. Greg: Hello and welcome to DuckTales where we go behind the scenes at DuckDuckGo and discuss the stories, technology and people that help build privacy tools for everyone. In each episode you hear about our vision, product updates, engineering, our approach to AI from employees at DuckDuckGo. I’m Greg, I work on the search engine here at DuckDuckGo and with me today is Karl. Karl, would you like to introduce yourself? Karl: Yeah, sure. Yeah, so I’m Karl. I’m a design engineer here at DuckDuckGo and I work across the search engine on instant answers and our Search Assist AI module. Greg: Awesome. And that’s actually what we want to talk about today. DuckDuckGo Instant Answers, how we show instant answers for different search queries. Obviously, in a search engine, we show links to websites. But there’s a lot of other content that we show on the page as well, which I think broadly we sort of refer to as instant answers. You know things like if you search for the weather, you know, we might show a weather module at the top of the page. I’ll just share a couple examples of these. You know, so you search for weather and we try to show, you know, relevant information about the weather at the top of the page in addition to then all of the, you know, the links to different websites. Karl: Nice. Greg: We have things like unit conversions. If you search for a temperature and you want to convert it from Celsius to Fahrenheit, different calculations, all of these things are kind of within the umbrella of instant answers. We have had instant answers for a long time. I think really early in the history of the company and the product, recognized that when you’re pulling information from a lot of different sources, you have the ability to present that information in different ways to help the user find what they’re looking for, whether that is looking for a website that they want to navigate to, looking for an answer to a question, or looking for something a little bit more complicated. So yeah, we have lots of different instant answers, and thought we’d talk a little bit more about that today. So I guess as a starting point, I’m curious to talk about, and you mentioned being a design engineer, what are some of the challenges involved in designing and building instant answers? Karl: So I think one of the things that I’ve always found working on these is it’s very easy to just basically take everything we get. So we will work with like a provider. Let’s say if we’re doing where to watch something, let me share my screen actually as well and we can have a look at this. We are working with a provider. So in this case, we’re working with JustWatch and using their API data. When you come to design something like this, it’s very easy to look at that and say like, okay, cool, let’s go to JustWatch’s website and have a look at what’s available. We can see their website, how they present the information they have and they give us. And you could kind of jump to say like, well, we’ll just take what they’ve done. They’ve got that data, we’re using the same data, let’s just copy the way that they’ve presented that information. That would be like the easy solution. But then you’ve got all of these sort of legacy things to deal with, like we talked about a bit earlier, we’ve had instant answers for a long time. We’ve got ways that we present our information on the search engine and we need these modules, whether they’re pre-existing or they’re new, like we need them to all feel like they belong together in some way. So it needs to sit in the search engine nicely, you know, and feel kind of like it belongs. So we can’t just do like a one-to-one copy, which, you know, as designers anyway, we don’t want to just copy what someone else has done. But when the data is so vast and so complex, it can be kind of hard if you’re not familiar with the domain so much as an individual to just figure out like, what do I even care about here? So like, here’s an example with a movie, we were trying to figure out where you can watch this, but like, where are you in the world? You know, because that’s like the first thing that’s probably one of the biggest challenges is we can’t show you the same thing if you’re in the US or the UK or Australia. You’re going to see something different. Greg: I think you touched on a lot of important pieces to this that make this challenging. One is just understanding the user’s context. Obviously, we have limited information about our users based on our privacy policy and our privacy standards. We can approximate things like location accurately enough to be able to do things like the weather one that I showed, or this where to watch example. But that does limit us in what we are trying to do where we’re not trying to overly personalize the things that we’re showing down to a very specific user profile. And so, we have to kind of generalize and try to figure out just from the search query and that limited bit of information, what is it that we’re going to show to try to answer the user’s query. The other thing you touched on that I think is important to highlight is just the fact that this search query here is very specific and I think has a pretty clear intent where to watch a specific movie. Sometimes the intent is a little bit harder to unpack. And so you might have more different things that you could show. If you just searched for the movie title, for example, maybe someone’s trying to figure out where to watch it. Maybe they’re interested in the release date or different news about it. If it’s an upcoming movie, maybe they want to know what the cast is like. So trying to figure that out and then present the information in a way that gives users the ability to see what they’re looking for and also then refine their search down to the more specific thing. I think that adds some challenge as well. Karl: No, I agree. I think probably one of the biggest things that I found difficult around this is exactly that is the like figuring out the query, figuring out the query space, and then defining the data set, the golden data set, as we call it, that helps us to understand when do we trigger? How do we decide what we trigger? And entertainment is especially challenging because we have three different modules that are part of the class of entertainment. We have the titles module, which is the overarching piece that tells you, you know, this movie is from this date. This is a brief synopsis and you can get to the two other modules. So this where to watch module. And then also you can get to the cast module from that parent module. But like you say, you have to trigger these differently and figure it out. And so we can do these really clear ones where someone puts the keyword in that we’re looking for, but sometimes we’ve got to try and use all these other signals from what we get from the organics or like other pieces of information that we’re retrieving to say like, actually we think this is best and you will know better than I, but like it’s incredibly hard and sometimes, you know, it doesn’t matter how hard you try, the intent might feel really obvious to the person typing it, but as far as we can derive from that information, we can’t always figure out the right thing to show you. And so we do our best, but you know, there’ll be misses sometimes. Greg: Yeah, I want to ask you about something that’s on your screen right now because you can see, you searched the query Project Hail Mary cast and we’ve got the cast module at the top left there. We also have that Search Assist box to the right side that attempts to kind of answer the question. I guess, we’ve talked a little bit on previous episodes about Search Assist and what it’s doing. You know, how would you describe how we think about showing those two things next to each other, the different kind of roles they play, and maybe how that’s evolving over time? Karl: I think, yeah, that’s been a big challenge for us because AI summarization is a really useful tool for some people. It’s not for everybody. And obviously, we’re super careful about giving people optionality and letting you say, I don’t want to see this. But for people who want it, people who are interested in seeing that, we don’t want to just always put that front and center as the key answer to every query. Because in a case like this, for example, Search Assist is giving you the same information, but it’s giving you it as text. And maybe we’re giving you a little bit extra too. But if I’m specifically trying to ask about the cast, there is a high chance it’s because I’m thinking of an individual who I’ve seen in the film, or I’ve heard is gonna be in the film, or what have you. And so I’m trying to see their face to be like, yes, okay, so it is Ryan Gosling who’s in Project Hail Mary. Okay, cool. And so in this case, like that is probably what we feel the most critical piece of information. So we want to give you that module upfront. But at the same time, if you’re someone who’s interested in getting a kind of AI summary as part of your query, we don’t want to then say, just, we won’t show you that tool then. And so we have this like convenient little right rail slot where we can say, actually, we’ll just move this over here. So you get kind of the what we think is the best of both worlds where we can deprioritize Search Assist in this case w

    19 min

Ratings & Reviews

5
out of 5
12 Ratings

About

Behind the scenes with the DuckDuckGo team — sharing insights on product, engineering, leadership, and AI. insideduckduckgo.substack.com

You Might Also Like