Skip to content

Instantly share code, notes, and snippets.

View hayesdavis's full-sized avatar

Hayes Davis hayesdavis

View GitHub Profile

Research Request: GTM Analysis of {PROSPECT}

Objective

You are an analyst specializing in go-to-market (GTM) strategies. Your task is to produce a data-driven, 3-5 page report in Markdown format that prepares a busy executive for a strategic meeting with {PROSPECT} ({WEBSITE}). This report must provide concise, insightful, and well-supported analysis to inform GTM decision-making.


1. Business Overview

I have a hypothesis that there are too many B2B SaaS products available today.
That fact—even more than AI and the end of ZIRP—explains how hard it is to sell
B2B SaaS these days. I'd like you to research how many B2B SaaS offerings exist
globally.
One indicator that my hypothesis might be correct would be that the number of
SaaS products has dramatically increased over the last twenty years. I need you
to research this topic and try to piece together an estimate of B2B SaaS
products by year over the last 20 years. I'd like to see a chart of how how
that's grown and an estimate of the CAGR of SaaS products.
class Retriable
class << self
def config(&block)
self.new(&block)
end
end
def initialize(&block)
max_attempts 5
require 'grafl'
# Get the root node (assumes you have an access token)
root = Grafl.root(:access_token=>'foo')
# Get the current user
user = root/:me
puts user.name
# Get the user's news feed
@hayesdavis
hayesdavis / blizzard.rb
Created October 19, 2010 17:09
Fun with snowflake
#First tweet on 21 Mar 2006 at 20:50:14.000 GMT (in ms)
TWEPOCH = 1288834974657
#High 42 bytes are timestamp, low 22 are worker, datacenter and sequence bits
SHIFT = 22
# Give it a snowflake id, it tells you what time it was created
# Will fail for very high ids because Ruby Time can only represent up to
# Jan 18, 2038 at 19:14:07 UTC (max signed int in seconds since unix epoch)
def what_time?(id)
##
# Below is a template for implementing the "OAuth Dance" with Twitter using the Ruby OAuth gem in a Rails app.
# Ruby OAuth gem is required by grackle and is found here: http://github.com/oauth/oauth-ruby
##
# Step 1: User clicks "Sign in with Twitter" button
# Step 2: User is routed to your controller action that looks like the method below
def start_oauth
client = Grackle::Client.new(:auth=>{
:type=>:oauth,
:consumer_key=>'SOMECONSUMERKEYFROMTWITTER', # Ids your app. "Consumer Key" on Twitter app page
:consumer_secret=>'SOMECONSUMERTOKENFROMTWITTER', # Your app's secret. "Consumer Secret" on Twitter app page
:token=>'ACCESSTOKENACQUIREDONUSERSBEHALF', # Ids a user. Most docs call this "access token".
:token_secret=>'SUPERSECRETACCESSTOKENSECRET' # Secret for a user. Often called "access token secret".
})
# Setup grackle to talk to flamingo
client = Grackle::Client.new
client.api_hosts[:flamingo] = "http://localhost:4711"
client.api = :flamingo
# Commence talking
# See what's being filtered
client.streams.filter?
client = Grackle::Client.new(:auth=>{:type=>:basic,:username=>SOME_USER,:password=>SOME_PASS},:ssl=>true)
# The ! means POST
client.direct_messages.new! :screen_name=>'hayesdavis', :text=>'testing'
Operation failed with the following exception: Connection reset by peer - send(2)
/usr/lib/ruby/gems/1.8/gems/mongo-0.18/lib/../lib/mongo/connection.rb:503:in `send_message_on_socket'
/usr/lib/ruby/gems/1.8/gems/mongo-0.18/lib/../lib/mongo/connection.rb:209:in `send_message'
/usr/lib/ruby/gems/1.8/gems/mongo-0.18/lib/../lib/mongo/collection.rb:257:in `update'
/usr/lib/ruby/gems/1.8/gems/mongo-0.18/lib/../lib/mongo/collection.rb:179:in `save'