MatthewOdette A blog

Day 7 - Zero to MVP in 30 Days - On landing pages and prospecting

Hey there! If you’re new to this series, I laid down some ground rules in day zero, and explain the idea for my first project on day one. I document, a little every day, what I'm working on.

Quick thoughts on landing pages

I’m currently working on moving from Github pages to a Digital Ocean droplet, to make the switch from iframing my Product Hunt Ship page on Bystander.io to self hosting version 1.0 of our landing page. I’ll also stick Ghost on a /blog subdirectory to begin posting a few pieces of long form content targeted at Bystander.io’s customers.

For landing pages, I still opt to self-host since hosting is dirt cheap and the landing-page-as-a-service options are fairly expensive for something I can get done in nearly the same time by grabbing a static template off Themeforest.

Here’s a few things I look for when selecting a theme:

  1. There is a decent variety of sections and elements to choose from, to make slicing and dicing the page to suit my needs a breeze.
  2. I don’t need 10 hands and 13 feet to come up with enough fingers and toes to count how many icons and blocks of text fly into view as I scroll down the demo page.
  3. Usually at this stage, I have general vision for how I’d like the content above the fold to look – and I try to get a template that matches this vision.
  4. The author of the theme is established on the platform or elsewhere.
  5. And finally, a look at their demo page from my phone to make sure their responsive design wasn’t just an accident caused by building with Bootstrap.

When using a template, I believe it’s important to avoid making your landing page content fit the template, but instead make the template fit to your content. Just because a theme comes with a pile of pretty elements doesn’t mean we should use them all.

I also head to whatever directory the theme stores their images in, and delete all stock photos. Or pull them out to somewhere else if I need to save their dimensions for filling in my own images later.

If you’re going to use stock photography, I think it should be a deliberate choice, match how you envision your brand, and not scream “I’m a stock photo” at you.

If you need inspiration for content on your landing page, I always like to head to Lings Cars. Then I grab a glass of whiskey afterwards to calm my nerves.

Then after your last sip of whiskey, for real inspiration, you can take a look at Ask Hacker News posts about landing pages.

Oh! Any before you push the landing page to your hosting, make sure to add all the tracking pixels you’re interested in to begin collecting data for ad retargeting right off the bat.


Prospecting

I also wanted to share a quick little strategy I’ve used today while building up my list of prospects. Cold outreach works, but it’s a grind and I like to be as personal as possible in my outreach – so I probably spend more time putting a list of folks together than I should. But little tricks like this, as I discover them, speed up my workflow.

This method leverages sites where people leave reviews of SaaS products they’re using in their businesses. Siftery is a great example of such a service. And Product Hunt has a list of alternative sites for when we exhaust Siftery’s resources.

As an example, a fellow maker was recently looking to reach out to startups who are using Recruiting/Hiring based SaaS to validate an idea.

We can navigate to Siftery’s Hiring category and start clicking into the reviews for each SaaS:

The reviews usually include the reviewer’s name and company. So now we know company X uses software we’re interested in, and we likely know who in that company we can at least start some cold outreach to.

From here, I do the usual research on LinkedIn, then try to find something to connect on with the person, and track down the email format for the company (if you’re struggling here, Hunter.io or similar tools are great)

And know we have a quick way to get some people in our prospecting list who actually use software or competitors we’re interested in.

I’m curious if anyone else has a go-to source when they start prospecting for cold outreach on their own projects?


Tomorrow, Day 8

We’re on a bit of autopilot for this weekend, I think.

I need to continue prospecting for a large push in outreach and validation. I also need to flip the switch on hosting to put my new landing page up – which we’ll begin testing that as soon as we begin messaging our growing prospect list after the holiday weekend.

If I come up with some spare time tomorrow, I’ll begin reaching out for guest blogging opportunities with user experience blogs. I have a few long form drafts in the pipes about error message, and I’d like to experiment with a guest post or two that compliment the coming release of Bystander’s own blog.

Content marketing is a long tail game, but I hope to have a few meaty pieces available early to help with trust and authority.

Oh! And in case you’re interested in how the Product Hunt Ship pages with over a thousand subscribers look, I have this spreadsheet going – that I also pictured on day 4:

The data is from 3 days ago, so some pages and stats have likely changed.


Thanks for reading. And of course, feel free to email me with any questions or feedback!

Day 6 - Zero to MVP in 30 Days - A first look at Bystander.io

Hi everyone! In the spirit of Thanksgiving, I'll be taking some extra time to hang out with friends and family today. Nevertheless I wanted to put up a tiny post today!

Even though this is my shortest post, it’s likely my favorite so far – a first look at what I’m building!

Here’s the very first screenshot at the pre-alpha dashboard for Bystander:

So, my goals with the initial dashboard are:

  1. I want to immediately present value and try to have the user feel some version of: “wow, this is why we use this.” I hope the “quick stats” at the top help there, to see how much money you’re saving in customer support hours or in more users succeeding in completing their tasks.
  2. Show off the reason we’re here, the error logs. This should make it immediately clear where they can prioritize their efforts to recover costs from error messages. As an example, you can see I’m sorting the table to see which error is causing the most Customer Support communication this week.
  3. Try to not be overwhelming in our first presentation. We want it to look, feel, and be useful at first glance, not make a new user feel like they need to immediately run off to the documentation.

It could use a designer’s touch of course. But this is the very first attempt, and I’m quite happy with it!


Tomorrow, Day 7

  • I’ll stitch together our first real landing page
  • Switch Bystander.io from GitHub pages to a DigitalOcean droplet
  • Toss up Ghost on a subdirectory for Bystander’s blog
  • Prospect a list to test our new validation plan from yesterday, and schedule messages for Monday morning

Happy Thanksgiving!

And if this post is too short, a fellow maker – Emil – has started his own Zero to MVP in 30 Days challenge, take a look at his fantastic day one here.

And of course, feel free to message me or email me with feedback or questions or anything else on your mind!

Day 5 - Zero to MVP in 30 Days - Rethinking validation

Hi there! First, I wanted to thank everyone who’s discovered this little series. The claps, comments, and even a few emails are incredibly motivating and it means a lot!

Today was heavy on backend development, working hard to get everything in place to where I can fill in UI components we need for screenshots. I don’t mind mocking up the UI for an early landing page, but I do want it to be an honest representation of what we’re getting into.

But stepping back and focusing on some technical challenges gave me breathing room to let validation ideas stew throughout the day. And I decided we’re going to make a small pivot in our strategy here!

It’s still incredibly early of course, and we’re not abandoning the channels I outlined in day 2, we’re just changing our strategy some to see if we can improve our response rate.

The timing for a small pivot couldn’t be better, with tomorrow being Thanksgiving in the U.S. (and I don’t want to cold email folks who are trying to spend time with their families!) it will give me a few low pressure days to get ahead on content and push through a few of the hard technical challenges I’m facing.


The (small) validation pivot

Our goal is to redefine the core of the Bystander.io idea we outlined in day one, and then hammer out three new strategies to reach our target audience.

Now that we’ve spent a few days trumpeting the idea, and really digging into a few communities, let’s see if we can better define our product.

Back on day one I defined Bystander.io as:

Bystander.io a tool to track visual user-facing errors, how much they’re costing you, and a framework with the accompanying analytics to reduce the cost those errors.

In terms of an elevator pitch, that could use a little work.

And to start with improving that let’s take a look at how we define Bystander.io’s benefits. In Indie Hacker’s interview with Brendan Dunn he boils down a company’s purchasing decision nicely:

[…] businesses pay for things if they can either make more money or lose less money.

We’ll fit into the “lose less money” side of the coin. But how? Here’s a simplified version of the user flow were assuming when a customer faces off against an error in your app:

So, we’re looking to recover costs companies by:

  1. Reducing the number of Customer Support hours errors add
  2. Reducing customers downgrading or canceling plans as a result of errors

How will we do that?

  1. Improve errors to be actionable in places that make sense. Errors should be iterated on and tested similar to our Call-to-Actions, marketing copy, etc.
  2. Have error messages that work maintain trust instead of degrade it
  3. Use analytics to help identify and fix new or troublesome error messages efficiently, and have a framework in place for your team to document internally for customer support or improve the error

So what is Bystander.io in this iteration? Remember we’re looking to get the concentrated version of:

Bystander.io a tool to track visual user-facing errors, how much they’re costing you, and a framework with the accompanying analytics to reduce the cost those errors.

That’s the long answer – and I can understand people getting bored by the first comma.

We’re Optimizely + Logs for your errors.

Great! But how does distilling our product hope define the direction of our validation efforts?

No we have (hopefully!) a clearer picture of who stands closest to the tangible pains we’re looking to solve.

  1. While reaching out to user experience professions, I’ll ask that they in turn reach out to the customer support team for an example error message that’s causing customer contacts. Then I’ll research it in a way that our SaaS ultimately would. I’ll help them recover value from an error causing them pain right now. Do things that don’t scale.
  2. Tenured customer support frontline: they may not have buying power, but we’ll try a more traditional sales funnel of creating a fan within a target company, offer the frontline similar value as we do to the UX professionals. And work from there.
  3. Company social media accounts: it’s easy to keep a pulse on trending errors. And this will give me a timely error to offer value on, and every @mention to a company gets read so I’d like to test if this works.

So we’re going to sneak in as close to the problem as possible, and offer immediate value instead of asking for a discussion.

Let’s stop our error message from reducing long term customer value and increasing customer support costs.

Let’s never give them this again:


Now, dear readers, I have a favor to ask! If you work at a SaaS company large enough to have a customer support team, or are friends with some folks who might benefit, ask your customer support teams if there’s an error message users are writing in about.

Until tomorrow, and if you’re in the U.S. and busy eating Turkey tomorrow – have a great holiday! (And the rest of you have an amazing day too!!)

As always feel free to email me or message me 👋

How to find and engage your audience with Slack and IFTTT

Building a minimum viable audience to pair with your minimum viable product is one strategy to help stack the product launch cards in your favor.

In the “Zero to MVP in 30 Days” challenge I’m currently working on, I’m also starting with an audience of zero. Finding my audience and building rapport is a high priority.

But my time is precious during this challenge. And tabbing over to Hacker News, Reddit, Quora, and other communities my target audience may belong to, to find discussions I can jump in on definitely distracts me from other work that needs to get done.

With that in mind, I took a bit of time to set up an automatic stream of curated content to a Slack channel, all for free. Saving me a ton of time, and I hope to pass that saved time onto you.

Our goal in this post is for you to have a slack channel resembling:

In this post we’ll look at setting up content streams from these kinds of channels:

  • New content with your preferred keywords from sources that have RSS feeds like Reddit, StackOverflow, and articles on Indie Hackers.
  • New content or comments containing keywords from Hacker News using some community built tools
  • Creating an RSS feed for a site that doesn’t provide a feed, to grab new content that we wouldn’t otherwise be able to subscribe to, like Quora.
  • Twitter searches
  • Using Google Alerts to create more opportunities, like finding blogs accepting guest posts in your niche

Pre requisites:

  • A free slack workspace or existing workspace
  • Create a channel in Slack to pipe this feed of content to
  • A IFTTT account (IF This Then That is also free)

Pages that already have RSS feeds

The first thing we’ll want to do for any source you’re interested in tracking is check to see if they already provide an RSS feed we can tap into.

There are browser extensions that can display if a page you’re currently viewing has a feed. I opt to just inspect the page’s source and Cmd+F for “.xml” as we’ll see shortly.

Let’s use Indie Hackers articles as an example:

Indie Hackers is a source that gives us an official RSS feed to work with. For me, Indie Hackers is a great place to find folks who are doing something similar to my Zero to MVP in 30 Days challenge, and the volume of posts isn’t overbearing so I’d like to pipe in all their new articles.

Let’s go to Indie Hackers and look at Courtland’s source code:

And find the link to the feed he provides there:

Great! Now let’s head to IFTTT’s page to create a new applet, and select “RSS” as the “this” (the trigger) of the applet.

Here we can choose to either trigger the applet for all new items from the feed, or only new feed items that contain a certain phrase. We’re going with all updates for this first example.

Let’s paste in the Indie Hacker’s feed and move on to select Post to Slack as the “that” of our new applet.

On this screen we can clean up how the content is being fed to Slack. Here’s the changes I make, but definitely experiment to see what works for you! And click on “Add ingredient” to see what other data from the RSS feed is available to you.

Here’s how that comes out in a Slack notification:

On the final step: enter in a better name than the default to help us find things later. You’ll likely end up with a lot of applets, and using better names now will help you find them later as you edit them to fine tune keywords and sources.

Some sources that have RSS feeds are a firehouse. StackOverflow and other Stackexchange communities are a good example of this. Let’s look a finding an RSS feed for a specific topic on Stackoverflow to help make sure we only get content we’re interested in.

Google is our friend here, if we’re looking to get content out of a large site, chances are someone else has already tried solving this problem. Shoot! It looks like getting a feed for searches is out. But we can use tags!

They have a tag called “custom-error-pages” that looks like something I might want to follow for my audience. The link to their RSS feed hides at the bottom of their pages:

We can grab that, and repeat the steps we used for the Indie Hackers feed.

Rinse and repeat these steps for any source you’re interested that has a feed available. Don’t forget IFTTT’s Keyword RSS option, if a source has content for or by your audience, but it’s a bit too broad, you can use keywords to further filter the RSS feeds.

And check to see if there’s a Stackexchange for your audience specifically.


Hacker News

I’m going to leverage HN as an example source of a firehouse that doesn’t have feeds available, but does have solutions built by the community.

HNRSS is one such tool that popped up in my Google search. And they let us set up feeds for both new posts and new comments (and to further filter those by keyword if we like)

I recommend hitting Hacker News and testing some exact search phrases to see what will bring in results relevant to you. HN search works like most search, wrapping a search term in double quotes will limit your search exact phrase matches. (Try searching “Ask HN” books as an example, this will bring up all the Ask HN threads that are about books)

And while testing your search terms, don’t forget to sort your results by date to see what the new content looks like for your term, not just the popular content.

Once you’ve found some terms that are pulling in the result you want, use a tool like HNRSS to create RSS feeds for those terms and wire up your IFTTT applets similar to the method used for Indie Hackers feeds.


But I have a source and there’s no RSS feed, and no community tools!

Then we’ll just need to slice and dice that page to create our own RSS feed! This will require working with HTML, and we’ll use Feed43 to create our own feeds for free!

Let’s use Indie Hacker’s Forum posts as our example. Indie Hackers RSS feed only covers articles, but I want to monitor and jump in on new forum posts too.

As a primer, this tutorial and also this tutorial from Feed43 will help illustrate how we’re picking apart a page.

The first thing we need to do is get the Indie Hackers Forum loaded up on Feed43, go ahead and click “Create your own feed” on their homepage and pull the Indie Hackers forum in:

Now we need to find the closest container on the page that hold our future RSS feed’s items. So in this case we’re after the container that houses individual threads. Reading a 100 kilobytes in a textarea on Feed43’s site isn’t ideal though. So let’s inspect a forum post’s element right on the Indie Hackers page to find the necessary container element:

And next we’ll want to expand on of the individual threads so we can format our search pattern based on the hierarchy. Our goal is to pull out the URL, the title of the post, and the author.

Each {%} tells Feed43 we want this piece, and each {*} tell Feed43 to “skip until the next character in your query”.

So we find the individual thread’s container in #1 (the red part) then add a {*} to tell Feed43 to skip until we get to the first piece of information we want. That first piece is the href in the anchor element (the link to a thread) and the {%} between the href’s double quotes says “we want the contents that would normally be here to be a part of our feed.”

Then we use another {*} To skip until we get to the next part, the thread’s title, and so on.

Here’s how that will look in Feed43:

We can test how our part looks by hitting the “extract” button. I suggest, as you build your own feeds, to test each part as you go. Building up pieces of data you want one at a time and hitting “Extract” will help you troubleshoot as you go to make sure you end up pulling out the correct data.

Each {%} tag we use in the search query will be assigned a number and can be used when creating the feed. So the link (from the {%} place in the href attribute) will be available as {%1} and the title of a post will be {%2} while the author is {%3}

Letting us format our feed like like:

If it all looks good (you can view my feed we just created here if you like) then we can run through our IFTTT steps from earlier to get our new feed piped into our Slack channel.

And we can now turn most any site we want into a source to feed our Slack channel, and if we need just certain keywords from a site like this, where we create our own RSS feed, don’t forget IFTTT’s RSS trigger has an option to only trigger if a feed contains a certain phrase.


Want to pull in Tweets too?

Twitter has their own set of triggers for IFTTT. Of most interest to us is probably the search trigger, to pull in Tweets from a specific search.

I’d recommend pulling up Twitter’s documentation on advanced search, their section on refining can be combined refine a search to your needs. And test out a pile of queries on Twitter’s home page until you get narrow results that suit you.

For example, searching just “error messages” is a freakin’ firehouse. But if I search for filter:images “error message” to only grab Tweets that have an image (hopefully of an error I can chase down) and the exact phrase “error message” I get much better results.

Once you find terms you like, pipe them to our channel with a new IFTTT applet, using Twitter’s triggers instead of the RSS triggers we’ve been using.


Google Alerts for creative stuff

With Google Alerts we can set up RSS feeds to do things like:

  • Find guest blogging opportunities in our niche
  • Monitor the blogs Google indexes for new posts/pages filtered your Alert’s search term
  • Create an alert for your side project’s or company’s name to act on
  • And a bunch more things. If you Google “how to use Google alerts” you’ll find a ton of ideas to work from.

The alerts are straightforward, you can create an alert using any search term you would punch into Google.

Looking for new guest post opportunities in “user experience” would look like:

Then we just grab the RSS feed Google gives us for the alert (set this in the “deliver to” option pictured in the screenshot) and run through our usual IFTTT steps.


Wrapping up

Whew! That ran long. So, since we’re mostly leveraging RSS (with Twitter being the exception) why don’t I just use an RSS reader?

  • I like IFTTT’s ability to filtering incoming feed items by keyword
  • I’m never in a feed reader any more, but I do keep Slack open
  • IFTTT lets us format incoming feeds to all be in a similar format we can easily digest: source name, item title, item link, and item author
  • It sounds silly but using emojis on the slack comments like a checkmark to indicate I commented on an item, or an “X” emoji to indicate I want to prune that keyword source to exclude that kind of post, really helps pull this together

If you set this up, I hope it saves you a bunch of time by not needing to check on a pile of sites and blogs, and made you more productive by removing an excuse to spend time on your favorite sites instead of working on your thing.

Should you run into a source you’re having trouble getting to work, drop me a message, I’m happy to take a look.

And as a shameless plug, I wrote this up as a side effect from my “Zero to MVP in 30 Days” challenge, where I’m blogging every single day. If that sounds interesting come have a look!

Day 4 - Zero to MVP in 30 Days - Landing page delays

Hey all! A quickie tonight. Producing static screenshots that I’m satisfied with for my initial landing page is taking longer than I had anticipated (as these things go!)

But, taking some stock from a bit of research yesterday during lunch, I decided to iframe my Product Hunt Ship page on bystander.io until I do put up a landing page. Likely Thursday as tomorrow is a bit thin.

After looking at every ship page with over 1000 subscribers, at least one just iframed their Ship page on their homepage, which is where the idea came from. Here’s a peek at that breakdown:

I’m happy to share the spreadsheet and go over some findings on successful Ship pages if there’s interest.


The post promised from yesterday, on creating an automatic feed in a slack channel of fresh content from your niche to engage and prospect from is now published here.


As always, feel free to email me with questions or feedback! And I shall catch you all tomorrow!