If you work for any type of organization, you’re probably dealing with customers of some kind. Whether you’re a startup founder trying to sell a juice-machine that’s just a $400 bag squeezer, making up to €2000 a day hiding the ace of spades, or a legitimate tiger smuggler/girl scout/priest/Etsy-dad, you’ve probably found yourself asking “how on earth do I connect with eccentric billionaires/neighborhood grandpas/catholics/stuffed-moose-lovers?”
All of the above descriptors are just simple demographics, and you learn more about them by creating user personas: a representation of your target customer based on needs, personality traits, and behavior patterns. Creating these hasn’t been an exact science in the past — it takes a lot of time, qualitative research and guesswork. If you do it right, it’s a great step. If you do it wrong, though, you’ve spent a lot of money and are headed quickly in the wrong direction.
So how, pray tell, can you make this better and help you be more confident in understanding your customers? It’s actually pretty easy. In this article (which Medium says will take you 9 minutes to read) you’ll be leveraging IBM Watson’s Personality Insights Platform and building a pretty simple Node.js program to send and receive data on who you’re trying to profile. The Personality Insights platform returns a lot of data, like the user’s Big 5 Personality Traits, Needs, Values, and consumption preferences to paint a complete personality profile. For a better understanding, check out the linked articles — they’re dead useful and provide a scientific way to understand someone’s personality.
Using the above, you’ll be able to properly populate a buyer persona with insights that help craft copy and imagery to better target the people you’re hoping to sell to. For the purposes of this article, you’ll be profiling the enlightened Gary Vaynerchuk. For those who don’t know, Gary’s a pretty prominent figure in the entrepreneurial world — and has a very interesting personality. Love him or hate him, our program (hopefully) will help you better understand who he is and what he values.
JINN developed this process to learn about our unknown market. Our team started as a bunch of college grads, with little-to-no sales or marketing experience, setting out to learn as much as we could about our target demographic. While great in theory, this strategy revealed a pretty huge conundrum — how on earth were we supposed to determine the best way to market to a CIO of a Fortune 500 company when we didn’t know these people ourselves? After all, a B2B sales strategy is only as strong as the first B’s network.
Advertising, sales and marketing are no longer the dark arts of the 60’s and 70’s. You no longer need Don Draper types to come up with a perfect jingle, emotional TV advert, or stunning subliminal message campaign, for two reasons. First, what we lack in panache and foresight we can make up for in sheer outbound volume. In 2017, 90% of all digital growth in the advertising business was owned by our internet overlords, also known as Googbook and Facegle. The second reason is due to the rise in technical innovation — a recent study found that about 48% of all vendors were using some form of data analytics framework to improve one aspect or another of their marketing and sales processes. You’ll be doing the same in about 6 minutes.
The first thing you’re going to need is an IBM Cloud Account — this will give you access to Personality Insights, a service under IBM Watson AI. Make sure to note your service credentials, and you should be ready to go. You’re going to be using Node.js for this project (all the relevant files posted below will also be in Node), but you’re more than welcome to use any of the other Watson SDK’s to develop them in a language of your choosing. This tutorial expects a little bit of prior programming background, but feel free to take the Github code and edit it to your liking (and suggest improvements!).
Setting up IBM Cloud
Once you have signed in, click “catalog”, select “Personality Insights” and pick the plan that works best for your needs. The “free” account allows for 1000 API calls per month, which should be more than enough for what you’re trying to do. If you need more, it’s a pretty small cost per call (most expensive is $0.02 per call). If you’re a student, check to see if your university pays for this access.
Getting started with Node
The first thing you’re going to want to do is pretty simple — navigate into the directory that you want to work in, and run
npm i watson-developer-cloud -save in the terminal to get everything started. Make sure that you set the project file up the right way!
The first thing that you’re going to be building is a bit complicated to understand: our goal is to be able to paste a speech or article excerpt which someone has written and let the program tell us something about the author. As you can probably tell, our dear Watson has this feature built in — all you have to do is ask it nicely.
To start, you’re going to get a couple housekeeping things out of the way — you’re going to want to read the text in through the terminal using
readline, which helps do exactly what it sounds: read input through the command line. I’ve also added a module that helps you write and export CSV output, so you can keep a record. Last but not least, the
auth variable lets you keep credentials handy. Make sure that you replace all instances of
"XXX” with your own.
Sweet. Now that that’s done, let’s look at the meat and potatoes — this is where you’ll be asking the user for an input, submitting to the API, and then printing out the response from the server. The first thing is to tell the program to create the interface that feeds in the inputs you give and spits out an output — for more information on how this works, check out the
Now it’s time to submit the parameters to the API. This is pretty simple, as you just take the user input and submit it according to the documentation outlined here.
Here’s what you should have so far:
The last piece is the output. My code is a little complicated for those without a programming background, so I’ve commented out the different pieces that aren’t strictly needed — a lot of it is dedicated to writing the response out to an outside file.
Here’s the finished product, with comments:
…and there you go! Now you can go ahead and actually use it to analyze something. To be statistically significant, pick something with a word count higher than 600 — this can be a string of tweets (I’ve included a scraper in the repo, posted here) or an essay (pick one as personal as you can), for example. I’m using one of Gary’s latest posts, found here.
Now, you clean the article of any line breaks or weird headlines/photos- you can use this version of article (cleaned) in a text editor. Feel free to just copy it, even though data-cleaning is character building.
Next up, use your terminal to shimmy into the directory that contains your file, and run
node ./'filename.js’ where ‘filename.js’ is what you called your program. Go ahead and paste the transcript of Gary’s article.
Woah! The true response is super long, but I’ve included a couple snippets below (the last one should be of particular interest to you):
Pretty cool, huh? You can find the full output here. I’ve also included another program in the repo that you can use to get a much more condensed summary of someone’s personality assessment, which is found here. When you submit the article to this service, it gives a more interesting (albeit more sinister) response.
Creating the persona
If you take a look at the full JSON output, there’s a lot that 1338 words can tell you about a person. Obviously, the program is going to get more accurate with more sources pertaining to a specific individual, but this is pretty good already. The response_summary I posted above shows just how much. If you’ve ever heard Gary speak, it’s pretty clear that he espouses all of the above characteristics. For a comparison, here’s Hillary Clinton (source here):
Now, I don’t know Mrs. Clinton personally, but I’d bet all my student loans and credit-card debt that this is exactly how she wants to appear.
You can also use it to make it a user persona for our good friend Garyvee:
Strengthening the persona
Look — any marketer worth their skin will tell you that this, directly, is a really stupid way of creating user personas, and by itself it’s incredibly unhelpful. “What good does it do to just create a user persona for one person?”, they’ll say.
The way to take this one step further is to leverage the power of aggregation — you first find a demographic (say, doctors aged 28–35, fresh out of residency), and find multiple people that fit that profile. Take their tweets, their medium articles, their FB comments, and run them through the program you just created, and aggregate them (there are a ton of scripts online on how to aggregate JSON outputs and organize them), and look for commonalities. If 8/10 of the doctors you tested all tested “1” for “Likelihood to be influenced by social media” you can be pretty sure you’re going to have to bolster your social accounts (or at least hire an intern to manage them, you slacker).
We’ve been pretty successful with this approach here at JINN. Our emails are more targeted and have higher open and reply rates, we’re able to go to sales meetings more prepared, and we’re more in touch with our customers. Pairing persona analysis with Hotjar, Instapaper, or Google Analytics can give you insight on how and where to change copy and imagery on a website, what types of ads to serve on Facebook, and what kind of openers to use when cold-calling.
There’s a slew of interesting (and potentially controversial) conversations that can come up as a result of what’s written in this essay, ranging from privacy to business/technology ethics. I won’t divulge too deeply here, but it took me (and the rest of the team at JINN) a while to green-light this article based off of these concerns. I’m not here to police you on the ethics or morality of programs like these, only to show you what the practical applications of the technology are. What and where you go with it are completely up to you. Happy Coding!