Getting invocation count for Lambda functions

For one of our Software as a Service as a Service (SaaSaaS) clients, we built a serverless Lambda service and charged them per successful invocation.  Each time the service succeeds, we charge; therefore, we wanted to figure out how many times it was successful in order to calculate their bill.  Our service logs the text “Posting response” if the invocation was successful; if you want to get a total invocation count, in the steps below, replace “Posting response” with “END RequestId”.

 

  1. Follow these instructions to export your log data to an S3 bucket under your control: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/S3ExportTasksConsole.html
  2. Run this on your local commandline: aws s3 cp s3://bucket-with-the-export/exportedlogs lambda-exported-logs –recursive

  3. Run this on the local commandline to uncompress all the logs: gunzip -r lambda-exported-logs
  4. Install The Silver Searcher, a super-fast grep-like tool available on most platforms
  5. Fire up the ruby interpreter (type irb on your local commandline) and run this code:

    irb(main)> res=`ag -c "Posting response"`
    irb(main)> res.split(“\n”).map{|x|x.split(‘:’)[-1]}.map(&:to_i).inject(:+)

  6.  You’ll get your total invocation count.

How does the uTask system work?

This post explains how the Code For Cash uTask system works, both from the perspective of a developer and from the experience of a manager.

Manager

If you want to hire a developer from the Code For Cash network, you have a few options:

  1. Join the Code For Cash Slack channel, and post a requirement informally in the chat.  If you want an invitation to Slack, simply sign up for a Code For Cash account at https://codefor.cash/signup and click the link in the Sidebar to join Slack (https://i.codefor.cash/user/configure_slack).
  2. Post the requirement formally by clicking the “Manager” menu in the Code For Cash Sidebar and then the “Hiring” tab.  Within the Hiring tab, you can choose between hiring for a fixed-scope project at a fixed-price or hiring a developer at an hourly rate for ongoing work.

If you post the requirement through Code For Cash, it will be cross-posted to the Code For Cash twitter account, (https://twitter.com/codeforcashbook), it will be cross-posted to the Code For Cash Slack channel, and it will send an email notification to any Code For Cash user whose skill keywords match the keywords in the job listing.

Some managers also choose to have Code For Cash promote their job listing on social media, which is available for a flat fee of $195.  To take advantage of this offer, simply paypal $195 to zack@codefor.cash and in the transaction notes, add the link to your job listing.  We will promote it using targeted pay per click ads on Facebook, Reddit, LinkedIn and Twitter.

Once you find a candidate you like, you have the option of hiring directly, hiring via the platform (we have a built in contract system, managed by DocuSign, wherein your developer will sign a contract that includes an NDA, a non compete clause specific to your product and industry, assignment of intellectual property rights of the work product, and so forth.

You also have the option of using Code For Cash as your escrow agent, which is a way of providing peace of mind to both the developer and to you.  The burden for paying the escrow fee falls entirely on the developer.

However, you always retain the option of circumventing Code For Cash and hiring the developer directly.  It’s up to you… we’re here if you need us, but you’re equally welcome to just leverage our hiring tools for your process.

NOTE:  There are two types of uTasks.  Fixed-price projects with a crystal clear specification, and hourly engagements.

Developer

If you’re signed up for the Code For Cash network, you can bid on any Code For Cash uTask.

  • Browse the list of open uTasks at any time by navigating to https://i.codefor.cash/utasks
  • If you upload a resume or list your keywords at https://i.codefor.cash/user/gig_alerts then you can get email alerts whenever a uTask is posted that has overlap with your skills.  Sometimes developers like to disable email alerts, but you can always re-enable them at https://i.codefor.cash/user/account_settings
  • If you are hired by the manager for a task, then you have the option of working through the Code For Cash platform (letting us manage the contract and holding the money in escrow) or working directly with the manager.  The escrow fee is 30% for non-subscribers and 5% for subscribers.

    Subscriptions cost $25/monthly (or $300/year .. subscribing annually also provides you with a Udemy for Business account).  In addition to lower escrow fees, you also benefit from instant gig alerts for freelance programming jobs, discovered by our bots from elsewhere on the Internet.

 

 

What is and isn’t possible with ARKit (Augmented Reality) currently?

Recently a prospect came to us and asked if we could build an app that would let users preview trying on engagement or wedding rings.

Unfortunately, this isn’t currently inexpensive due to the software limitations of ARKit.

The prospect, still bullish on Augmented Reality, asked us to look into creating an app to simulate wallpapers and drapery on walls.

Unfortunately, this isn’t easy yet either.  Code For Cash coder Serge “buildcode” Boinn looked into this and found this (technical explanation to follow).

“Vertical plane detection” is the technical concept here.  This has not been added to iOS (iPhone) yet, but conversations with an Apple engineer suggest that it is coming soon.  Connect with us on social media to get updates on what is possible using the cutting edge of software technology.

Our coder did add that this may be currently possible, using clever techniques with existing iOS methods, but certainly wouldn’t be cheap – not like the $300 furniture demo that we built.

“SDKs save tons of development time, but there are typically other approaches that involve a ton more work. For rings, for example, there was a video I posted that demonstrated trying on a ring while using a marker on a finger. There might be other ways… Just not a good fit for something quick.”

So: anything is possible!  But somethings may be more affordable and accessible and less risky than others.  Then again, in software development: if there’s no risk, there’s no point (i.e., no risk? no value… no reward).

A year of Code For Cash (Month 12 report)

It’s a year ago that I launched Code For Cash, the freelance programming jobs market.  Those of you who have been following my journey since day 1 know that before we were even “Upwork for programming”, we were just an ebook… originally titled “Code For Cash”, now titled “Software Engineer’s Guide to Freelance Consulting”, and available on Amazon here.

Recap of the book launch:

  • I wrote an outline before I did anything else
  • My next step was building a landing page, unbouncepages.com/become-a-freelance-software-consultant/
  • Then I made an ad campaign targeted to Reddit and Facebook and found that I could acquire signups for $3.50 (reddit) and $7.50 (Facebook).  
  • Once I had 20 signups, I felt confidence there was enough interest in the book.  I spent nearly a month powering through the outline in order to just get the book done, and then I brought in my friend Jay El-Kaake as a coauthor to get us over the line.  

 

In order to promote the book, I relied heavily on Amazon Marketing Services.  I tested over 39 different types of campaigns, but ultimately a search-keywords campaign performed best.

Amazon_Marketing_Services__AMS__-_Campaign.png

Amazon takes 30% of my revenues.  Since the campaign is 27% ACoS, it’s immediately profitable.

Amazon_Marketing_Services__AMS__-_Campaign

Something strategic I did was to lower the Kindle price from $9.99 to $2.99.  This had a few effects:

  • People on Amazon are extremely price sensitive, especially to first time authors.  Lowering the price had an immediate effect on sales, and it turns out that this effect has been sustainable.  Even accounting for the reduced revenue per sale, since we sell more copies, our total revenue volume in greater (in math class they called it “area under the curve”)
  • With the price lower, we move more volumes; through moving more volumes, we get more reviews.  Through more reviews, we get more social proof.  This in turn leads to more sales.  It’s a virtuous cycle.
  • Finally, since we didn’t decrease the price for the paperback, the low Kindle price benefits from an anchoring effect– a phenomenon in psychological pricing literature where having something really expensive makes everything else look super affordable by comparison.   

 

The other impactful thing that I did to promote the book was make a list of programming podcasts and send the creators a mass email, super charming of course, where I invited myself onto the show.  This had a good hit rate, and I did about 10 podcasts this year. The Software Engineering radio podcast expects 60,000 to 200,000 listens over the lifetime, so this exposure was extremely impactful.  Of course, podcast appearances are not good for everyone.  But my voice sounds really good on recordings.  If I were more telegenic I would probably have played to my strengths and done more video, but it’s really not for me.

Ok, so some stats:

  • Amazon Kindle – Sold 2,640 copies this year.
  • Draft2Digital (They distribute to iBooks, BN.com, Nook, Scribd, etc. in exchange for 15% of royalties) – 43 copies in total
  • Direct – 130 copies

Although the book net proceeds totaled less than $10,000, it’s by far the most fun project I worked on.  I loved checking the rankings and seeing where we were – we’ve been in and out of the Top 10 (Programming category) on Amazon all year, which has been fun.  

I created a Slack channel for people who read the book and it started growing.  I realized that there was probably an opportunity to sell additional services to this community, so I hacked together some scripts (scrapers) and started selling monthly subscriptions to reports of freelance programming jobs that we found around the Internet.  This attracted some sales,  especially from people who were already thinking of building their own collection of RSS parsers cobbled together with duct tape, but who wanted a more professional and polished version.  

Note: today, there are more than 500 people in our Slack channel.

Slack_-_Code_For_Cash_and_OutKast_-_A_Life_In_The_of_Benjamin_Andre__Incomplete_

However, time revealed that there were a few issues with this business model:

 

  • Data quality – even after hiring human workers to add meta data to the jobs, let’s face it, data labeling is a tedious task, and it’s hard to balance finding people who will do a good job while still being affordable enough.  We do a bit of a geo arbitrage by having our data labelers be programmers from Mexico and Africa, so that brings the costs down, but there’s still the accuracy issue.
  • Lead quality – realized that the best way to control this was bringing the jobs onto our own platform.  And so, I created uTask… the Upwork for Programming.  If you go to www.utask.org you can post a freelance programming job, and then coders from around the world will bid on the opportunity, with full transparency for everyone.

 

Marketing Funnels

Let’s look at the economics and stats of the uTask business over the past 30 days.

 

Visits to homepage: 3,221
Task poster signups: 121  (3.75%)
Tasks posted: 42 (34.7%)
GMV (freelance coding sales from binding agreements signed on the platform): $3760

 

NOTE, if you look at our economics from the previous 30 days, it’s much improved.  

 

Visits: 3418
Signups: 101 (2.95%)
Gigs posted: 9 (8.91%)
GMV: $645

 

Why the huge improvement?  I have to say it’s because of all the usability testing sessions.  I did at least 10 usability testing sessions this month where I had people use the site and made notes about where they had issues.  If you want to learn how to do a usability sessions, read my article here.  Through systematically documenting and addressing the issues, we boosted funnel throughput (conversion rate) … tremendously.

 

In fact, I still have a backlog of issues to address, for the product roadmap.  But once those are shipped, it’s time to recruit more usability study participants, since this seems like a devastatingly effective tack for us.

 

NOTE:  Usability sessions are how I also boosted the conversion rate on codefor.cash/signup which is the developer side of the freelance programming jobs marketplace.  

 

This past 30 days:

1322 visits to codefor.cash/signup
227 signups (17% conversion rate)

Compare to May..

3954 visits to codefor.cash/signup
65 signups (1.64% conversion rate)

Obviously a huge improvement, and it’s completely attributable to *listening* to user feedback and making changes.

So let’s look at the economics of the biz.  

A visit to the uTask page is worth $1.16 in GMV (GMV for period / total visits for period).  We only capture 1/3rd of the GMV revenue (from non-subscribers)… subscribers pay a 0% commission to us.  So in essence, we can expect about 38¢ in commissions from a visit.  Traffic in our niche costs around 50¢ to 85¢ per visit, so although with Lifetime Value (repeat orders) we might be able to drive traffic profitably with good ROI, I would like to to tighten the funnel and fix some outstanding issues with the website before we pour gasoline on the fire.

 

Misc notes

  • Including my consulting business and book sales, Code For Cash grossed around $190,000 this year in total

  • I have to confess something.  In my usability studies, I started to lie.  I began saying: “I actually didn’t build the site myself, so feel free to give me honest feedback – I’m here as a buffer between you and the development team” and people started giving me actually honest feedback.  Well, I don’t know if it’s a lie.. Technically, I didn’t build the site myself.  It’s a product of a team effort.

Takeaways

  • If you’re a coder, sign up for Code For Cash at https://codefor.cash/signup – you get a 2 week free trial of the freelance programming job alerts, but apply to a job that’s exclusive to our platform(uTask) is always free (with a 30% commission if you get the job).   If you subscribe, the commission goes to $0.

  • If you need to hire a coder, post your task at uTask, https://utask.org

  • One of my favorite things developed on the uTask platform already is this ARKit (Augmented Reality) demo for a furniture store.  https://vimeo.com/244943019   this cost the person who posted the task $300 .. $50 for one coder to convert a furniture picture into a 3d model, and then $250 for an iOS expert to wire it up to ARKit.

 

Let’s have a great year.  See everyone for next month’s report.  

 

How I conduct a usability testing study

One of the easiest ways to improve conversion rate is to do usability testing sessions.  Here’s the format.

 

  1. Post an ad on craigslist, in the Computer Gigs section.  Here is some example text you can use:

    Need_entrepreneurs_for_website_usability_study_-_computer_gigs.png

  2. Use a tool like http://www.calendly.com to schedule participants.
  3. When people arrive, greet them.  Tell them “We’re going to be doing a usability study today to discover issues with our website.  I’m going to show you our website and then I’m going to ask you to do a few tasks.  Don’t worry if it’s difficult – we’re testing the website, not you.  In fact, this is probably the one place today where you don’t have to worry about making any mistakes.”
  4. Warm people up by asking them about their background.  What do they do for work.  Where do they spend time on the Internet.  These are easy questions to warm them up and get them talking.
  5. Open your website in an incognito browser tab.  Ask them: “What is this site?  What can you do here?  Who and what is it for?”  If people have questions, tell them politely that you can’t share any information, because you’re interested in their raw responses.   Ask them to narrate their inner monologue as they browse the site…
  6. Then, have people do the most important key actions to your user experience.  For example: creating an account.  Posting a task.  etc….
  7. Once they’re done, thank them and pay them.

 

It’s that simple.  You should write down their feedback and problem areas as you go.  By the end of each session you should have a few pages of notes.  If you consistently changes to address your challenges, your user experience will gradually improve and your conversion rates will climb.

Code For Cash – Month 10 revenue report

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.

 

My goals:

    • 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.

      2015-07-15-Moat.jpg
      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.

      Done!
      https://gist.github.com/zackster/24f04d1e18754694cd13457f81db7f2b

      The next cool thing to do will be to expose our intelligence through our product… for example, if you type “vue.js” as a keyword, we’ll let you know that we’re also searching javascript/java script/js/vue.

    • 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.

 

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.

 

https://docs.google.com/spreadsheets/d/1hx6LNfJ6PKT4Qh7iJsBNKsBR09DFP43XdnYU4BpXe6c/edit?usp=sharing

 

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!

Online_Chart_Maker___amCharts

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.

Financing growth

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.

Marketing:

$200/month Instagram

$1600/month Blog/Articles

$2000/month Ads

Total: $3800/month

Engineering:

$2000/month Design

$2000/month Job leads improvements

$2000/month Platform improvements

Total: $6000/month

Operations:

$3000/month

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”).

 

ONBOARDING

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.

DESIGN

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:


 

EMAIL

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)

OPERATIONS

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.

MARKETING

24h More entrepreneur/manager marketing to source more original gigs

– SEO links:

Early-stage VC firms
Angel investors
Incubators
Hedge funds
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

MISC

*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?

 

Zack Burt

An AWS Lambda (serverless) implementation of Facebook fastText – text classification

Code For Cash finds freelance programming jobs.  One of our biggest methods is through scraping websites.  In order to match these jobs to our subscribers, we have to apply some labeling.  Currently, we have human workers doing the labeling, but in order to save money, we have to make the move to machine learning.

 

Here’s how I handled the initial migration to fastText:

 

  1. I took the labeled data from our MySQL database and dumped it into a TSV file.  

    mysql -ucfcjobs -pPASSWORD -hOURDATABASE.us-east-1.rds.amazonaws.com cfcjobs -e ‘select * from gig_opportunity_meta’ > gom_table.csv
  2. I wrote a python script to normalize the job ad text (combining title and description), making lowercase, removing punctuation and removing stopwords.  I then outputted one lead per line, prefixed with the labels I already know. 

    (Here’s the script)
    https://gist.github.com/zackster/b9e0cc87df34218ba9d92454c830945b

 

  1. I then ran fasttext to create a model

    /fasttext supervised -input normalized_gom -output model_gom -lr 1.0 -epoch 25 -wordNgrams 3 -bucket 200000 -dim 50 -loss hs

    This created a file, model_gom.bin

 

  1.  I used ec2 to create an Amazon Linux micro instance (free tier).  I then installed git (sudo yum install git), installed a c++ compiler (sudo yum groupinstall “Developer tools”), downloaded fastText and compiled it with “make”

 

  1.  I then used scp to copy the compiled fasttext binary to my local machine.  I moved the fasttext-for-Amazon Linux binary into a folder called lambda.  I also copied model_gom.bin.  

 

  1.  I then installed nltk locally to the lambda directory: pip install nltk -t /Users/zackburt/fastText/lambda  – I also ran nltk.download() to download nltk_data to a local directory.

 

  1.  I then wrote a serverless script that could ingest the job ad text and return a string with the predicted labels.  Here it is:   https://gist.github.com/zackster/649555aa3d4e6d6b046627d93490b0d6

 

  1. Then, fromwithin the Lambda directory, I ran “zip -r ~/fasttext-lambda.zip *”.  This created a zip archive in my home directory.  It’s very important that when you zip up serverless components for AWS Lambda, your zip archive’s root isn’t a folder.  I.e. when you unzip, it needs to unzip the contents into the current directory, rather than a subfolder.  Amazon doesn’t yet play nice with error messages regarding this subtle point, and failing to put your handler file in the root directory of the zip (NOT within a folder in the root directory) will result in confusion.

 

  1.  I then used s3cmd to upload the script to a S3 bucket.  

 

  1. Once the file was up in s3, I created a new Lambda function and set NLTK_DATA=./nltk_data as an environment variable in the Lambda configuration.  I also maxed out memory, since even at scale, we should be on the free tier, and a max memory config will run the function 3 times faster, even considering the fact that 350MB is the maximum memory used by the function.  Just a little tip I learned from ServerlessConf.

 

Et voilà! A text classification SaaS API, except without the need for paying for a 3rd party SaaS!

Providing real value as a middleman

Because Code For Cash is a marketplace between freelance programmers and hiring managers, we’re also a middleman.  There’s a book called The Middleman Economy that discusses a framework for roles in which middlemen provide value.

red-book2.jpg

Here are Marina’s six categories:

  1. The Bridge (reducing physical, social, or temporal distance)
  2. The Certifier (be able to discern quality)
  3. The Enforcer (make sure both parties stay honest)
  4. The Risk Bearer
  5. The Concierge (makes life easier)
  6. The Insulator (taking the heat, enabling self-promotion)

 

In this article, I examine Code For Cash’s opportunity to play each role – from the lens of the hiring manager as well as the freelance developer.  I also suggest a few ways in which we could measure our progress…

The Bridge

IMG_0800

Hiring Manager

Opportunity: Finding personnel to execute a task.

How we measure this: Average time from posting job to finding a good candidate.  

 

Developers

Opportunity: Find jobs for developer.

How we measure this: Average number of opportunities for developer after 2 weeks (increase).  Average number of opportunities per user per month that were declined due to poor match quality (Low-value, not a skill match, miscategorized, bad cultural fit, other) (decrease).

 

Certifier

IMG_0801

Hiring Manager

Opportunity: Conducting reference checks, coding tests, interviews, checking work samples, managing a vouching and reputation system.

How we measure this: What percent of potential projects succeed or fail, but not because of personnel issue?

 

Developer

Opportunity: Check into reputation of client and verifying that client has funds to pay.  Check client’s history with freelancers..

How we measure this:  What percent of projects that start end up with complaint?  What percent of projects result in repeat transactions between developer and manager?

 

Enforcer

IMG_0802

Hiring Manager + Developer

Opportunity: Publishing a Software Grievances forum where developers and managers may post and respond to grievances.  Indicate whether the parties chose to forgo best practices: specification with data inflows and acceptance tests (projects > $2000), reference checks, keeping funds in escrow, independent verification of functionality.  Indicate how the parties were introduced (enable posts external to Code For Cash).

How we measure this: How many views do Grievances posts get?   

 

Developer

Opportunity: Provide an escrow service.

How we measure this:  How much $ flows through escrow monthly?

 

Manager

Opportunity: Provide an escrow service.  Provide an independent verification of functionality service.

How we measure this:  How much $ flows through escrow monthly?  How many projects choose to purchase independent verification of functionality?

 

Risk Bearer

IMG_0803

Hiring Manager

Opportunity: Managing the five core risks common to all software development: irrational deadline, requirements inflation (“scope creep”), spec ambiguity, employee turnover, and poor productivity.  Making sure that all big projects have clearly defined data inflows and outflows as well as a spec.  

How we measure this:  

What percent of projects have clearly defined data inflows and outflows?  

What percent of projects have a spec?

What percent of projects have unrealistic expectations for timeline (this is arbitrary, but possible to judge with human judgment)?

What percent of projects experience scope creep – what percent of projects use a milestone-based scope system, to discourage scope creep (punt changes; force adjustments to subsequent milestones before milestones are underway).

What percent of projects experience a key member leaving the project underway?

What percent of milestones are missed?  Perhaps also–Git integration, tag all commits with milestone id, measure commits toward milestone.  Force breaking up of milestones into subtasks, and measure avg. time for task-in-progress.

 

Opportunity: Finance development with SAFEs.  Developers get paid normal wage; financier (Code For Cash) accepts equity at 2x wage.  For projects with proven/credible ROIs.  

How do we measure this:  How much SAFE funded development flows through the system each month?

 

Concierge

IMG_0804

Hiring Manager

Opportunity: Managing the hiring process *for* you so you can focus on other tasks: take a budget and be responsible for a deliverable; acting like an agency.

How do we measure this:  What is the GMV that flows through the platform?

 

Developer

Opportunity: Apply to jobs on your behalf

How do we measure this:  How much outreach are we performing per week?

 

Insulator

IMG_0805

Hiring Manager and Developer

Opportunity: Negotiating on your behalf, playing “bad cop” in the hiring process.

How do we measure this:  How many people have elected to have us negotiate rates for them?

 

Opportunity: Evaluate credibility of counterparties

How do we measure this:  How many reference checks do we do per week?

 

Conclusion

Which opportunities should we prioritize? If you run a middleman business, where do you provide value? Where are your opportunities? I’d love if you leave a comment! My email is zack@codefor.cash

My YCombinator application: Winter 2018

COMPANY

Company name:

Code For Cash

Company url, if any:

https://codefor.cash

If you have a demo, what’s the url? For non-software, demo can be a video.

(Please don’t password protect it; just use an obscure url.)

Describe your company in 50 characters or less.

Code For Cash matches freelance devs with jobs.

What is your company going to make?

We have software that matches freelance programmers with jobs. We’re bootstrapping the marketplace by scraping all freelance and remote/contract programming jobs that we find on the Internet. Our pattern-matching software applies metadata to gigs (on-site vs remote, full-time, part-time, project-based, etc.), and it falls back to our human data team in cases where the information can’t be inferred. We have one machine learning model (SVMs using uni-,2-,3-grams) but will have more to fully automate this once we have a bigger, well-labeled, structurally sound dataset. (I’m not a machine learning expert, so we leverage a SaaS for our machine learning, but I did take lots of college level math and also know the relevant essentials, such as Garbage In, Garbage Out).

Which category best applies to your company?

Marketplace

Is this application in response to a YC RFS?

No

Where do you live now, and where would the company be based after YC?

(List as City A, Country A / City B, Country B.)

New York, USA / New York, USA

CONTACT

Email address of the founder who is filling out this application:

zack@codefor.cash

Phone number(s):

+1 (917) 754-7298

FOUNDERS

Please enter the url of a 1 minute unlisted (not private) YouTube video introducing the founders. (Follow the Video Guidelines.)

Please tell us about an interesting project, preferably outside of class or work, that two or more of you created together. Include urls if possible.

I’m a solo founder with over 20 years of programming experience who has also worked in sales, marketing and operations.

How long have the founders known one another and how did you meet? Have any of the founders not met in person?

I’m a solo founder with over 20 years of programming experience who has also worked in sales, marketing and operations. NOTE: Throughout this application, I interchangeably refer to Code For Cash as “I” and “We”. Although I am the sole founder, I also benefit from a team of contractors whom I’ve assembled, and so saying “we” is appropriate!

PROGRESS

How far along are you?

I have a bit over $3000 MRR. I also generate revenue from consulting and facilitating billing of projects through our system – highest in a month is about $66,000. For example, instead of writing code for my consulting clients, I find Code For Cash subscribers to do it for them, charge a 5%-10% markup, invoice my clients and then pay the developers. In that way I’m “dogfooding” the app (as a hiring manager). This, however, is not the long-term plan, since I’m essentially subcontracting. But everything I do to facilitate these transactions could definitely be automated by smart enough software and processes, which I am in the process of building. In that way, with good enough software, we could eventually wipe out agencies and recruiters – perhaps even managers! – just through process-driven software.

How long have each of you been working on this? Have you been part-time or full-time? Please explain.

I’ve been working on this part-time since December 2016, supplementing my income with freelance programming jobs (dogfooding the system).

Which of the following best describes your progress?

Public Beta

How many active users or customers do you have? If you have some particularly valuable customers, who are they?

62 subscribers and 14 currently in trial. 59 of the customers are developers, two are hiring managers, and one is a coding bootcamp. The developers pay for the software because it helps them find jobs; the hiring managers pay for a license to the software as long as they are working with a contractor sourced through Code For Cash (if they hire additional developers, they pay for additional “seats” to the software); the coding bootcamp pays a flat fee to provide developer-level membership for all its students.

Do you have revenue?

Yes

What was your revenue in the last full calendar month?

(Please use USD. If none, enter ‘0’)

2750

Your revenue 2 months ago?

2613

Your revenue 3 months ago?

2240

Your revenue 4 months ago?

1640

Your revenue 5 months ago?

980

Your revenue 6 months ago?

180

Anything else you would like us to know regarding your revenue or growth rate?

I showed you our MRR from Recurly subscriptions, but a few of our early customers subscribed with SendOwl, so our actual MRR is about $500 higher (~$3300).

I’m also leveraging the Code For Cash product itself to do consulting work in order to fund development of the platform – for example, instead of writing code for my consulting clients, I find Code For Cash subscribers to do it for them, charge a 5%-10% markup, invoice my clients and then pay the developers. In that way I’m “dogfooding” the app (as a hiring manager).

There are also the book sales: The Software Engineer’s Guide to Freelance Consulting and 30 Days To Your First Freelance Programming Client are both published on Amazon and available for $2.99, selling ~13 copies a day (in the Top 10 – Kindle Paid – Software Development category).

Last month I drastically reduced our advertising spend in order to focus on product improvements but revenue still increased.

How much money do you spend per month?

5000

How much money does your company have in the bank now?

25000

How long is your runway?

(e.g. 5 months)

5 months

If you’ve applied previously with the same idea, how much progress have you made since the last time you applied? Anything change?

Monthly Recurring Revenue has gone from zero to over $3300.

We’ve found five unique customer acquisition channels.

We learned that freelance developers really hate paying referral fees, even if they wouldn’t have found the work otherwise, and would rather pay a flat rate.

We learned that hiring managers vary in their price sensitivity according to how tech-savvy they are: for example, a nontechnical founder is willing to pay a $200/month/developer recruitment fee, but a technical founder would pay one-time flat fee <$200, if that.

We learned that there are more w2 developers in USA than freelance developers due to tax reform legislation that was passed in 1986.

We’ve grown our customer base from fewer than 5 subscribers to over 60 active accounts, and increased our prospect list (e.g. purchasers of our books and mailing list signups) to over 2,000.

We’ve identified the size of the market using top-down as well as bottom-up estimates and identified some key players (in the freelance programming platform market: Upwork, Guru, Freelancer; ancillary competitors: IT staffing firms like Randstad; development agencies like YC-funded Gigster).

We have improved the product from barely a crontab, some ruby scripts, and a mysql database into a webapp with 6 major functional areas, (Preferences, CRM, Portfolio webpage, Training Materials, Share An Opportunity, Search [this is really just Algolia]).

We search 40+ markets for jobs instead of just 10+.

We filed for incorporation and started preparing essential legal documents, started to open a business bank account, and hired a bookkeeper to label all of our transactions in our accounting software.

We’ve grown to understand the importance of culture fit (communication) during the freelancer hiring process, as well as the importance of having a specification/scope of work for freelance projects in order to ensure both parties are successful (we haven’t implemented this, structurally, into the webapp yet, but we will).

We learned that freelance developers immensely care about time commitment when searching for work, and like to search based on a fulltime, part-time, or project-based commitment.

I learned that developers respond very well to transparency, as do hiring managers.

Despite relying on it as a livelihood, freelance developers dislike sales, so creating a “pull” approach to placement (that results in getting matched to a paycheck very quickly) rather than a “push” approach will be adopted very quickly.

The main hurdles for a software development project not getting started are: manager doesn’t trust developer; developer doesn’t trust manager; project doesn’t have a specification yet; manager doesn’t know what a fair price is; developer doesn’t know how to bid the project. (Most of such problems are solvable through the right software).

Developers are willing to take a chance on new platforms and see if they quickly get matched with a project that’s a good fit. So a smarter-matching engine is essential, as is a high volume of projects.

The list goes on…

If you have already participated or committed to participate in an incubator, “accelerator” or “pre-accelerator” program, please tell us about it.

None.

IDEA

Why did you pick this idea to work on? Do you have domain expertise in this area? How do you know people need what you’re making?

I’ve been a freelance programmer for over 10 years (since my Facebook app went viral and was acquired), so I am scratching my own itch (and the itches of my peers). But I have more knowledge than simply anecdata:

I’ve talked to dozens of freelance programmers during this process. This includes email conversations, Slack conversations, phone conversations, and in person conversations. In fact, everyone who signs up for the app gets invited into Slack, and I also man our support chat-widget.

I am in the process of putting together full, formal “Buyers Matrix” (persona) documents for 20 freelance developers and 20 hiring managers and have conducted nine formal interviews already. If I need to talk to a completely fresh (uncontacted) customer, either hiring manager or developer, I can find one who will really talk with me within a day.

I’ve researched the competition in depth, and can tell you how much revenue the top competitors are generating (freelancer itself generates ~$20M annually from software gigs; Upwork, ~$12M from software gigs; Randstad, ~€1.25B).

What’s new about what you’re making? What substitutes do people resort to because it doesn’t exist yet (or they don’t know about it)?

90% of freelance programming jobs travel by word of mouth, so the substitutes are LinkedIn posts, emails to friends, company mailing lists, etc.

Who are your competitors, and who might become competitors? Who do you fear most?

There are online marketplaces like Upwork, Guru.com, Freelancer.com, but they don’t focus on freelance programmers. Toptal has focus on freelance programmers, but they only concentrate on the top 3% of the market. C2C (corporate staffing firms, like Robert Half) do (roughly) ~$6B in annual revenue in this area. My biggest fear is Upwork launching a product that caters to the idiosyncrasies of the freelance programming market.

What do you understand about your business that other companies in it just don’t get?

Freelance programming in USA is limited because of a 1986 tax reform act that targeted developers. Companies were penalized for hiring developers as 1099 workers and are at risk of being taxed as if their hires were w2.

However, in spite of this, the “gig economy” is here and expanding. Some estimates peg the eventual TAM of the Gig Economy at $1.5T, attributing half of that to IT projects, including software.

The software workforce is growing. Although most freelance developers are not Americans (due to the limitations in American law), with the advent of travel visas (such as Thailand introducing a Digital Nomad visa) and the general growth of the gig economy, freelance software development will grow in size in spite of the legislative roadblocks.

Hiring a freelance software developer is currently like finding a taxi: you call up the cab company and hope that they show up on time or if you live in an area with a high enough volume of cabs, you go outside and hope one shows up near you in time. But with the right dispatch system (quickly matching developers to projects that are a good fit, not only technically but also culturally) and the right structural systems in place to make sure the software projects succeed (enforcing best practices for software development), we could become the Uber for Software.

People understand that hiring is broken. Developers hate recruiters, and companies admit that up to 50% of their software hires are wrong. It’s clear that matching needs fixing.

Freelance software projects are a chance for us to get this right, because freelance projects are small and more frequent than job postings, there is a higher volume of turnover – we get more passes through the funnel in order to get matching right. By the time we have developed a system for consistently outputting high quality software projects (with a lower failure rate), we will have a moat on competitors. Analogy: think about the YC application and its idiosyncrasies that give YC a competitive advantage in fundraising…

How do or will you make money? How much could you make?

(We realize you can’t know precisely, but give your best estimate.)

We collect subscription fees from developers and hiring managers. We charge developers $45/month (with a discount for early adopters or multiple licenses, such as in the case of a bootcamp). We charge hiring managers anywhere from $0 to $200/month/developer for the duration of their contract.

We estimate the freelance programming market to be anywhere from $500M to $3B in annual volume currently, depending on whether you include IT staffing in the definition of “freelance programmers”. Intermediary services get away with charging anywhere from 5% to 50%, so our annual revenue could be anywhere from $25M to $1.5B if we own the market. That’s immediately. Freelancing as a market is growing, though… with some estimates of the TAM maturing to $1.5T annually.

Even immediately, however, there are opportunities for us to pivot our matching software into adjacent markets. Prospects have asked me if I could service other freelance markets: video post production, web design, marketing gigs… for now, we are focusing on conquering the software development market before expanding adjacently.

How will you get users? If your idea is the type that faces a chicken-and-egg problem in the sense that it won’t be attractive to users till it has a lot of users (e.g. a marketplace, a dating site, an ad network), how will you overcome that?

We currently have five customer acquisition channels that are effective for sourcing freelance software developers: Reddit ads; Indie Hackers community participation; Instagram (organic– suggests that paid Instagram could work as well); Social media articles; the books, 30 Days To Your First Freelance Programming Client and Software Engineer’s Guide to Freelance Consulting – I estimate 1 in every 200 readers becomes a customer. Using Amazon Marketing Services, I estimate that we can move books at scale for about -$2 net per copy.

The main point to get across is that I’m confident we could scale paid acquisition of freelance developers, although LTV is approximately == CAC, and through product improvements (reducing churn) and normal growth hacking, we are on a mission to move LTV == 3X CAC.

It has occurred to me that some of our users come from referrals from fellow users. So we technically have six customer acquisition channels, including referrals.

However, we don’t yet have scalable systems for acquiring hiring manager customers (aside from networking and referrals– not *scalable*). Although our social media articles (designed to attract developers) are also accidentally finding us hiring managers, (including developers who are, internally, responsible for hiring), we don’t have a system where we can spend $X and ensure $Y hiring manager signups. In fact, we don’t yet have a software product for hiring managers to manage the hiring process… everything is done manually, with me often not charging the hiring managers and working closely with them to recruit a developer to their project, simply in order to facilitate customer learning.

We’re overcoming the chicken-and-egg problem this presents by writing scrapers to scour the Internet for freelance programming jobs, and we’ve written scrapers for about 50 different markets so far.

Currently, the bottleneck is scalable systems for signing up freelance hiring managers, but we haven’t even built software to manage the freelancer hiring process yet, though it will be shipped by the end of October, if not sooner. Now, after many conversations, we know what to build and what aspects are important, systematically addressing the bottlenecks within the hiring process, itself: pre-screening with rubric-based technical evaluations, having a spec, getting the description in front of developers who are well-suited to it in terms of ability and availability, signing developers to NDAs where appropriate, conducting reference checks, and transparently monitoring of the process, for both sides.

EQUITY

Have you incorporated, or formed any legal entity (like an LLC) yet?

Yes

What kind of entity and in what state or country was the entity formed?

(e.g. Delaware C Corp)

Delaware C Corp

Please describe the breakdown of the equity ownership in percentages among the founders, employees and any other stockholders.

Zachary Burt owns 100% – all employees to date have been independent contractors (paid in cash) and not awarded any equity. Once funded, I will hire FTEs with a generous option pool.

List any investments your company has received. Include the name of the investor, the amount invested, the premoney valuation / valuation cap, and the type of security sold (convertible notes, safes or stock).

I have invested about $50,000 into the company already. That’s a rough estimate, since our books are not 100% up-to-date yet, but it’s within the right order of magnitude.

Please provide any other relevant information about the structure or formation of the company.

I’ve been operating as a sole proprietor since December 2016. In August, I filed for a DBA (doing business as) license with New York County. At the end of September (a few days ago), I filed with Delaware to create a C-Corp. Once that is confirmed, I still have to “qualify to do business as a foreign corporation” (legal terms – means out-of-state corporation) by submitting some forms to the New York State authorities.

LEGAL

Are any of the founders covered by noncompetes or intellectual property agreements that overlap with your project? If so, please explain.

No.

Who writes code, or does other technical work on your product? Was any of it done by a non-founder? Please explain.

I write code and have programmed for over 20 years. I hire freelance programmers (often through searching the Code For Cash database) and pay them as independent contractors. I’m capable of personally handling all the necessary tech; it’s simply a matter of scaling my time.

Is there anything else we should know about your company?

(Pending lawsuits, cofounders who have left, etc.)

A few of the freelancers who wrote job scrapers for us did so as independent contractors (you do this as a contractor, I will send you PayPal) but haven’t signed formal work-for-hire agreements. My lawyer says this shouldn’t be a huge issue, since it’s just auxiliary code (like scrapers for additional markets rather than core product code), but going forward, everyone is signing a formal agreement.

OTHERS

If you had any other ideas you considered applying with, please list them. One may be something we’ve been waiting for. Often when we fund people it’s to do something they list here and not in the main application.

I think there’s an opportunity for a service that hires product-inclined software developers to write specifications for software programs: from having facilitated many consulting projects via the platform, I can tell you that projects with well-defined data-input and data-ouput tend to end in success rather than tears. This would be beneficial for the FTE software market/ecosystem as well as the freelance developer market. These specifications could consist of simply wireframes/data flow descriptions, or even possibly automated testing systems (TDD, except the test writing is outsourced).

Please tell us something surprising or amusing that one of you has discovered.

(The answer need not be related to your project.)

Most programmers work as w2 rather than 1099 employees because of a 1986 tax reform act that threatens to (at the IRS’s whims) tax employers as if their 1099 programmers are w2 employees. Congress suspected that programmers were using their companies as tax havens, but studies show that programmers are actually more scrupulous than average when it comes to IRS reporting. The freelance programming economy is growing in spite of this (since software is eating the world), but many companies have an institutional memory from this 1986 law (which is still a threat) and prefer w2 or c2c arrangements.

CURIOUS

What convinced you to apply to Y Combinator?

The apply for w18 email reminder.

How did you hear about Y Combinator?

Alex Rampell told me about you in 2006.

Cost to Acquire a Customer (or “Cost of Customer Acquisition”) explained with real world examples and real numbers

One of the best ways to grow your business is by acquiring more customers.  If you solely grow through extending the value you get from your few customers, you run the risk of becoming a captured company.  We see this at a micro level where independent contractors with one golden goose client forcing them to convert to W2 employees.

If you know how much it costs to acquire a customer, and you know your customer lifetime value, you can then make the rational decision to invest in acquiring customers because you’re going to make the money back over the lifetime of your business relationship.

Of course, the formula is a bit more complex than “if LTV > CAC, invest heaps in customer acquisition!”.

For example, there is also the cost to deliver the service to the customer.  And there is the cost of capital to acquire the customer.  So therefore, VC firms have the golden ratio of 3+ as LTV/CAC ratio.  But VCs target 30%+ IRR on their portfolios.  If you are working with a bank having cost of capital around 10% – 20%, you may be able to get away with a lower LTV/CAC ratio.

So how do you calculate Cost of Customer Acquisition?

You take the amount you spent on marketing during a given month and divide it by the number of new customers in that month.

Let’s take this business, Code For Cash, as an example.  In August 2017 we had 17 new customers.  What were our marketing expenses?

Facebook ads – ($390)
Reddit ads – ($112)
Amazon marketing services for our ebooks Software Engineer’s Guide to Freelance Consulting and 30 Days To Your First Freelance Programming Client–  ($2000)  with $1260 in ebook royalties so ($740)
Freelance blog content – ($600)

Total: $1842

$1842/17 customers = $108 to acquire a customer.  According to this analysis, $108 is our CCA.

Unfortunately, this is too superficial an analysis to have any value.  The truth is, marketing programs pay off in months.  You would also have to look at my marketing spend for July, June, May, April, March – and the customer signups – to get greater accuracy.   Not only that, but I am probably forgetting lots of other relevant costs: SaaS programs used to automate the marketing, freelancers hired here and there for miscellaneous tasks, etc.

So, let’s get more accurate data:

Looking at the preliminary report from our bookkeeper Jamel Salter our marketing spend for the past few months is:

Sep Aug Jul Jun
2,419 3,641 3,680 5,661

Totaling $15,401

If we credit the revenue from Amazon royalties, approximately $4500, that’s $10,901 in marketing spend.  We added 31 customers over that time period: customer acquisition cost is actually higher than our preliminary estimate, at around $350.

Strategy for lowering customer acquisition cost

What does it take for someone to become a customer?

They have to:

A) Learn about our business (visit our webpage)

B) Sign up for a free trial

C) Convert their free trial into a paid subscription (establishing themselves as a customer)

Note: for the purposes of calculating CCA, only people who make it to stage “C” count.  However, people in B and A should be treated as customers – prospective customers, that is.

So in order for us to lower our customer acquisition cost, we need to: educate people on our business for a lower cost; improve our webpage so that more people sign up for the free trial; and do a great job during the free trial so that more people become paying customers.

What are some concrete example tactics?

Educate people on our business for a lower cost

  • Rely more heavily on content marketing, posting it on social media without promotional fees.  This article is an example.

Improve our webpage so that more people sign up for the free trial

  • Improve the design of the page so that it signals high quality
  • Remove the credit card requirement from the trial signup

Convert more trials into paid subscriptions

  • Aim for a 0% defect rate – 0 errors raised per customer
  • Measure # of gig opportunities available for user immediately: add additional markets to the database; write content that is also aimed at acquiring business customers (who will submit original gigs to the network)

My hypothesis is the highest impact things we could do would be to remove the credit card requirement from the trial signup, aim for a 0% defect rate through automated testing of key customer workflows, and adding new markets.  So that’s what’s coming up on the product roadmap!