Case studyProduct design, 0 to 1

SideDoor: A referral request built to be answered

Referral DMs to strangers mostly go unanswered, and the candidate never hears back. SideDoor is an iOS app that turns the DM into a complete, proven request, and shows both sides where it stands. I designed and built it: a working prototype, plus a Chrome extension that fills the company's portal.

Role

Product designer, solo, self-initiated

Timeline

6 weeks

Platform

iOS app, a Chrome extension, and a web page for strangers

Tools

Figma, FigJam, Claude Code

Watch the prototypeOpen every screen and stateSee the Chrome extensionSee the research boardSee the deck

The problem

A referrer asked by a stranger has to chase the job ID, the date of birth and the career gaps before they can refer. Most don't bother, and the candidate never finds out.

What I designed and built

A request that carries everything the company's portal asks for, fit shown skill by skill with the line that proves it, and a status passed back in one tap. Plus a Chrome extension that fills the portal from it.

Why it matters

Referrers are the scarce side of this marketplace. If each request takes them minutes, more get submitted, and that is the number I'd judge it by.

The prototype, on video

I know your time is short, so here’s the whole app in four minutes.

If you’d rather watch than read, this is the quickest way through SideDoor. Abhinav asks for a referral on the left, Nithin gives one on the right, and each step one of them takes shows up on the other’s phone. It’s recorded from the working prototype, so what you see is what the app does.

Abhinav, askingAbhinav hasn’t opened SideDoor yet
Nithin, referringNithin, a design manager at Flipkart, opens SideDoor to post a job

Want to use it yourself? Open the prototype, with every screen and state.

Act 1The problem

Ever asked a stranger for a referral and heard nothing?

Samarth has. For a role at Razorpay they messaged two or three people on LinkedIn, with a formal note and a resume. "My message was not even read."

The other side

Referrers skip strangers because of the admin.

Riya refers people at Accenture, and Samarth at Infosys. Neither worried about a stranger turning out badly. What they described was chasing details: a job ID, a date of birth, the gaps in someone's career, then typing it all into the company portal by hand.

"they don't share the job ID, which irritates me a lot... I will not take the pain and go and check for it"

Riya, as a referrer

"having to constantly ask candidates for additional details, as many assume that just sending a resume and phone number is enough"

Samarth, as a referrer

Eight interviews, 162 notes, five clusters. See the whole research board, from the business lens to the tests.

The candidate

And the candidate reads silence as a no.

Nothing comes back, so they guess. The same people, asking for referrals themselves, described it from the other end.

"You can say 80% of the time they don't reply."

Riya, as a candidate

"I would never know what actually happened. If they ever applied in reality or not I'm not sure."

Riya again

The limits

I can't see inside a company's portal, and neither can LinkedIn.

So the status has to come from the referrer, and the request has to carry what the portal will ask for before anyone opens it.

What I had to work around

  • Nobody outside a company can read its referral portal. Not LinkedIn, not me.
  • Signing in with LinkedIn gives a name, an email and a photo. No work history.
  • Four people, each seen from both sides. Anything only one of them said is marked as one.

How it's different

Job apps help you apply. SideDoor makes a referral easy to give.

Three things no other job app does.

Complete

The request can't be sent until it has everything the company's form needs

Proof

Each matched skill links to the line in the candidate's work that shows it

Answer

Referring ends with Mark as submitted, so the candidate always hears back

Act 2The design

A request that arrives ready

Abhinav, a product designer at Blinkit, wants a job at Flipkart. Nithin, a design manager there, refers for it. They're sample people. The phone screens are from the Figma file, and the browser screens are from the working extension.

Scene 1Finding a job

He only sees jobs where someone will refer him.

How does a candidate know which ask is worth making? Each card says who refers, how well he fits, and whether that person is full this week.

Jobs with someone who refers

no cold DMs to guess at

Full this week

said up front, not left to silence

Jobs: three jobs, each with the person who refers, a skills match and a shared background tag.

4 of 7 skills, before he asks

and what he shares with Nithin

Scene 2Before asking

He sees how he matches, and what asking costs him.

Why spend a request on a bad fit? A skill counts only when his work or resume shows it. He gets 14 requests a week, so each one is a choice.

How you match

found in your work, related, listed only

Job details: How you match, with skills found in his work, related skills and one listed only.

Uses 1 of your 14 this week

referrers answer because each one is chosen

Scene 3Asking

Flipkart's portal needs four things his resume doesn't have. He adds them once.

How does the request arrive complete? It won't send until it is. The details the portal asks for are saved for his next request, and he says whether he was referred to Flipkart in the last six months.

Still needed · 4

asked once, saved after

Check your request: the four details Flipkart's portal asks for, then the six month question.

Referred here in 6 months?

Riya's company refuses a second one

Scene 4The referrer's list

Nithin sees the best fit first, with the reason on the card.

How does a referrer decide on a work break? Requests are ordered by fit, most skills first. Anyone under his minimum years is folded away but still there, because Samarth refers borderline people on purpose.

Fit on every card

the reason, before he opens it

Lower match, folded

one tap away

The end of Nithin's list of requests for one job, ordered by fit, with Lower match folded and Suggested for this job below.

Suggested for this job

people who chose to be found

This is the end of his list. It starts with Sneha, at 6 of 7 skills.

Scene 5One request

What would stop it comes first, then the fit.

What does a referrer check, in order? City, years and notice period, then whether he was referred to Flipkart recently. Then every skill the job asks for, with where it was found.

The blockers

the six month line names its source

Listed only

shown, never counted

The request: city, years, notice and the six month line, then fit grouped by where each skill was found.

Found in their work

each skill says where

Scene 6Checking a skill

He taps a skill and reads the line SideDoor found.

Why should he trust a tag? He doesn't have to. The line comes from Abhinav's own project page, and the link is right there.

The line, and where it came from

open the page to check

A sheet over the request: Interaction design, found on his project page, with the line quoted and a link to it.

Scene 7Referring

He refers, and every detail the portal asks for is ready to copy.

How does the data get into the portal? Every detail is there in the portal's order, with a copy button each. Or he emails it all to his work inbox, resume attached, and fills the portal in from his laptop.

Email to me, or Copy all

resume attached

After Refer: Emailed and Copy all, then every detail in the portal's order.

In the order the portal asks

the answers Abhinav gave once

Scene 8On his laptop

Nithin opens Flipkart's portal, and the extension fills it in.

Can a dozen fields fill themselves? The extension fills each one, resume attached, and outlines it green. It leaves his own questions to him and never presses Submit.

A browser with a demo referral portal. The SideDoor extension is open on the right: Filled 12 fields, with Undo. The candidate's fields are outlined in green, the referrer's own fields are empty, and a draft to Abhinav asks for the one thing the portal still needs, Expected CTC.

A demo portal I built to test it, with some labels worded oddly on purpose. It filled everything of Abhinav's that SideDoor knows. The only gap is his expected CTC, so that's the one thing it asks him.

Scene 9What the portal still needs

Anything missing is drafted to Abhinav. Nithin decides whether to send it.

What if the portal wants something the request doesn't have? The extension drafts the ask and Nithin sends it. Abhinav answers in the app, and it fills in next time.

The extension: Filled 14 fields, then The portal needs 1 more, a draft to Abhinav asking for Expected CTC, and Send to Abhinav.
NithinDrafted, sent only when he taps Send
Abhinav's Flipkart request in the SideDoor app: Nithin needs one more detail, Nithin's message, one box for Expected CTC, and Send to Nithin.
Abhinav, in the appAnswers on his request, in one box
The extension on the next visit: Filled 15 fields, and Abhinav sent 1 detail.
Nithin, next visitHis answer fills in with the rest

To try it: unzip, open chrome://extensions, turn on Developer mode, choose Load unpacked, then open the demo portal and click the SideDoor icon.

Scene 10Done

One more tap, and Abhinav knows it's in.

Marking it submitted is the last step of referring, while the portal is still open. The candidate sees the stage and what usually comes next.

Marked as submitted: Abhinav will see it.
NithinMarked as submitted
Track details: submitted on Meta's portal.
AbhinavSubmitted, and interviews usually start in 2 to 3 weeks

The candidate's screen is one of Abhinav's other requests, at Meta.

Scene 11No app yet

Strangers don't need the app to ask.

Nithin pastes one link into a LinkedIn reply. A stranger drops a resume, checks the details, and sends a complete request without installing anything.

The link page: ask Nithin for a referral, drop your resume.
The linkDrop your resume
Sent to Nithin, with an option to get the app.
SentNithin gets every detail Flipkart's portal asks for

Scene 12When it breaks

When something goes wrong, it says what's still safe.

There are 77 states in the prototype. Three of them: nobody answered, the request didn't send, and the phone is offline.

No answer after 7 days, with Ask someone else at Zepto.
No answerThe request comes back, and others at Zepto refer
Couldn't send, with Try again.
Error"Couldn't send. Your details are saved."
Jobs while offline, with a note at the top.
OfflineShows what was saved

In Figma

Every screen, on one canvas.

The final version in Figma: ten flows, with every state on the right. Open it full size to zoom in.

The SideDoor Figma file: ten flows (login, onboarding, explore, messaging, tracking, update, profile, manage and edit job, edit profile, link page) and a board of every state, each section headed in blue.

Act 3Behind the scenes

The first version was built on the wrong idea

These are the moments that changed the design, roughly in the order they hit me.

Where it started

Before I built anything, I asked LinkedIn what breaks in referrals.

The reply that stuck came from Immanuel Varghese, who is building Superfolio. I agreed with him, and my answer is the trust idea in its first form.

My LinkedIn post, two months ago: “Can you refer me?” might be the most ignored message on LinkedIn. I’m working on a completely new way to handle job referrals. But before diving into solutions, I want to fall in love with the problem, and that means understanding the real challenges from all sides of the table.
Immanuel Varghese, building Superfolio for designers, comments: One underlying issue is that job postings today act as reach tools, not hiring commitments. So referrals become a way to bypass the broadcast chaos. When a single job gets hundreds or thousands of applicants, referrals stop being signals of trust and start becoming attention shortcuts. Fixing referrals might actually require fixing how job discovery works in the first place. Curious what patterns you’ve observed so far. My reply: Totally agree. When job posts become distribution channels, referrals lose their meaning as trust signals. I’m trying to rethink referrals around mutual intent instead of broadcast reach. Would love your thoughts on what signals actually make a referral credible.

Half of it held up. Every skill on a request now shows its proof. The scores I built on it didn't survive the interviews.

The bet that died

I thought referrers didn't trust strangers. They said the problem was work.

The old SideDoor was built on trust: a match score, graded recommendations, spam limits. Samarth said a bad hire after interviews "should not fall on the referrer". Riya's rule is just the job ID. And the bonus doesn't make up for it. Riya called it "very low".

What I believed

Referrers can't judge strangers, so they need scores

What they told me

The request makes them do the candidate's work

That made the score screen and the swipe cards worthless.

Before and after

Version 2 sold a score. Version 6 shows the evidence.

Version 2 was a swipe app with a 9.4 Strong Fit badge. A decimal looks precise, and nobody can check it. Now fit is a count, and every skill says where it came from.

Version 2: a swipe card with a green quote banner and a 9.4 Strong Fit tag.
Version 2Swipe, and a 9.4 you can't check
Version 6: the request with fit grouped by where each skill was found.
Version 6A count, and where each skill was found

Pushing back

My mentor said to make it a LinkedIn feature. I didn't.

The argument was fair: why would a referrer join a new app? I kept SideDoor separate because the work sits between LinkedIn and the company's portal, and neither owns it. A referrer also gets something on day one, from a link they send to a stranger.

"a link is sent to the candidate to fill out their own personal details, which would cut the referrer's effort by 50%"

Samarth, as a referrer. The link page is their idea.

The risk I kept

All four people I interviewed ask for referrals on LinkedIn today. If referrers won't send the link there, this whole bet fails.

That's reasoning. It hasn't been tested.

My mistake

I asked referrers to come back later and update a stranger.

My first plan had the referrer return to mark each referral as submitted. Then I asked why they'd bother. Version 2 went further, with six stages to update by hand. Now Submitted, the update the candidate waits for, is the last tap of referring. The later stages are optional. Once a week the referrer is asked "Seen it move?", and the candidate can mark a stage from the company's email.

Version 2: Update Referrals, a list with an Update button on each person.
Version 2A list of people to update, stage by stage
Version 6: Marked as submitted.
Version 6One tap, while the portal is still open

The extension

Every portal is different, so the extension has to know when to stop.

I can't test it against every company's portal, so I wrote down what it does when it isn't sure. It fills what it can, says what it left, and never guesses.

First

Labels this referrer already confirmed on this portal

Then

The candidate's own answers, then rules for common labels, first and last name split from the full name

Then

AI for odd labels, only when it's 85% sure, each one listed with Wrong?

Never

A guess, the referrer's own questions, or Submit

It has only run on my demo portal. Real portals, and the AI matcher live, are the next test.

Proof

A skill you only typed doesn't count.

A candidate could tag any skill on their own project and push their match up. So SideDoor reads the linked work and the resume, and a skill counts only when it finds it there. That makes faking harder, though it can't stop it. The interview is still the last check.

Counts

Found in their work

Shown

Related: a nearby skill, the referrer decides

Shown

Listed only

Missing

Not in their work or resume

The reading rule is my call. The interviews only tell me referrers check the resume against the skills.

The question

Nithin's one question shut out most people who'd apply.

A referrer can ask every candidate one question. Mine asked about a checkout trade-off, but Nithin can't know who will apply, and most designers have never worked on checkout. Now it asks about a skill. The field starts empty so the question is his own, and if he gets stuck SideDoor suggests one per skill from the job description.

His question, written first

ask about a skill, not a product

Check your job post: an empty field for the one question, and below it three questions SideDoor suggested from the job description, opened on request.

Suggestions only when asked

one per skill, marked as AI

Seven rounds

I spent seven rounds on a green banner. Then I deleted it.

The request used to open on a brand green card. I tried a photo on it, a name, a cover image, a match line. White on that green is 2.54 to 1, well under the 4.5 text needs, and every round pushed the evidence further down.

Rounds 1 to 4

Photo, name and role on green

Round 5

A cover photo, dropped because it invites bias

Round 6

"4 of 7 skills match" in white, at 2.54 to 1

Round 7

No banner at all

Deleting it moved the evidence up by a banner's height. If a pattern needs seven rounds, I now ask whether it should exist.

Attacking it

I tried to break my own screens. I guessed 1 break out of 13.

I threw empty lists, long names, bad input and slow networks at it, and wrote down what I expected first. The ones I missed were empty screens, wrong input and waiting. On the last pass, three quick taps on Send took his requests left from 2 to 0. That's fixed now.

1 of 13
breaks I predicted on the first two screens
2
blockers across the app, both on work-email checks
18
major breaks across the whole app
77
states you can open in the prototype

No real user has broken it yet. That comes next.

What made the cut

Two sides, one designer. Most of the arguments were about what to leave out.

What went into the app, and what stayed out, with the reason for each. Most of the old SideDoor ended up on the right.

In the app8

Must

  • No send until the request is complete

    Riya and Samarth both drop requests with missing details. So Send stays off until the job ID and everything the portal asks for is there.

  • Fit with proof

    A skill counts only when SideDoor finds a line on the resume that backs it up.

  • Mark as submitted inside Refer

    A referral is real only once it's on the company's portal. Marking it is one tap while the portal is still open.

  • Every state, including the broken ones

    When I attacked my screens, this is where they broke. Most of those states are designed now, and a few are still open.

Should

  • A Chrome extension that fills the portal

    I first left it for later, because every portal is different. But copying field by field was still the slowest part of referring, so I built it. It fills only what it's sure of.

  • Email to me and Copy all

    For a laptop without the extension, Email sends everything to the referrer's work inbox. I haven't asked referrers which they'd use.

  • Suggested candidates

    Referrers asked for matches. Each job shows the best fits who let referrers find them, and an invite becomes a complete request.

  • The six month check

    Portals refuse a second referral within six months, and people don't remember when they last applied.

Left out5

Could

  • "Usually answers in 2 days"

    Indeed shows this. I need real reply data before I can show it honestly.

Won't

  • Charging candidates to reach referrers

    Referrers are the side that's hard to get. If candidates could pay to reach them, their inbox would fill with paid requests.

  • Points and badges

    Both referrers said the bonus isn't why they refer. Hearing that it helped someone is a better reason, so the candidate's thank-you reaches them.

  • Swipe

    Swiping is made for going through lots of cards fast. A referrer deciding on a stranger needs to see their experience and proof first.

  • Reading the company's portal

    I can't get inside it, and neither can LinkedIn. The referrer can, so the status comes from them.

Act 4What's next

Nobody has used this yet

No real person has tested it, so there are no results. Here's what I'd watch, and what would prove me wrong.

What I'd watch

One number to move, one to protect.

Referrers are the scarce side, so they never pay and are never sold to candidates. Both sides are free at first. Companies already pay referral bonuses, so they're the likely payer later.

Goal

Referrals submitted per active referrer, each month

The number this should move

Limit

Referrers who turn requests off

Must not go up

Risk

Requests with no answer after 7 days

Silence is the problem, so watch it

What kills it

I wrote down what would prove me wrong.

The next test is eight referrers in tech using their link for two weeks. If either of these happens, the idea is dead.

1 in 5
Dead if fewer complete requests from strangers get submitted
3 of 8
Dead if fewer referrers send their link in two weeks

1 in 5 comes from Riya: "80% of the time they don't reply." A complete request has to beat that.

Next

Samarth and Riya try it next.

Two sessions, each of them as a candidate and then as a referrer, ten tasks. Then the extension on the portals at their own companies. I'll change the design, and this page, based on what breaks.

Keeping

What I'm taking to the next project.

Each one comes from something that went wrong on this project.

  1. 1A cut needs a reason, same as an addition.

    In version 3 I removed the swipe cards, and the experience and projects inside them went too. Those were exactly what referrers read. I put them back. Now I write down why before I cut anything.

  2. 2If it takes seven rounds, ask whether it should be there.

    I spent seven rounds on the green banner at the top of a request. Every round pushed the evidence further down. Deleting it moved the evidence up by a banner's height.

  3. 3Guess what will break, then check.

    Before attacking my screens, I wrote down what I thought would fail. I'd predicted only 1 of the 13 breaks I found. I expected long text to cause trouble, but the real breaks were empty screens, wrong input and waiting, so now I check those first.

Thanks for reading.

Got a question, or a better idea? I'd love to hear it.

Email meLinkedIn

Next case study

redBus

Redesigned RedBus checkout to capture the return trip, even without a date