Startup to Something

Marc has been shipping a new performance update for PowerImporter as well as hacking on a chrome extension for fighting the Twitter algorithm. Matt is running is first test: a fixer for google drive favourites in finder. The guys discuss Matt's experiment, what's come of it and what the next steps are.

Show Notes

Marc has been shipping a new performance update for PowerImporter as well as hacking on a chrome extension for fighting the Twitter algorithm. Matt is running is first test: a fixer for google drive favourites in finder. The guys discuss Matt's experiment, what's come of it and what the next steps are.

Get in touch!

Creators & Guests

Marc LG
Founder of PowerImporter
Matt Gale

What is Startup to Something?

A weekly podcast by two indie hackers, Marc and Matt. They share their ups and downs of building their bootstrapped online businesses. They prefer to show instead of teach, so you get to see the real story about what it's like to “startup to something” - raw and unpolished.

The champ is here. Hey, how's it going? Good. How you doing? Good tired tired tired and sore tired after winning It's exhausting, you know, yeah. Yeah, no, that's it. I've been I've been really training hard for this pump this judo competition Yeah, cuz I haven't competed in four years because of course the pandemic there was no competing back then really? yeah, yeah and And a year before the pandemic, I was practicing for my black belt exam. So I was not competing because I didn't want to get injured and not be able to do the exam. Because yeah, the black belt exam is insane. It's like I easily practiced for six months, like special classes to like to learn all the throws and you have to do a kata. So it's like it's such an ordeal. really have to just do that. So yes, I didn't compete that one year before the pandemic. So this was four years. So I had to get back into shape and yeah, it went well. Yeah, better performance than last time. Great. So I finished with silver. I lost to the same guy that I lost to four years ago. Son of a bitch. I know. But now I know his tricks. I'm ready for the provincials. Cool. But yeah, it's great. I love competing. It's, it's so great. Um, and, and judo is like, is a combat sport that has so much respect. Like, I love that. Like I've seen like some BJJ, like they actually like trash talk themselves, right? Like a bit like the UFC, like it's like, I don't know, like judo is so much more respectful, like everyone's, I mean, is there to test their skills and you need a partner to do it, right? So it's like, it's, it's a symbiotic relationship. It's like, I need you to be here so that I can practice my sport. And I'm glad that you showed up because otherwise I would have no one to fight. Yeah, I totally agree. I, I think that's one of the things that draws me to ultimate frisbee. Like it's really, it's, it's about getting together and having fun and yeah, it's, it's competitive, but yeah, just like you say, like you can't play with yourself. You need other, you need another team to compete against. And I really, I really like that a lot. Yeah, exactly. No, I mean, I love the, yeah, I love the attitude and the competitions are really well run. This one takes place at the Olympic park. So cool. Right. You come out of the Metro and you see the Olympic stadium and you like can almost sense the ghosts of the 76 games. That's pretty epic. Yeah, exactly. I agree. And I don't know what they used to have in the building where the actual competition takes place. I mean, it's a gymnasium. So like there were four fighting services and the great stadium. So lots of people sitting in the audience. That was great. Lots of fun. That's awesome. Did it take place just over one day? Yeah. I mean, yeah, my fight, it takes place over two days, but all my fights were on the same day. Okay. have to go there the day before for the weigh-in. So that's kind of annoying. You know, doing that whole trek just, you know, for like a five minute weigh-in, it's like, oh, come on, can't we just do it the day of? Anyways. Did you do a cut or anything like that? Did you need to cut weight? Very, very little. Like I just didn't eat that day and yeah, that's all I had to do to lose one kilo. Okay, sweet. Yeah. Well, congrats. I always knew you had it in you. I was betting on you from the beginning. Thanks. So provincials are next. When does that happen? End of March. End of March. Okay. Yeah. That's some time. So yeah, got plenty of time, but now I booked a vacation in the sun for February since there's no competitions. So I can take a break. Nice. Just the wife and I, no kids. It's going to be, it's going to be nice. It's been, I mean, for our 20th anniversary, we did like a little weekend getaway, but sure. This is the first time that really we're gone for 10 days, just the two of us. It's going to be great. That's cool. Yeah. I'm also hoping to go south, but we're coordinating with our friends, so we'll see. Okay. Yeah, I know. That's cool. Going with friends. Yeah. It's, they're great travelers. Like they, they really match our energy level, energy level well. So we maybe will do one big excursion, but other than that, it's, you know, they like to eat when we eat, they like to drink when we drink and they like to hear the beach. So it's perfect. That's it. So how's power importer? It's yeah, it's going well. I was before, before the holidays, I was working on this new performance tweak. Okay. But you know, like I didn't want to deploy it before, like before leaving for the holidays. So I had to get back into it after the holidays and it's a pretty big change to how the syncing is done. So I was a little scared that there might be some bugs in it. It was well tested but I don't know about you but when I take a break, it takes me forever to get back into the code and to understand how it works. So it took forever to get back into it and then finish the code, finish the testing. And then I still wasn't a hundred percent sure if it would work. So I put a feature flag on it so that I could upgrade people individually. So I started deploying it a bit before the competition, but I didn't want to do too much because I didn't want to have a fire to extinguish. But yeah, so far it's been going great. I've switched over to it. The syncs are super fast, they're taking a fraction of the time they used to. My server is very happy. Nice. Yeah, it's definitely working. So my goal is to deploy to everyone this week. Okay. Yeah. So yeah, so that was like, that was a big win. So I decided to reward myself. All right, you can hack on anything you want, right? Just take a little vacation from it. Just hack on anything. So I had this idea for a Chrome extension for Twitter. Okay. So I was like, okay, like I use TweetDeck on my computer to surf Twitter. Okay. So I really like TweetDeck. It's free. It's part of Twitter. Oh, it's hard. You can have these columns. Yeah, yeah, they bought the app years ago. Okay. So it's just part of Twitter now. And so you can have these columns that you customize and it's great. But unfortunately there's nothing for the phone. So on the phone I'm still using the native app and now with all the shit that they're stirred, it seems like that's the only solution now is the native app. They shut down all the other third party apps. Yeah, oh yeah, Jesus. Yeah, that's why I was curious about TweetDeck because I was like, oh, did that not get shut down too? But yeah, they bought it, so that makes sense. Yeah, and I don't think it ever was a native app. I think it was always just a web app. So yeah, so my idea was I want to have this dynamic list of people who interact with my tweets. Because the reason I'm on Twitter is really, it's not to build an audience, it's not to sell anything, it's really to make friends. I treat it like my water cooler. I just want to go there. And so I figured, well, the people who are actually interacting with my tweets, like, I'm not sure if I'm seeing their tweets because of the algorithm, right? Yeah, totally. So I was like, if I had a browser extension that could just, whenever I go look at the notifications, it just scrapes it all and creates a list with anyone who's interacted with me in the past 30 days. And then on the native app on the phone, you can pin those lists, right? So then I could easily just go on that pinned list and just, you know, see my friends basically. Yeah, totally. Yeah, makes perfect sense. And I thought it'd be cool that it's dynamic. So yeah, if then, you know, someone interacts with me, they appear on my feed. So then, but then if what they post doesn't interest me, and we'd never interact again, well, three days later, they just get pruned off the list. And yeah, so I thought it was a great idea. But of course, this was just, just a hack. I don't even know how to monetize this. It was really just, I've done a Chrome extension years ago, so it was an idea of, let's just jump back into it and play around with the Twitter API also. So the Chrome extension went great. Like that, I don't know if you know about Chrome, they have this standard, it was called like manifest three, manifest two, right? Now they're forcing everyone to move over to manifest three. Which has a lot less permissions. Less permissions in that there's less to request or just less granular? Yeah, well some things that ad blockers use you can't really use anymore. I think intercepting requests and just blocking them. anyways. I'm not sure exactly, but you're quite limited with what you can do now and I first I tried to scrape the notifications page but it's just such a mess because all the classes are dynamic and so instead what I was doing is I was looking at the network panel and I was looking at what are the requests that are passing by and I thought I could then call them myself but it's way way too complicated. The requests have all these variables that are being passed and I don't know where they're getting these variables. So my idea was, well, I'm just going to intercept the Ajax calls and just scrape that data. Whenever they call the API, I'll just... So there's no way you can do that with the Chrome extension APIs. But what I did is I I did a content script that overrides the XML request. Basically the request object that Twitter uses to call their API. Right. They don't use fetch, they use the original, I'm just blanking on the name now, XML HTTP request. Okay, yeah, I don't know. Like the original way of doing Ajax calls. So I just override the object with my own object that logs it and then passes on the real request to the real object. Oh, I see. Yeah, because they're invoking a function, but you've monkey patched that function or something and now you've… Yeah, exactly. Nice. Like, yeah, so there's this object on the window object, which is XML HTTP request. That's what they use to do their Ajax calls. So you can define a content script that gets included in the DOM and I do it before the DOM is ready. So then my content script basically renames the XML HTTP request to old and puts mine that logs, intercepts the request but then calls the old one too. So that actually goes through. And then you just log the response and then pass it back. Yeah, I mean that's where I do a callback to my Chrome extension and then that's where the code is that will actually build the list and detect who's new, who should be removed. Got it. How do you load the content script? Can you do that via the Chrome extension or is that? Yeah. Oh my man. That's all part of the Chrome extension APIs. Hell yeah. a background script and you have a content script that gets injected in the page. Got it. That works well, that stuff. So yeah, but the monkey patching was fun. When I got it to work, I was like, oh yeah, this is cool. So I can intercept all the requests. Nice. So that was working, but then, so then I intercepted all and I tried to get a Twitter, like a JavaScript Twitter API client inside the Chrome extension. But then that was a mess. Then you got to use something like Webpack to pack it up. And none of the clients I found were working. It was just a mess. In the end, I decided, all right, I'm going to need to have a serverless function somewhere and I'm just going to pass on that job to the serverless dysfunction. And that I wrote in Ruby because that's what I'm the most comfortable with. But that's when the shit hit the fan. Their API is just crap. The documentation says, yeah, you can create lists and add members to it and remove members. And when you look at the rate limit, they don't tell you what the rate limit is for the posting to those endpoints. But the get endpoint was fine. It was more than I needed. I mean I don't need to do that many requests to update the list. It doesn't have to be real time, right? I can update it once a day and that's fine. Yeah, that's true. But no, even that wasn't working. After testing the script three times, four times, my account was blocked. What the hell? Yeah, like those endpoints were no longer working and they were like silently because of the client I was using, they were silently failing. So then I had to do the calls myself to see what the response was and it's some cryptic message that's undocumented and it's not like a rate limit error, it's some non-documented error and looking in forums and people are saying, oh yeah, yeah, every single account has its own restrictions of how many list manipulations it can do and it's not documented and the only way to discover it is when it fails. Then you know that and even when I was looking at TweetDeck, like I'd open up the developer tool and I could see the requests, even those requests were failing if I was trying to manipulate lists in TweetDeck. Oh wow. So it's like it was just my account was blocked from manipulating lists. It's like, come on, I'm not trying to hack Twitter here, I'm just trying to create a list. And this is not like, I'm not like spamming people. This is a private list, they're not even going to be notified they were added to a list. This is just for my personal consumption of Twitter. I just want to improve the user experience for myself. Goddamn, weird. But yeah, so talk about platform risk. That's, I do not want to play with the Twitter API. And seeing what they've been doing recently, like shutting down all the third party clients. Yeah, I would not want to be running a business on Twitter right now. Yeah, same. Yeah, when I saw all of the shutdowns, all the third party client shutdowns, I was thinking, you know, I feel like in the last two years especially, I've been hearing about so many businesses on Twitter, like Blackmagic and other things. I just think like how long until they come, until Twitter comes for them too. They gotta be shaking in their boots. I would be. Yeah, I mean I remember in the early 2010s, they had done a big crackdown on developer tools and yeah, there's quite a few people that had built businesses on top of Twitter that had to shut down their product or like pivot to another social network instead. Yeah. Yeah, I remember in the beginning, Twitter was like, everybody build clients, then everybody built clients. And then Twitter said, everybody stop building clients. Yeah. Yeah. So yeah, so I mean, in comparison, right? Like when I built Power Importer, like it was so easy. Like the documentation is not perfect, but it was like 95% accurate and it worked. And I didn't have to ask anyone permission. I didn't have to get a developer token or anything like that. It was just the customer can generate an API token, just give it to me, and then I can use it to manage their site for them. It was like, that's how it should be done. If you want a healthy ecosystem around your platform, make the API super easy to use. Yeah, especially if, yeah. Because I understand, I've done enough of these OAuth flows to understand permissions and grant types and stuff like that. And it's like, okay, fine. Oh, I'm willing to give you that. It does complexify the flow. Uh, definitely. But I agree with you. I mean, the simpler, the better, the simpler. It's like a statement to your, the simpler it is, the more open you are for partners. Like I'm willing to have, I'm willing to act more like a platform. I'm willing to take on more partners. The more weird stuff like this is like, do you really want partners? I'm not a hundred percent sure you do. I mean, if I had to ask Webflow for permission to use the API at the very beginning, I don't even know if I would have gone on to build Power Importer, right? Because at first I was just prototyping something, can this be done? And having to ask permission and you can ask, what are you going to use it for? It's like, I don't know yet. I don't know what I can do, right? Like I need to build my proof of concept to see if I'm able to do this. Is it? Yeah, totally. been thinking about lately about, you know, I feel like, you know, Webflow for example, was doing some crackdowns. We were talking about a few months ago and the idea of, you know, as a developer looking for opportunities, if I come across a company and I want to use the product in a certain way or the API in a certain way, like there's a good partnership where you both win. And then there were partnerships where you're clearly abusing something that the platform doesn't want you to use and it's like that's not a great partnership. I mean, it might be, maybe, maybe the platform is just very early, but in most cases, it's probably not the case. APIs are not that hard to build really. Uh, so unless they've given you an API, you know, careful. Right. Yeah. And I'm seeing some changes, right? Like now with, uh, air table, like you used to have just API keys that you could just use and now they're, they've deprecated them and now they want people to go through the OAuth process in order to get a bearer token, which also means you have to sign up as a developer. So yeah, I don't know where that's heading, but I'm not that worried about platform risk for Power Importer. I mean, I think our incentives are aligned. Yeah, I would say so. Yeah, if anything, from Airtable side, I could see them saying, okay, we want to get more granular about the types of permissions that we offer. So we want our, we want the bearer token to represent your, your permission grants. Yeah. And, and yeah, that makes sense. Like, yeah. Cause, cause right now it's, yeah, it's just, it's like an account API token. Like, so they'll, they just want to integrate one base to power importer, but right now the API token gives me access to all their bases. Yeah. Maybe that's not the best. I don't know. It might depend. It might depend. It might make it more secure, but you'll lose flexibility as well. So I'm not sure. Cool. So yeah, that's all I've been working on. So now no more Chrome extension. I've given up on that. It was fun. And even the Chrome extension, right? I don't even know if Google would allow me to publish this, right? The fact that I basically built a man in the middle on Ajax calls, I don't know if that would fly. It is very interesting, because like, I mean, it'd be interesting to read their terms of service, because like, that's again, speaking about partnerships, that's not exactly a good partnership. Like, I'm just gonna use this thing, but it would be very funny to have a toolkit. Like, that could be a product, honestly, for people who are building Chrome extensions, and it's like, so the Chrome extension no longer, or Chrome extensions no longer allow you to sniff the network. Cool. Here's a thing that monkey badges all of the request libraries and allows you to hook into it. Yeah, like you can just include this as a content script and you'll get access to all the HTB calls. I don't think Google would be very happy about that, but it could be pretty valuable. Yeah, I don't think they would allow me to publish it. So I would have to like publish it as an, I packed plugin that you load, like sideload. At least you can still sideload plugins right now. Totally. Yeah. But like I said, I wasn't even thinking of monetizing this. Yeah, yeah, just for fun. This was just for me, just to hack and to scratch my own itch. But no, now I got that itch done. So now I'm gonna be working on the WordPress plugin that I've been working on. Great. almost ready. Again, it was the same problem. Like I need to get back in the code to like read, re-understand how it works and retest it. But last time I left it, it was pretty much done. Okay. So yeah, so again, same thing. I'm going to work on that, release it as a private beta and then I give myself permission to hack on something else. Any idea how much is remaining on it or do you have a goal for when you want to ship it into beta? Yeah, I was hoping that this week this could be done. Wow, fantastic. Yeah, so how about you? What have you been working on? Oh, I've got lots to share. So, okay. So first of all, again, keeping with intentions and goals that's been going great. Every Sunday, I'm sitting down, I'm looking at all the goals I have set for the year, and I'm breaking up my week according to those goals and things that I want to do. Turns out working backwards is very effective, highly recommend. And I'm going to continue to do that. So that's working great. Okay, so the first experiment that I set out to run was for this thing I've talked about before. So basically I've talked about on the podcast before, but very quickly, when you're using a Mac and you're using Finder and you're using Google Drive, you can mount Google Drive and you can scroll through, you can navigate Google Drive through Finder. And because you can do that, you can also put things into your favorites bar. I like this folder, I wanna save it. So my wife has done this for a long time. So a couple of versions ago of Google Drive or maybe a couple of versions ago of OS X, occasionally Google Drive will unmount and it will remove all of your favorites from Finder. And it happens, like I don't know what triggers the unmount but it'll unmount and remount right very quickly and finder will say, oh, those directories are gone and we'll delete them. So I wrote a script for her a while ago to that repairs this basically like I just have a text file. You drop in some paths in that text file. So whenever your favorites disappear, you run the script and it reloads all of the things back, all of the directories back into your finder. So she had told me a while ago, like, oh, you should maybe you should try to sell this, like package it up and sell it. So my first experiment is what I call G drive fixer. I bought a real simple domain G drive And I said, I'm just going to try to spin up an experiment. I'm going to have a small landing page with some copy and I'm going to run ad words and I'm going to see if I can get some traffic. So last week, my goal was to get an experiment up running and run ads and see how they do. So, uh, super quickly, um, I used unicorn platform, which I've heard of before. Um, I navigated the product. It looked very simple because that's what I wanted in my mind. I just wanted maybe a three page funnel. I wanted a landing page with a buy button on it. When you click buy, it takes you to a page that says I'm in the middle of building this, putting your email and I'll let you know when it's done. They put in their email, they click a button, and then it takes them to like a success page. You've been subscribed. So I figured, OK, I can measure, you know, I so I know basically nothing about Google ads. I've learned a little bit since starting the project, But I wanted to I knew that I could measure conversions by knowing if you reach the success page or knowing if you made it to the buy now page. It was a very natural funnel. So I so I looked at unicorn platform. I said, great, there's enough templates here. And I just used a template. I didn't change the fonts, the colors, nothing. So and I reminded me that the best logos are emojis. Emojis are the best logos. I agree because you can literally just like Google emoji SVG and you can get all the SVG for everything, make them the size you want and then save them as PNGs or JPEGs or whatever, which is lovely. So, um, so yeah, I created a very small, um, very small page and I showed it to my wife and she was like, oh, this is great. But she was like, I'd love to know how the product works. Like, you know, you're just, you're just, you're just, it's just some text. So I, so I spent probably three or four hours. I looked for a tutorial on like how to use Swift and like all the native Mac OS libraries to create a bar, like a menu bar item, because this thing would live in your bar as an agent and like keep your, your favorites up to date. So I ripped up a, an example and like commented out a bunch of code and just stuck in some images. on the main page, I created a little GIF and the GIF is like, oh, finder before with a sad face. And then I go up and I enable it and then all the finder things pop up and then it's like smiley face with sunglasses. So yeah, exactly. Right. Just kind of demoing. Like this is what this is what happens when you use it. So so that was great. And unicorn platforms handled gifts very well. So, uh, I found a good, great gift recorder. Everything worked great. Cool. So, um, I got SSL out of the box. Um, the help articles were really good for integrating with things like a, um, a mail platform, uh, an ESP, uh, so that I can take emails, take registrants, that sort of thing. Um, so yeah, so that was cool. Uh, and then just use like mail or light, because I've got a I've got gripes with the ESPs. I don't know why ESPs do this, but well, I mean, I guess I know why they do it. But so like I've used MailChimp forever, like when I when I was running Indie Hackers Montreal, I have an email list for Indie Hackers Montreal. And I'm like, I mean, I'm in MailChimp and I think, oh, great. I want to start a new list and I want to I want to put all the new entrance onto that list. Yeah, you need to pay what I would call serious dollars, like more than $20 a month for the ability to do that, which just like I get. I don't, man, I don't get why they do this. They limit you based on the number of audiences, not based on the number of emails. So the problem is that like, I have an ex I have, I want to start a list, an email list, but it doesn't have any value because it doesn't have anything on it. I just want to be able to put email addresses in there and use their double opt in flow. So, but I, so I, yeah, so I couldn't use MailChimp, but they had another integration with Mailer light. I'd never even heard of Mailer light. So I said, fuck it. like I'll just integrate with them and it's like simple one click everywhere all their help articles work perfectly so I'm using MailerLite for this and I would even pay MailerLite you know a couple bucks or something but they're they have their free plan is totally reasonable so I'm just using that so yeah so I popped it up and I installed Google Analytics god I hate Google Analytics so much I because you've talked about this before I don't know why I didn't I don't know why I I didn't just listen to you, Mark. I don't know why. I thought, oh, this'll be easy. This'll be so fast. And it'll integrate with Google Ads. Oh, it'll, this is, it's just the right decision. It was a terrible fucking decision. Google, if you're listening, I hope you die. No, like, it's just like, the product is incredibly difficult to understand and there's no easy path through the product. It's like the only people who are successful at Google Ads already know how, or excuse me, Google analytics already know how Google analytics, analytics works. So I spent a ton of time reading through help articles and like, it seems like they just moved from some, they moved to some new name or next generation that's more GDPR in line or compliant or something. So things are help articles are still sending you like across the internet. It's very difficult to get set up. So I set something up, oh, okay, and I got to throw this out there. The worst part, the worst part of a Google Analytics is that, um, you get a, you can have a real time view of who's on your website. That's that's fine. You kind of get that out of the box, but if you want to track an event, like say someone clicks subscribe, that's an event. Or another event would be you land on a page with a given path per am like that's an event that I want. It takes 24 hours for that event to be registered or for it to be indexed to know that you got it. Why? Why? So like I was setting this up on a Wednesday and then it was like, Oh, it takes till tomorrow. Okay, cool. So I waited until Thursday and then Thursday the event I had missed done the, I had miscreated the event or there was something wrong with it. And I was like, great. I have to wait another 24 hours to make sure that this is set up properly. So after a while I realized that I can build my own. I can just build like I don't need their conversion events. I know they like them and I they I think there's some claims in there that if Google ads is hooked up properly to Google Analytics and you can measure your conversions then it will do it'll do better presentation of your ads which I buy but is basically impossible to set up like I still haven't been able to see it working. So yay. I mean, I don't know. Like, yeah. Yeah. I mean, it does a whole industry. People who make a living from, you know, doing ad words and Google analytics on behalf of other people. Yeah. Yeah. I can see why. Um, so anyway, got the, got the site set up. All the events are working. Everything was working with Google analytics. That's great. And then, uh, then started to run some ads. So my plan was I have a couple of phrases that I know will take me to there's kind of one to three main support articles around this problem. One of those on the Apple forums and other ones on the Google forums. And it's people who are like, I have this specific problem, what do I do? And there's no resolution. And there's a bunch of people who just are chiming in with like plus one plus one. I don't know what's wrong. Plus one. When, when will the fix when, when can we expect a fix? And these have been going on for like two years and every, every couple of weeks, like a new person pops in. So I'm like, okay, great. What I want is when someone Googles and finds that article, I want my ad to pop up. So my goal was I started going through AdWords and saying, okay, so because yeah, so this is my first time running Google ads, uh, I'm learning a lot, but it's also very interesting to try to understand how do you capture the right people? So for example, it's like Google said, or Google ads says, okay, well tell us about a service or a company or something. Don't be too broad, but don't be too specific so that we can show you keywords to bid on. So I'm like, okay, well like Google drive and finder, I guess. I don't, OS X Mac. So I punched that in and I'm scrolling through the AdWords. So first of all, AdWords are hilarious because there's so many searches cause it's showing you searches that have volume. Well, I guess it's showing you searches that it thinks have affinity with the Venn diagram that you're creating by giving these keywords. So it's telling you things and like the stuff I'm getting back is hilarious. So for example, if you put in Google drive as your keyword, people are searching for things like book name, Google drive, or movie name, Google drive. So like, I've got, I just saved a few examples cause they're so funny. Wonder Woman, 1984, Google drive, Harry Potter and the prisoner of Azkaban, Google drive. And then it just, I mean, this is the internet, right? So Google drive nudes, only fans Google drive, right? like just people it's like, what are we looking for here? So I thought that was very funny. If you're listening to this and you think that's an opportunity no one's bidding on those keywords. So have at it. Yeah, so that was, that was very interesting. So you're like, you know, you're trying to remove adult content, you're adding negative keywords to try to refine, refine. So I found a group of, so I found a group that had reasonable search volume together. I mean, cause granted, this is extremely niche. There's not a lot of search volume here. So I said, cause like this whole point is, is that it's an experiment. I'm trying to understand what a cost per click would be, what a conversion rate would be, and does this resonate with the audience who sees it? So first stumbling point that I run into is you can, you cannot put trademark terms in your ad copy. copy. Uh, Mac is copyrighted. So yeah, which is like so bizarre because it's, well I get it, but it's, I don't know how you, you have to be very creative because how do you, if Mac is core to your, to your business, your business function, how are you supposed to write an ad copy around it? Um, so I spent so much time writing ad copy because they, I under it's pretty sophisticated what they have. I mean, not so no, no big surprise there. But it'll be like, write several fragments of headlines that can be combined and do the same thing with descriptions. And the idea is they're doing all the different combinations of things and presenting them in A.B. tests to the users to say this version of the ad gets clicked. That's the one we'll show. But my product is so simple. Like it's so simple that I can't, like it's really difficult to come up with copy that isn't like exactly the same or like with like small words turned around. So anyway, so Google like, so I had Mac in a bunch of them and I managed to like maximize all of the scores that Google was telling me. So great. So I go to run the ads and it says, you can't do this because you have copyrighted stuff. So I said, man, forget it. So I just deleted everything that had Mac in it. All my scores just like went in the toilet And I was like, I don't care because like, you're only going to click on this ad if you have this problem. So I'm just going to run with it and see what happens. Yeah. Um, so yeah, so that was quite funny. And then, um, yeah, so, so the ads have been running for a while. Uh, I'll do a live update here in a second with you. But one of the things that I realized yesterday, I don't know why this didn't occur to me, but one of the things I realized when I was, when I was creating keyword batches was I I wanted to say, I wanted to run an ad against like finder favorites disappearing or finder favorites disappear. And Google wouldn't let me do that. It was, it was saying something like almost like it was offensive. It was like, Oh, you like, we want to create a, I wish I like the, I can't recall it because I didn't understand it. It was like, how does disappear come as offensive or incompatible with search results? I don't really understand. Because what I realized was I'll know that my Google ads are configured properly. If I Google those key phrases that take me to those three help articles and my ad shows up, then I know that I've done the right thing and I haven't been able to do it. I have my ads running, but it's not those ads are not showing up on the same page as the as those help articles. So already I can tell, OK, I'm doing something wrong, but I'm not necessarily sure. A, I know how to fix it, B, that it'll even be worth my time to fix because the search volume for all these things are so low. So I'm going to continue to let it run and see what comes back. But it's been a very interesting experiment just in terms of how much I've learned overall. Right. But that's the best part, right? Yeah. Now you've learned this new skill that you can use for your next experiment. Exactly. I'm just going to do a very quick refreshment of my campaign and I've had zero conversions, which is lovely. That's, that's great. But I mean, it's crappy, but, but not unsurprising. Um, yeah. I mean, like it'd be great if I had gotten more clicks, but it, it's, it, it helps me to realize that, yeah, I'm not, my ads are not showing up against the correct audience. Now granted, I know that I already know that I already know that that it's not working or not not working, but I already know that there's a mismatch between who's seeing the ads and who I think should be seeing the ads. But so far, I've spent forty six dollars. I've gotten two hundred and sixty one impressions and twenty two clicks to my website. So what is that? That's a click through rate of something percent. Yeah, click through rate of 8.43%, but a conversion of zero. So I'm very interested to know who's clicking on this ad because like, right. And what does Google analytics say? Like how long did they stay on that page? Um, Google analytics says, uh, I'm, I won't spend a lot of time. Yeah. Average engagement time, uh, is five seconds. Oh, okay. So the granted bouncing back immediately. Yes. But the, I don't know how to interpret that because the, the landing page is so small, like there's that the, the text, the copy in my view is extremely succinct. So there's a very small paragraph of what the, uh, uh, of what the copy is. So I don't know if maybe they're accidentally clicking and reading and being like what, and then just going away. or if they saw the offer and said, no, this isn't for me, it's yeah. I mean, I guess we can't know, right? That's the whole point of running experiments. Yeah, but I mean, that's it. Those are all hypotheses that you can test. Yeah, so. You know, cause yeah, if they were looking for an article that will, you know, help them, you know, explain the problem and the solution, then yeah, they'll say, oh, this is a product, not interested. Yeah, yeah, it could be, could be. So I guess a way to test that could be, I could try to build some content on another page and to be like, oh, by now or fix it, fix it yourself and see if they will click on the fix it yourself. I could even, I could even not write that article and have fix it yourself link to a page that says like content coming soon and see if people are clicking on that. And then leave your email to be notified when the article. Exactly. Yeah. Yeah, so it's pretty fun. I feel like I've given myself permission to really not do stuff. Like, I'm thinking, even now it's like, oh, am I gonna have to write that content? No, don't write the content. You have no idea if anyone's gonna click on that. Don't write it. Just have the click, like, you could effectively have it 404 if you wanted to. You just have to know that they clicked on it. So have that be an event. But yeah, testing, yeah, like a super quick test is very. It's not, that's great. No, this is a perfect example of how to do a quick test on something. Like you have an idea and you want to find out are people searching for this and when they're finding it, like are they interested in a product or do they just want a free solution? Exactly. Exactly. So, I mean, I got to like, I, I've, uh, I'm so proud of myself for doing this. Uh, it was, I had a lot of feelings last week and I was like, well, nope, doesn't matter because this is the, like again, working backwards. I knew exactly what I wanted a test to look like and being like, great. I just have to work backwards from this. And I, um, and I realized like, great, like, let's just cut as many corners as possible. Uh, just do it. And I'm, even though I haven't gotten a conversion yet, I feel amazing about like, first of all, I shipped something. Um, I wish I had kept a running total of how much I spent because I, I've spent almost nothing. I bought a domain. I should have bought instead of or used like a unicorn platform gives a free XYZ domain. So I should have just used more free shit because if it doesn't matter, then it doesn't matter. I agree for an AdWords experiment, you don't need a domain name. No. Like, right. Because they have no idea. They see an ad, they click on it. They have no idea what the domain name is. You could actually display whatever you want. Yeah. Yeah. I think maybe next time I or for my next AdWords experiment, I won't even buy a domain. I'll just I'll use a subdomain and roll with it. Yeah. So I'm super proud of how it came out. It'd be cool if I'd gotten some conversions, but I can play around with it and learn a a little bit more or I can just move on to the next thing. Yeah, exactly. Um, hey, what's your, what's your gut about AdWords as a channel? Like do you think you could fine tune it some more and get more traffic? Yeah, I think I will say I don't think I've given it a fair shake because the people I, the people I want to target, well I, I just keep thinking about those help articles and that when I search for the keywords that lead me to those articles, I don't see my ad. And I think that like, well, there's a few things there like one, maybe it's just not possible or maybe I don't have the skill to, uh, to have that work. Maybe I need to talk to people or do more research, but that's all costing me more time. Uh, it's, it's furthering the, my investment in this bet. So I still think that AdWords is the right go or I still think that AdWords is a reasonable approach. I don't have something that tells me otherwise. But AdWords, but you know, improving my skill at AdWords could be a very useful investment. So maybe I spend a little bit more time to try to figure out, okay, how can I target this specific thing if it is even as possible? I'm not sure. Yeah, so jury's still out on whether or not it's the right method of distribution for this test, but don't know. Here's a crazy idea. Like the article that people are searching, or the article that shows up when people are searching for this problem, could you reach out to this person and say, hey, I built a solution. Do you want to be an affiliate for it and display it on your landing page? Yeah, so the main help articles, one is from Apple. So I don't think they're going to take my call. And the other one is from is Google. And I don't think they're going to take my call either. What do you mean? Google, like a Google group groups. Okay. Group. Okay. Okay. So they're not really articles. They're just their support forums of people saying there's no solution. Yeah. Or yeah. Help. Oh God. Plus one, whatever that kind of thing. Can you post on those forums and say you have a solution? Yeah, I can. I, so I've been. I'm that's kind of where I'm drawing the line because I don't have a solution. I just have a I just have like a an idea of something So I'm hesitant to to do it. I mean, I guess I could what would it cost me? I guess like I don't know reputation, but no, I guess it doesn't cost me anything I I think at some point when I look at that I think like that is I I don't know, my mind is like crossing a line almost. It's like it doesn't exist. It doesn't exist. It's like calling somebody and because it'd be one thing if I was messaging with someone one on one to be like, oh, hey, I've created, is this still a problem for you? Would you buy a solution or something like that? Pay me right now. No, but you could be honest. Like, hey, like, yeah, I've, I've, you know, I've, I've built a solution for my wife was having this problem and I built a solution for her and it's working great. Would you be you know, I'm thinking of building an app for it. Would you be interested in just the link to the app? Yeah, that's okay. Maybe you're right. Yeah, and just being really upfront and just saying hey, it's not done yet Yeah, exactly But I know exactly what you're dealing with because what you want is you want to see but the fact that it's an app like They know they're gonna have to pay for it and you're testing right away. Like are people willing to pay to solve this problem? Yeah. Okay. You know what? You're right. Mark, you're right. Okay. So it sounds like, yeah, I should just post in those forums and let people know, hey, this is what I'm planning on doing and putting a link there and seeing what happens. Yeah. And you know, it's like, yeah, this problem sucks. My wife was complaining about it. I built an easy fix for her, but I'm thinking of packaging it into a proper app that people could buy and use. So they know that it's not ready yet, but you'll be able to see, are they willing to pay to fix this problem? Yeah. Okay. All right. Yeah, you're right. I'll make some, time to make some accounts and run into these forums and post. Yeah, I'm not sure why I was so hesitant to do that. It's almost like, oh, are they going to click on it if it's not done? Or am I misleading them in some way? No, I'm not. I mean, I think there's a way of writing it where you're not. And I mean, I don't know if it's that unethical to say, yeah, I built a solution and even though you didn't build it yet, I don't know, maybe it is. But to me, it's like I'm not trying to swindle them. I am going to build a product that solves this problem. I just need to know if they'll pay for it. If there's a market for it, then I don't know, it's like a win-win. It's like I'm, I don't know. Yeah. Hey, if you want it fixed, you have to tell me that you want it. Right, exactly. It's like, and it's just a way of communicating that without, because maybe saying, saying, it's not built, I'm thinking of building it, but I will only build it if people are willing to pay. Like maybe that message is too direct and people won't like it, but there might be a way to phrase it so that it's in the same tone as that forum thread. Totally. It's you share the frustration, your wife shared the frustration, you looked everywhere for a solution, there really isn't any. So I built a small script that fixed it for her but it's really not polished, you know, so I need to package it into a proper app. Yeah, agree. Okay, cool. That's what I'll do then. Cool. Um, and I think, yeah, I, uh, I'll probably, I mean, they, uh, I'll pop up, I'll probably pause the ads then for a little bit. Cause they're not really accomplishing what I want or they're not reaching the audience that I want. So if I start them again, it'll be with some different copy on the site and, uh, with a renewed attempt at trying to show ads to the right people or to the right, um, to that same audience. So yeah, we'll, we'll see. So I've got some things I can try there. Yeah. I mean, it's also possible that AdWords is not the channel. Absolutely. Yep. So how much invest in that? Yeah. Yeah. But if you think, oh yeah, there's a few optimizations I haven't tried. Yeah, go for it. Yeah. At this point, I'm pretty stuck. Like I've learned a bunch, but I don't, I would need to do some more reading. Like I'm at the reading phase where I need to like get some advice from people who are doing this already. Or, you know, I would even buy a book or something to try to learn a little bit more. But yeah, learning how to be able to conduct little experiments like this and reach the or even just to know that you can't like that's okay too. But to just know that I'm not spinning my wheels on something that doesn't make sense. Right. Yeah. Okay, cool. So I think that'll be my next step for this experiment. Um, yeah. And then yeah, I've got some experiments, other experiments in the pipeline. I've been experimenting around, looking at their support forum, that sort of thing. That'll be something that maybe we talk about next time. Yeah, because yeah, there's some they run a they run one of those roadmap boards where you can say, oh, this is this is a feature we're considering and people can upload it and comment on it and stuff like that. And there's some interesting stuff in that board that clearly renders not going to tackle anytime soon. It's just it's just not in their roadmap or their immediate roadmap and I've been thinking, Oh, well, you know, I could probably solve, I could probably come up with a solution to kind of get you most of the way there. Um, but I need to message the people who have upvoted this thing in order to understand, like, am I just building this because these people think it should exist or are they actually willing to pay for it? Right. Um, which is not straightforward, uh, because it's, yeah, it's just an upvote. There's no comments. So yeah. Yeah. It's not the best. Yeah. Yeah, that support forum is like a funny watering hole. It's not the best because people are usually coming for help, not necessarily with like, this should exist and I'll pay for it. Although there are a couple of things that people have said like, if render had this feature, or this is a blocking feature, I cannot switch from Heroku to render until this exists. And I've looked at some of those and been like, ooh, is it possible? Like, can I build something like that? But like all my ideas are like crazy hacky. Like they kind of have to be implemented by render. But yeah, I've got some ideas, but we'll keep that for step. Last thing I'll say is Unicorn Platform did something very interesting that I thought might be interesting for Power Importer. When you sign up for Unicorn Platform, you get deals from other people in the space. So when I signed up for it, it was like, great, here are the deals that you have access to. One of them was a free XYZ domain. Another was a deal on some software or something like that. And it made me think about Power Importer. Kind of interesting if there was another, I mean like Webflow would be a great partner here, but say it was JetBoost actually. JetBoost is like, you're firing up this CMS collection and you're gonna do all this filtering on your CMS. Did you know that you can do dynamic items in your CMS from air table with an affiliate link to power importer? Like the way that they did the affiliate the affiliation Was really well done in my opinion and it it kind of got me it inspired me a little bit So I wanted to tell you about it because I thought it was kind of neat Kind of a neat like business development thing, right? Because you're because you're almost you you're giving them something right? Yeah, I'm like a rebate hey, like here, here's a deal. And maybe they don't know about this third party and at the same time, you're offering them more ways to improve their Webflow site. Exactly. Yeah. Yeah, no, that's a good idea. Yeah, because the same goes on the power importer side that like you've subscribed to power importer because you want to have dynamic stuff in your CMS. How are you sorting that stuff? How are you presenting it? Like, have you thought about using something like a components like JetBoost components and having an affiliate link back that way? Yeah, I mean Jetboost does have an affiliate program, but it's the offering a deal though, that's always tricky, right? Like I had one customer asking me if I had an affiliate program where I could offer like a coupon, like offer a deal, so then we would just have to track that coupon code, like if anyone uses that coupon code then obviously they came from that affiliate. But it's like, I'm already giving you a percentage of the revenue. Now you want me to give the customer a rebate also? Like how much money is left for me? Right. It's it wasn't clear like, are you financing this rebate or am I financing it? Right. Yeah, I guess it would depend on the structure. Yeah, we couldn't find a solution. Like, yeah, because I think too, it's one of those experiments where you don't necessarily know if the traffic coming from your referral source already knows about you or if they're like, Oh, great. Like power. I'd never heard of power report. This solves my problem perfectly. Then maybe you're like, Oh, actually maybe, maybe this is a, maybe this is useful. Um, or maybe I can give a rebate for X months or something. I don't know. Um, and it becomes worth it because the, the, or their LTV is so high. Yeah. All right. No, it's a good idea. Thanks. I'll think about it. Cool, so that's that's all I have this week. It was a lot a lot of exciting stuff going on over here. Yeah, that's awesome Awesome. Cool. All right. So I will see you again in a couple of weeks. Cool. All right. Catch you later. you