Day 166: Choosing a Niche

About a week ago, I asked myself some questions about the direction of Browserflow:

  • What will be the predominant use case? (task automation vs. UI testing vs. web scraping)
  • Who is my target user? (developer vs. non-technical)
  • How do I want to design the API?

I find it important to choose a niche because I’d rather build products that a few people passionately love rather than one that many people kind of like.

An answer to those questions has slowly emerged in my mind: Browserflow will focus on task automation for non-developers.

Task Automation

I’m choosing task automation because that’s the reason I wanted to build Browserflow in the first place. Some of the tasks I wanted to achieve programmatically:

  • Automatically dismissing the “Are you still there?” prompt when I’m listening to music on YouTube or YouTube Music (omg so annoying)
  • Making it easier to respond to Intention feedback by processing spreadsheet rows and filling out the To field and pre-filling the email body with a copy of the feedback
  • More robust note-taking when I find interesting content on the Web by automatically capturing URLs, screenshots, and timestamps from articles and videos
  • Unfollowing everyone on Instagram, Twitter, etc. so I can start out with a blank slate

Even though there’s a strong case to be made for targeting application testing from a business standpoint because companies will be more willing to pay the big bucks, I’m not particularly passionate about testing (I mean, despite my aspirations, I haven’t written any end-to-end tests for any of my projects…).

Since web scraping is mostly a subset of task automation, I plan to support that use case as well, but it’ll be a secondary focus.

It’s magical to see Browserflow do things 10x faster than you ever could and enable workflows that seemed too cumbersome to be practical, and I’m looking forward to giving everyone that superpower.

Non-Developers

We’re seeing the rise of a no code movement, where more and more people want to build things without code and are looking for tools to make that easier. I want to develop Browserflow so that people without any coding experience can easily use it to enhance their workflows.

The benefit of a focus is that it brings clarity to making product decisions. For example, I wasn’t sure whether I should provide a bunch of convenience actions that could easily be implemented by writing a few lines of Javascript. Now, it’s clear that the answer is yes. My goal is to allow people to create interesting and nontrivial flows without writing any Javascript. The SCRIPT action that allows users to write their custom script will always be there, but I’m going to think of it more as an escape hatch rather than the intended way of interacting with the site.

This approach will certainly make things easier for non-developers, but it’ll help developers as well. For example, a SCROLL_TO_BOTTOM action is much easier to use than writing out window.scrollTo(0, document.body.scrollHeight). The latter entails looking up the scrollTo method signature, the difference between clientHeight, offsetHeight, and scrollHeight, the difference between window.scrollTo vs. window.scroll, etc.

Basically, I want people to be able to turn a script like this that unfollows everyone on Twitter into a flow on Browserflow without having to write a single line of code.

Going in this direction presents some additional challenges:

  • How do I decide what should become an action and what shouldn’t?

  • How do I prevent the API from becoming so bloated that actions become difficult to discover?

  • How do I build a non-developer friendly way to do things like loop through a collection of elements? Is it even possible?

    • It’s easy enough for me to write something like const buttons = Array.from(document.querySelectorAll('button')).filter(element => element.innerText === 'Following');, to get all buttons that have the text “Following”, but that’s way too much to expect from users for what I imagine will be a pretty common action

I don’t have great answers for these, but with this focus, it’s my job to figure it out!