Last month, things were bad at our little company that matches programmers to freelance software jobs.
Revenue was down.
“If you’re not growing, you’re dying.”
We were dying.
Last month, I threw down some modest goals, and said that if I achieved them, I would consider the next month a success.
I didn’t want to reach too big – I wanted to keep things doable. Sometimes, you really need a win, even if it’s a small one.
- Add 12 new markets to our regular search.
Done! adzuna, beincrypto, betalist, careerbuilder, careerjet, cybercoders, goremote, indeed, jobisjob, randstad, reed, rubyjobs.co.uk, simplyhired.
We’re now up to 45 software development markets total that we automatically monitor for our customers.
Get it? We’re gradually building a moat. The big picture value here is that although Code For Cash is a tool that a lot of programmers have already built for themselves, for example using a mashup of RSS feeds and some personal scripting, we’re making the product better and better so that “buy” clearly outweighs “build” in a “build or buy” analysis.
- Ship a better job matching engine.
- Be able to click a button and initiate intelligent outreach to a job lead.
We now have a system where you can write blurbs about your experience using a given technology, dynamically generate cover letters, tweak them as necessary, and send to job postings.
- Add 12 new markets to our regular search.
We achieved those goals. Sometimes setting modest and achievable goals can be a growth hack that propels me into greater productivity. The wins compound into momentum.
So, how did that momentum manifest?
We totally changed up the funnel: the two week free trial no longer requires a credit card – users may sign up with an email and nothing less.
This had a huge effect on conversions –
Previously, we required paying upfront (no free trial). The page converted at 0.1%.
Then, we asked for a credit card up front, but promised not to charge unless they canceled before two weeks. That boosted conversion rate to 0.2%.
But now, having a no credit card required, 100% free two week trial has boosted our funnel an additional 50%– conversion on the page, from unique visit to paying customer, is now at 0.30%!
(We also cleaned up the design on the landing page, which may have had some impact).
If you’re curious at checking out how I measure my funnel, I do it in Excel. Measuring how prospects progress through the stages helps me get an intuitive feel of what’s going on.
Anyway, insofar as revenue goes, things are moving in the right direction. Slowly.
Revenue for month 10
Recurring revenue: $3,400.00
Total Revenue, including consulting revenue: $10,580
Compared to last month (Total revenue: $9,705.43; Recurring revenue: $2,919.0), we see 16% M/M growth in MRR, okay!
If you’re interested in how I make the non-recurring revenue, it’s through consulting. If you know how to program on your own without supervision, you’re capable of doing that too. Jay El-Kaake, Richard Burt and I coauthored Software Engineer’s Guide to Freelance Consulting. We sold about 337 copies this month.
I may never have a #1 rap album, but Software Engineer’s Guide to Freelance Consulting is currently #11 in Kindle Store > Kindle eBooks > Computers & Technology > Programming > Software Design, Testing & Engineering > Software Development.
Anyway, for me, this 16% jump in MRR begs the question, is this MRR growth sustainable and repeatable? If we were to grow next month at this rate, at the end of next month we’d have $3944 or an extra $540 in revenue. That would require signing up an additional 12 paying subscribers..on average of one every other day. Two days from now, it should be clear whether we’re on track or not.
Taking a look at the marketing funnel spreadsheet (https://docs.google.com/spreadsheets/d/1hx6LNfJ6PKT4Qh7iJsBNKsBR09DFP43XdnYU4BpXe6c/edit?usp=sharing), you’ll see that 0.3% of visits end up converting. So in order to attract 12 subscribers, I would need 12/0.003 = 4,000 unique visits to the landing page. Honestly this is completely unlikely; 2000 organic visits in a month is typical. With this, my expectation would be 8% monthly growth…
In the marketing funnel, I have a whole list of improvement ideas for various parts of the funnel, but I’d also love to hear your impressions or ideas. The cool thing is that there are clear ideas for improving conversion rates at each segment in the funnel, and it’s really intuitive how to do that – the only challenge with this approach is that we could potentially end up at a local maxima, but I’m trying to force myself to believe that because I’m exhausted from the endless grind of finding and removing bottlenecks. We need to continue moving forward.
Improving the business engine
One of our biggest expenses is data labeling. If I wanted to sell Code For Cash (or shares in it), I would have to think realistically about valuation – Code For Cash is not a “hot” company at present and would not enjoy a 100X MRR valuation. Instead, 36 times monthly profit is more likely, given its size and growth rate.
According to this interview with FE international, small SaaS companies (under $80K MRR) sell for 3 to 6 times Seller Discretionary Income. So Code For Cash would conservatively be worth 36 * monthly discretionary income.
So, 3400*36 = $122,000 … but that assumes we take home 100% of revenue each month.
We don’t take home 100% of revenue.
The biggest non-essential cost is data labeling, probably $2000 per month. That leaves us at $2200. And $130/month for Heroku, $60/month for AWS, $80/month for DigitalOcean, we’re down to $1930. Then a few marketing services and other SaaS products brings us down to about $1800 (which I’m currently investing into improving the platform, so I don’t actually see that money, but for the purposes of our analysis, it might as well be there).
So $1800 * 36 = $64,800
But what if we could use machine learning to decrease data labeling costs to $1000?
$2800 * 36 = $100,800
Gotta love technology!
So, my initial approach to this involved finding a SaaS text classification solution. I investigated various options: Aylien, MonkeyLearn. Unfortunately, neither met our needs in effectively reducing our labeling costs. But I did find a solution from Facebook called fastText (https://github.com/facebookresearch/fastText) with a simple API and an easy getting started guide.
So I decided to go through the Code For Cash data, prepare it for fastText, and then bundle it up as a serverless AWS Lambda program.
The business value question is how many tasks per month will this reduce? Well, we still have some measurement to do in so far as accuracy before we fully deploy a machine learning solution to production. Going to start from scratch, re-train the model on the first 80% of the data set, and test on the last 20%.. So check in next month for an update on that.
I’ve been taking a class called Venture Deals – https://www.kauffmanfellows.org/online-course-venture-deals/
It’s been helpful. Our first assignment involved finding VCs to pitch, and I started thinking about that it in a totally new way. I made a list of VCs that have funded NYC-based developer tools SaaS companies in seed stage deals. Extremely specific targeting. I’m working my network in order to get introduced to these targets.
In the process of raising money, I put together this presentation – https://docs.google.com/presentation/d/1v_foBnUA-9lNjsh44WHORpojMUYhbXOuJ1fl8Q2nN40/edit?usp=sharing – it’s a work in progress. It would probably be much improved through a round of iteration from our designer. And telling a more compelling narrative about how we will capture a valuable market… feedback definitely welcome.
$250,000 would be a good amount to raise. Why $250,000? It’s really arbitrary. I picked an amount that we could deploy safely, using proven channels, that would definitely improve our business.
$2000/month Job leads improvements
$2000/month Platform improvements
Total: $12,800 – so $250,000 would provide us with about 18 months of runway.
Of course, I have to also assume that VCs aren’t just playing mind games with me through their total failure to level with me, and they actually aren’t interested in funding us – in fairness, the company is “rationally” worth what, $64,000 at this point? And hope is not a strategy – so therefore need a backup plan.
One tractable approach involves a company called Lighter Capital that offers revenue-based funding. They will fund you up to ⅓ of your ARR (annually recurring revenue). And more importantly, they work with business entities rather than requiring you to personally guarantee the loan. However, they don’t work with companies doing less than $15,000 monthly. So, I would need a plan to bridge up to $15,000 – how could I do that in the least expensive way possible?
We need about $11,600 in additional MRR, about 260 new developer subscriptions. While we could potentially sprint there through marketing spend (limiting ourselves at 41¢ CPC, ⅓ of projected LTV), I feel like to do so would be unwise. At this time, there are clear improvements that could be made to the marketing/onboarding/activation funnel:
(This is a transparent look into how I manage my tasks. The time estimates factor in the high switching cost to wearing multiple hats and also help me decide where would be best for me to delegate. Every time I review, I decide: “do it now”, “delegate”, “don’t do this”, “do it later”).
4h Bugfix CV edge cases – .doc files and .pdf documents
2h Strip non-essential fields from onboarding flow (is this essential to this person finding work?)
2h Cache Prospect data to prepopulate keywords in new User Profiles.
1h Can we skip onboarding entirely if they have prospect keywords array? Think about this.
0.5h Ask designer to redesign Prospect (job leads count widget) experience
4h Speedup prospect search through Algolia implementation:
– Script to remove records from indexes if created_at > 1.month.ago
– Algolia block in ActiveRecord model for GigOpportunityMetum
– Frontend (SalesController) calls out to Algolia instead of iterating through
16h Design onboarding tour
User should move directly from onboarding into tour
“Here’s our Slack channel. 90% of freelance jobs travel through relationships and word of mouth. Chatting in Slack is actually professional networking. And, lots of gigs trade in Slack.”
“Here are internal requisitions: companies that have came to Code For Cash and asked to hire a freelance designer. We’re still building this system, so if you have questions, feel free to ask.”
“Here are gigs for you that we found for you on the ‘net. You can use Code For Cash to apply to them with smart templates”. -> TOUR for this
“Click “apply via CFC”
“Annotate your keywords so you can pre-populate these outreach emails”
“Send your message”
8h Improve job system UI/UX – new design is ready. Currently waiting on CSS changes. Preview:
6h Join us in Slack reminder email (“90% of freelance jobs still trade through word-of-mouth networking”) to people who haven’t.
5 days after signup, -> email scheduled after account created
Send actual email if user hasn’t set Slack id.
2h Job system education email to people who haven’t used -> encourage users to make annotations of above-market ability
3 days after signup, -> annotation tour email
unless GigOpportunities.any?(ignored || applied)
16h Add 15 additional crawlers to find more jobs
20h Use machine learning models to reduce human task labeling costs. If the machine learning models for time commitment, onsite/remote, or employment type are 95%+ confident, label immediately. If data from all 3, skip human labeling.
4h Add “Email me about new gig opportunities: Never, Instantly, Daily Batch”
Email should contain deep link to Apply via CFC
1h Add Confirmation popup to Cancel subscription link.
24h More entrepreneur/manager marketing to source more original gigs
– SEO links:
Early-stage VC firms
1h Screenshot of microtask action (Slack channel) on homepage, superimposed in laptop
12h Introduce “Concierge” level service
– Account Settings page should toggle between:
Level of service (with explanation of different benefits)
Redesign signup page
*Remove “Preview” from cfc_outreach view*
Add hover notice to keywords to show off our intelligence (e.g. User types “rails” -> We say “we’re also searching ruby and ror”)
Anyway, once all of this is executed (and that’s my plan of what to get done this month!), then it could be time to revisit investing personal capital in buying traffic. Or, perhaps, Venture Capital.
For now, we don’t need it.
This todo list is emblematic of a long term vision of Code For Cash. In a perfect world, I could copy/paste it into our service. Suddenly, I would receive competitive bids for each feature change. And a developer could hop on, do the work, and get paid in cash.. right away.
I’d like to see that. Would you?