FStop.fm — A Retrospective


I moved to LA in 2015 and fell in love with photography. I particularly enjoyed taking pictures of people but I quickly exhausted my personal network and found myself with a shortage of new folks to shoot. This problem is usually solved with niche social media — Model Mayhem, PurplePort, Facebook groups, or — most of the time — Instagram. I wasn’t happy with any of these solutions as they felt clumsy and inelegant. I built FStop to address this need.

FStop grew from 10 to 100K users within a year and earned industry press coverage. This post serves as a retrospective of sorts — a summary of the lessons I learned bringing FStop to market.

Validating the Need with Interviews

I wanted to more fully understand the domain of photography before investing in development. I did this by interviewing models and photographers throughout Los Angeles. I’d ask them to share their artistic journeys on the FStop Blog and along the way I’d learn about their day-to-day, what tools they use, and what pains they experienced.

Nearly everyone that I interviewed expressed the same frustrations: It’s hard to connect with other artists in a safe, streamlined, professional manner. There seemed to be a genuine need so I worked with this initial set of interviewees to define the MVP feature set and got to work.

Rapidly Building an MVP

At this point I was confident in both the need and the bare-minimum set of features that would address it: users should be able to create a basic profile, browse other profiles, and message users all in a mobile-friendly manner.

I set out to build a simple solution as quickly as possible without any concern for my choices in technology or even the code quality; I wanted something “good enough” to get in front of users so I could start rapidly iterating and evolving the product in response to user feedback. I cobbled together this Frankenstein of an application from bits and pieces of previous projects. Real-time messaging was pulled from one project, profile creation from another, authentication from another; browsing was the only new piece of code and I pulled in a library to handle that. My focus was on reducing time-to-validation (and overall time-to-market) as much as possible, even at the expense of code quality or performance, even if it meant accumulating technical debt. The current mission was to validate — not to launch.

Accidental Launch; 20K+ Registrations

It was time to share the MVP with some users. I captured some great feedback from interviewees but it wasn’t enough. I wanted to sink or swim with confidence and I needed more data. I didn’t know how to get my app in front of more people so I started sharing it with various online communities — including one called ProductHunt.

At the time of FStop’s submission, I saw ProductHunt as just another startup directory where I might get enough of a trickle to validate or invalidate various aspects of the product before figuring out how to formally launch. It turns out that ProductHunt is where you post when you’re ready to formally launch.

The morning after submitting to ProductHunt, I woke up to this:

The post had led to worldwide press coverage which was generating over 200 pageviews per minute sustained over the course of the day. Here’s some of the press FStop received:

You can see a quick overview of the coverage sentiment here.

It was complete chaos. I didn’t even have time to read these articles as they were being published. FStop was breaking because I hadn’t planned for any form of significant growth. Users from outside of the US were having issues, photo uploads were failing, and performance was suffering. My baby was being hugged to death by this precious wave of press coverage — coverage that’s very, very hard to come by. Despite how optimistic and supportive the reception was across the board, what made FStop exciting and innovative had just been covered by my domain’s biggest online publications and was no longer worthy of headlines.

I had accidentally launched, and my creation was stale before it was fully baked.

The mission had shifted from validating to firefighting. The pressure was intense; my creation was getting visibility but it was also falling apart before my eyes. This was the first time anything like this had happened to me and I was suddenly faced with an onslaught of challenges that I had never faced before — technical and otherwise. Above all else I wanted to make sure my users were not frustrated and I wanted to build relationships with them while I had the chance.

After hustling on stabilization I had to quickly figure out how to address quality control and relationship building. There’s no way I could have handled everything alone on top of my day job so I had to delegate.

Quality Control and Customer Relationships

The mission was now focused on managing growth. I spent the next couple days figuring out how the heck to orchestrate a sustainable response to this growth.

The first problem was quality control. Many users were “testing” the platform and were uploading either placeholder photos or completely inappropriate content. I settled on in-app onboarding with more detailed guidance for new users along with a profile approval process whereby users could use only a subset of features until being approved by an FStop staff member. Profiles could also now be reported by other users for being suspicious, unprofessional, or otherwise concerning. The approvals and reports were then handled by an administrative assistant I hired from UpWork. This new process was documented and continuously maintained as we discovered what worked and what didn’t. The quality issue was significantly improved over the course of that week.

The second problem was relationship building. Users were joining and had access to a general support email address but there wasn’t much in the way of a personal onboarding experience. Not only do I want users to experience world-class customer service, but I had hit the exposure lottery and I wanted to extract as much value as I could, as quickly as possible. I ended up building a generic FStop user account that automatically welcomed users with a direct message:

The current welcome message.

This turned into one of FStop’s most important customer feedback channels. I initially handled this messaging but the work was taking around three hours out of my evenings leaving me with little time to focus on growth. I hired another admin to assist with this work — work that was also documented in the form of a customer service workflow with precomposed responses to commonly asked questions. We’d then invest in getting to know our users to capture their needs and impressions of the product. This feedback was continuously collected, analyzed, and triaged into work items for the FStop backlog. We also prioritized follow-ups with users who took time out of their day to provide feedback.

We were receiving consistently positive feedback from the users who were joining — and they were now joining at more of a river’s pace than that of an avalanche. It had become much more manageable to act on the feedback we were capturing. This momentum needed to be sustained though — the mission became focused on “scale”.

Getting to 100K Registrations

The processes supporting customer service and quality control were now stabilized and the feature set and UX/UI were strong. I couldn’t monetize at this point because there weren’t enough active users to make it worth paying for; monetizing would have dried up the river. Growth at this point was also linear and engagement was low due to the lack of volume. I needed to hit a tipping point while I had the chance.

Right around this time a user named Tina had reached out and asked if she could participate. She had awesome ideas and joined up as the first ever FStop intern. Her first priority was something we called “campus evangelism” — bringing FStop onto the Rutgers campus and partnering with student organizations and the university’s Career Services department. The results of our work together were significant:

  • Campus presence — Tina and her team offered photography services to students at career events and to on-campus student organizations.
  • Social media presence — She kicked off an Instagram following along with photo contests that increased FStop social chatter
  • A well-documented, optimized interviewing workflow that yielded hundreds of high-quality interviews on the FStop Blog

I then started experimenting with online ads through AdWords, Facebook and Instagram. It was definitely a shotgun approach to marketing the platform; try as many thing as possible as quickly as possible to determine what works and then refine the successes through continuous experimentation. It was a Darwinist approach.

We were measuring results against two metrics: Raw acquisition and brand value. Things like campus evangelism and interviewing were relatively worthless as far as raw acquisition, but they significantly impacted the overall ethos of the FStop brand. New users would see that we were investing in our users and their exposure. It was all about community and we needed to demonstrate that we took that aspect of our business seriously; we weren’t just an app without soul.

Left-to-right — Keyang, Aden, and Tina hosting an FStop event at Rutgers

Marketing automation was the key to raw acquisition. I built a suite of scrapers and bots that identified folks who might be interested in photography and/or modeling and gave us an essentially endless pool of leads to reach out to with the bottleneck being the cost of emails. The overall marketing automation pipeline — generating leads to getting them into the app — was 90% automated. It had to be. I was running on fumes and didn’t yet have the level of growth that investors would want to see and couldn’t spend more than I was — automation was the only option. We were hitting very healthy conversion metrics: >40% opens, >20% clicks, >5% registrations. Getting to this point took a lot of experimentation. Try a bunch of stuff, see what’s left over, and iterate from there until the optimal tactics emerged.

We also made some adjustments to our target demographics. Instead of catering to just hobbyists, we introduced brand and consumer profiles as well. People could now use FStop to hire models and photographers. Boutique clothing shops could create casting calls for affordable models and photographers. Wedding photographers could promote their services. You could offer headshot services to schools and businesses through FStop. We had a little salesforce in place to cold-call businesses and onboard them into the community.

The brand was maturing along with the product in an incredibly exciting way. But there was a problem — engagement was on decline. Even with registrations increasing, users weren’t sticking around. The mission was now “engagement”.

Building the Feed

FStop was growing up: engaged users were evangelizing within their networks; our interns were killing it with their on-campus and social media contributions; the product itself was fast, usable, and fun. But there wasn’t a lot pulling people back in — it wasn’t addicting.

I then built what eventually became the “FStop Feed” — another area of the application where users could post text or photos to a public feed where it could be “liked” and commented upon. The feed eventually displayed things like Featured Users, Reviews between users, and Casting Calls as well as user-submitted content.

I built this in the name of increasing engagement. My thinking was that if users could share the results of their collaborations with other FStop users, they might be able to form new connections and have more interesting exchanges with users that they otherwise would have never encountered. The whole purpose of FStop is to connect artists; there needed to be more mechanics within the app that facilitated new connections. More than just swiping and messaging. The FStop feed was my attempt at opening up more “intra-networking” pipelines within the app.

This was rolled out and people used it. Comments and “likes” were pulling users in and engagement was now leveled out instead of declining. We needed increasing engagement though.

Building the Mobile Apps

Enter the FStop mobile apps. There were two motivations here: visibility on the app stores and push notifications. It was a new acquisition channel and a surefire way to increase engagement.

At this point my skillset didn’t include mobile app development so this work needed to be outsourced. One lesson I learned in doing this is that you generally want to hire slow and fire fast. I lost about a month and $2k because I hired fast and fired slow. The person I hired seemed confident and professional; her experiences and portfolio were all impressive; she impressed me technically. She was a freelancer though and generally freelancers are taking whatever work they can because mobile dev is highly competitive space. Occasionally they take too much work on and delivery suffers. This is what happened in our case and I saw red flags immediately:

  • Missed deadlines
  • Consistent failure to communicate or fully understand requirements
  • An overall rushed and impatient demeanor
  • Extreme over-commitment and under-delivery
  • Unprofessional communication — sending pictures of her nights out with friends

We were seeing progress but it was slow and lacking in quality. It took me about a month to cut ties and start over. Looking back, it wouldn’t have been unreasonable for me to pull out within the first week. People and their circumstances generally don’t experience dramatic change in the short-term; bailing at the first or second sighting of a red flag may have felt impersonal or wasteful but the costs of not assessing and adjusting early on were crippling. It pushed our mobile app back by a month, cost me time and money, and caused me stress.

I was more prudent the second time around. I asked for multiple references from previous employers based in the US, performed a much more thorough technical assessment, required that they had an app published in the app store that we could evaluate, and set very clear expectations that this was a full-time contract with expectations of sustained full-time productivity. After about a week’s worth of interviewing I found an iOS engineer who to this day serves as one of my iOS mentors. He was expensive, but you get what you pay for.

After over two months, the FStop mobile app was ready for launch with support for brands and consumers along with artists.

Demotivating ROI

My expectations for the mobile apps were:

  1. Engagement would significantly increase due to push notifications
  2. Acquisition would significantly increase due to exposure on the app store
  3. Journalists who had covered the FStop.fm launch would cover the mobile app launches

Reality was a bit different. Engagement increased by a statistically insignificant degree as did acquisition. We got zero press coverage despite maintaining relationships with the journalists who had previously covered us. It was heartbreaking. The web app took about a month to build alone and saw more success than the results of everything we had achieved as a team six months later — hundreds of hours of engineering, marketing automation, process improvements, envisioning, experimentation, networking, advertising, designing, team building, events, etc.

It was really, really demotivating. If the only path to growth was by turning up the knob on marketing automation, I’d need more money. I refused to take out loans and investors want to see monetized products and healthy organic growth before even considering an opportunity. At this point, the mission became focused on cost reduction and survival. I couldn’t keep dumping my paycheck.

Hail Mary

I was a dummy when it came to the mobile app. I should have quickly built a hybrid app that targeted both iOS and Android. My gut told me that my target demographic (visual artists) would have appreciated the visual benefits that a native iOS app offered, and I was unrealistically confident in the app’s ability to attract coverage and succeed. Don’t get me wrong — it was positively received, just by a small number of people:

I was at a crossroads — invest more (heck no) or orphan my baby. Sunk costs aside, I was emotionally invested in this thing. I thought it had great potential and the world was echoing this sentiment. It was so easy to rationalize everything I had done based on its positive reception. It’s an intoxicating feeling. Especially when that validation is offered by online publications with massive audiences.

Pragmatism told me to bail immediately but I had to try something. I applied to YCombinator and was rightfully rejected. I spent a couple hundred bucks on an Android wrapper to get FStop in the Google Play store — that helped a little but not much. I launched a Patreon Campaign to see if we could at least get this thing on life support while I took some time to re-evaluate — this was really masochistic though because it just gave me even more hope, guilt, and uncertainty; people were donating and offering support and ideas. I remember seeing donor notifications and feeling this bittersweet sense of gratitude, knowing that everything about this project was culturally valuable and we were bringing people together to create amazing things, but that it just might not make business sense.

Bittersweet push notifications


It was time. I started automating customer service even more and we cut off interviews. Social media involvement was deprioritized. I reduced the administrative work at the expense of a personalized user experience and let the administrative hires go. Development (aside from critical fixes) was frozen. Infrastructure was reduced at the expense of performance.

FStop is now on autopilot and continues to connect artists from around the world but it’s no longer a business; it’s just a free online community with no plans for further development or promotion. It has some sweet features though:

  • Swiping users and filtering for various criteria like ethnicity, height, location, verification
  • Uploading photos and embedding IG profiles
  • Broadcasting messages or casting calls to users who meet your criteria
  • Messaging users with photos in-app
  • Finding mentors or listing yourself as a mentor
  • Writing reviews on people you’ve worked with
  • Reporting suspicious profiles
  • Sharing your work on the FStop Feed where you can like and comment on others’ submissions
  • iOS and Android apps

Looking Back: Things I Wish I Had Known

This project took about a year’s worth of my nights and weekends along with a nice chunk of change. But it taught me a lot. I saw a need, and I saw competitors that weren’t doing a very good job at addressing that need. I jumped in with a blind sense of confidence in myself and without much in the way of entrepreneurial wisdom. Here are some of the insights I gained:

Analyzing Trends, Competition, and Pain

My competitors’ products were clumsy and inelegant. They weren’t mobile friendly and if they were, they weren’t catered to the needs of my demographic. But their biggest competitive advantage was volume, and that volume is more important than features with this type of product. Model Mayhem was first to market and captured the lion’s share of that demographic before being acquired by a company whose business strategy is to acquire, hold, earn, and defend (fun fact: I was unsurprisingly banned from Model Mayhem for reaching out to their users for FStop Blog interviews). Instagram then sapped it up and — despite the lack of features that cater to my demographic — offered volume. This is why people would rather use Instagram to network than other niche services. Everyone’s on it.

Being able to step back and look at the bigger picture of my competitive landscape in the context of broad market trends and indirect competition would have revealed that FStop can only work at scale, and that I could not afford to get there unless I got lucky. Even investing in this would be risky based on how many people are completely content with using existing social media to alleviate the pain of professional networking in this domain. It’s not a pain that’s sharp enough or pervasive enough to monetize a solution against.

Defining Demographics and Personas

It seems that the nature of semiprofessional photography is a transient one. People are either on their way to agency-level work or they’re experimenting or treating their work as a part-time or hobbyist endeavor. Very few people would pay to connect with others when there are free — albeit less convenient — solutions to that problem. I should have been more disciplined in accurately defining my target personas along with their trends and behaviors.

B2C Costs

B2C is hard. You need lots of conversion and every conversion comes with overhead that a solo creator or small team might not be able to afford. The number of raw man-hours that went into onboarding and nurturing customer relationships was staggering. Given that this type of product only works at scale, and that getting to scale is highly expensive and risky, I’m much more attracted to B2B endeavors at this point.

I like B2C because it’s more relatable; talking about your passion is easier and more interesting when it’s something that consumers touch. But B2B seems to make better business sense, especially taking into account that my only area of true domain expertise is in enterprise technology development.

Domain Expertise

I enjoy photography but I wasn’t a domain expert. Targeting a solution at a demographic that I don’t fully understand meant that I was gambling as opposed to investing. I don’t know what my next endeavor will be, but it needs to be something that I am truly an expert in, or something carried out in the company of a partner who possesses that expertise.

Experiencing a pain and building a solution to address that pain is easy. Determining whether or not your solution makes business sense based on the core nature of your domain and the trends surrounding it — that’s really, really hard. This kind of insight can either be developed over time and at huge expense (for me — thousands of dollars and months of my life), or it can be leveraged in the form of mentorship, advisory, or partnership.

Managing Growth

Posting on ProductHunt was exciting but it also meant that niche publications would likely never cover FStop again. It’s hard to get covered by someone who’s already covered you. And when FStop did get covered, I was reacting to that growth with risky firefighting and improvised processes instead of confidently progressing along an strategically orchestrated growth plan. This was a huge opportunity cost as it meant that I didn’t come anywhere close to realizing the traction potential that this exposure offered.

Being more deliberate in my launch would have saved me time, money, and stress.

Building Hybrid

One of my biggest regrets was investing in a native iOS app. I should have built hybrid. It might be a little less usable but it’s so much cheaper. The cost of evolution is lower with hybrid as well. My rule going forward will be to develop native only if it can be paid for with revenue (and only if the UX demands it).

Failing Fast

I spent way too much time on this. I think I need paying customers within the first month of my next endeavor.

Building Painkillers

FStop was a vitamin; people are drawn to painkillers. A product spreads when it’s so good that it compels people to enthusiastically share it within their network. FStop simply didn’t alleviate enough pain.

Looking Back: Things That Worked

While I made a lot of mistakes, I also think I did some things right.

Doing Things That Don’t Scale

We got our first thousand users by interviewing and personally onboarding people with networks to evangelize to. These kinds of things don’t scale well but they were pivotal in our ability to evolve the feature set and the overall FStop brand.

Documenting Everything

Documentation is pain but it was a lifesaver in the grand scheme of things. Interviewing at scale meant we needed to track each interview’s state, whether or not a follow-up was needed, how far along the publication process it was, the target publication date, etc. The process had to be streamlined and repeatable, especially since the contractors who were handling it were sometimes unavailable or had to be replaced.

Keeping everything documented meant that the work was plug-and-play — the cost of onboarding and backfilling new staff was low. Without it, we would have had to spend hours on every transition. Documentation turned it into minutes. Every process was continually documented:

  • Interviewing
  • Onboarding new team members
  • Campus evangelism
  • Quality control
  • Profile Approvals and Features
  • Relationship Management
  • Social Media Management
  • Intern Recruiting

This also made it easy to step back and analyze the cost/benefit of each of these processes to continuously adjust, optimize, automate, and outsource.


I made heavy use of outsourcing, especially with regard to administrative tasks that were documented and streamlined. This let me focus on strategy, technical architecture, and people.

Keeping Things Simple

Reusing existing code and rapidly prototyping meant that I only had to invest about a month’s worth of nights and weekends into cobbling together an MVP. If I had been concerned with technical perfection or architectural sophistication then I may have spent many more months on getting something together. My accidental launch may have fared better but I also might have gotten stuck in the weeds or distracted by life.

By keeping the technical implementation simple, avoiding perfection, and taking on technical debt, I was able to quickly validate. I was able to add complexity only when needed and at a lower cost; the cost of evolution was much more palatable with a small, simple collection of components.

Aggressive Experimentation

Once the ball was rolling we started aggressively experimenting with new features, processes, tactics, and adjustments to every part of the business. Constantly measuring and recalibrating based on feedback and data was how every aspect of this endeavor evolved — from the product to the team structure to marketing to documentation and everything in between. Remaining agile and responsive was absolutely essential and helped FStop reach its “sink or swim” decision within a reasonable (though much longer than I prefer) timeframe.

Building Genuine Relationships

Focusing on the users and what they wanted worked really well. They became evangelists and provided top-shelf feedback that helped us develop something they wanted. It was expensive, but it was worth it.

By focusing on users at the individual level we were able to ask them for feedback on new features, for reviews on the app stores, and even for help finding other people who might want to join as interns.

In Summary

Bringing FStop to market was one of the most rewarding risks I’ve taken in my life. It taught me how to move forward under extremely tight constraints. It taught me how not to launch. It reaffirmed the value of technological simplicity and imperfection. It taught me how to deliberately take on technical debt. It taught me the value of process documentation, and the value of constantly measuring and improving. It taught me how to outsource, delegate, and automate effectively. I learned about DevOps and technical cost reduction. I learned about PR and relationship management. I learned about bigger-picture thinking, how to critically analyze market trends and define my target demographic along with the personas and behaviors that characterize it. I learned how to say “enough” and let go. I grew a lot through this and although I might be war-torn, battle-scarred and in the red on my investment, my skillsets and perspective took a huge leap forward.

Taking my skillset and applying it to bring an idea to life, and then seeing people from all over the world use it to meet one another and create awesome things… man. It feels good.

Here are some of the photos that we caught along the way — Screenshots of the Instagram contests that Tina launched, photoshoot interviews, some of the photos, and some behind-the-scenes stuff:

Instagram Contests
Photoshoot Interviews
Photoshoot interviews

A user named Natasha asked us if we could take a video of her singing for her portfolio so we took a crack at it:

And here’s a video that Aden (an intern from Rutgers) created:

That’s about it for the retro. It’s been one heck of a journey.

Thanks for reading!