Machine Learning
Let’s build an app. And we’ll use machine learning to make it better.
What’s the app?
It’s called decode. It connects freelance designers and developers, so you can work on fun projects together.
Introducing Marie, a designer from Barcelona. She heard a friend talking about Decode and thought it might be helpful.
Model
But first we need to feed this model! We’ll be training our model to show Marie developers who are the right fit.
Metrics
We want Marie to have a really good experience. What’s good? We determine that a good measure is showing a developer she wants to send a message to.
Multiple options
When Marie opens Decode she sees 3 new developers. We add a little context for each, one is good at javascript, one lives nearby and the other has an interest in design.
Learn from selection (implicit feedback)
We notice Marie consistently picks the developer who lives in her timezone. So we make sure to highlight that option each time.
Attributions
Marie doesn’t really know how we pick developers, it’s a black box to her. So let’s explain! Rather than just showing a list of developers, we title the list with something like “Developers in Barcelona” or “Because you are based in Barcelona”, or “Based on other developers you have messaged.”
Confidence
We can’t be certain we are showing the ‘best’ developers. Rather than saying something vague like 67% match, we could tag a developer with “Best Match”, or “Most Compatible” or “Top 10%”.
Calibrations
To calibrate the system, we might ask Marie a few questions like — What is most important to her? Or what programming languages does she know? We allow her to update these preferences at any time, but we are careful not to bombard her.
Implicit Feedback
As Marie clicks, messages, and interacts with developers, we are gathering implicit feedback. If our model is working, she should be sending lots of messages, and will be satisfied with the system. If the first thing she does every time she opens the app is to check her inbox, maybe we show that first! But maybe don’t show developers based on certain phrases she’s typed. It’s crucial to maintain trust and respect privacy.
We notice that Marie (and our other users) send lots of links back and forward with each other. Maybe we create a new feature that pulls out ‘important’ links into a bookmarks section, for quick and easy access.
Explicit Feedback
Well, what if those bookmark stories aren’t relevant? Maybe she sends lots of silly, non-work related links to a developer named Ryan. The feature is useful for her other conversations but not from Ryan. Could we ask Marie directly if she wants to see them? We could provide an option that says “show me less from Ryan.” That’s pretty clear. Or is it? Marie are you still there?
Is this a good app? No.
But one thing is clear.
Machine Learning has changed design forever.