Building RefLink — a referral portal that doesn't suck.
This is the working reference document for RefLink. It captures the problem we're solving, the product we're building, the stack we've chosen, and the exact 3-week plan to get to launch. Honest, practical, and updated as we go.
3 wks
Target build time
₹2.5k
Monthly burn (MVP)
Bubble
Stack for validation
2
Personas to nail first
01 · Problem & Market
Why this needs to exist.
The referral process in India is completely unstructured. Both sides of the equation — referrers and applicants — are underserved by every existing tool. Here's the honest breakdown.
What the applicant actually goes through
If you're job hunting and want a referral right now, your only options are:
Search LinkedIn for employees
Manually hunt for people at target companies. No structure, no way to know if they refer people at all.
Send cold InMails
Pay for LinkedIn Premium or write cold DMs that get ignored 90% of the time. Awkward by design.
Wait and follow up blindly
No confirmation, no status tracking, no polite way to follow up. Just silence.
Repeat until exhausted
The process repeats for every company, every role. Emotionally draining with no structural improvement.
What the referrer actually goes through
Employees who want to refer people are equally stuck:
LinkedIn posts get buried in 48 hrs
No structure. No application flow. Just a flood of DMs they can't manage or track.
DM overload with no shortlisting
80+ messages with varying quality, no way to compare, no place to track who they've responded to.
The gap we're filling
→
There is no neutral, structured platform where referrers can post openings and applicants can apply and track their referral — outside of a company's internal HR tool. That's the exact gap RefLink fills. Not adjacent to it. Exactly it.
Market context (honest take)
India has one of the fastest-growing professional workforces globally. Employee referrals are consistently the highest-quality hiring channel — yet the tooling around them is entirely ad hoc. The proof is behaviour: referral LinkedIn posts routinely get hundreds of comments. People are desperate for structure here. We're not creating demand, we're channelling existing behaviour.
India workforce
500M+
formal sector workers
Referred hires quality
#1
hiring channel by retention
Existing structured tools
0
community-first, public
02 · Competitive Landscape
What's out there. Why it's not this.
Honest look at who's in the space. Nobody is doing exactly what we're doing — but that's not a reason to be complacent. Here's why the gap exists and how long we have.
Platform
What it does
Key gap
Threat level
Refer.me
Connects job seekers to employees for paid referrals
Pay-to-refer model; not community-first; US-focused
Medium
GetMeReferred
Professional networking for referrals (India/US)
Relationship-first; slow process; no structured apply flow
Medium
ERIN / Boon / RolePoint
Enterprise HR tools for referral programs
B2B only; employees cannot post independently
Low
LinkedIn Posts
Manual referral posts by employees
No structure, no tracking, no application flow, buried in 48hrs
High — but fragile
Topmate / Peerlist
Individual professional profile pages
No referral-specific flow or two-sided matching
Low
RefLink
Structured two-sided referral marketplace
—
This is us
What makes this different (our actual bets)
Individual referrers, not companies
Referrers are employees acting independently — not HR departments. This makes the platform community-powered and impossible to replicate with an enterprise tool.
Structured apply + tracking
Applicants get a form, a confirmation, a tracking link, and status updates. Referrers get a dashboard. No cold messages required on either side.
No cold messaging required
This is the core product insight. Every interaction that currently happens over LinkedIn DMs is replaced with a structured, trackable workflow.
Community-first positioning
Closest analogy is "ProductHunt for Referrals" — open, discoverable, and community-rated over time. This is a moat that can't be bought.
03 · Product Vision
Who we're building for. What they actually need.
Before writing a single line of Bubble logic, we need to be extremely clear on the two people this product exists for. Everything in the MVP flows from understanding them.
R
Riya — The Referrer
3 years at Swiggy · Senior SDE
Gets a job opening from her HR/manager. Wants to refer a good candidate but doesn't want to manage 80 DMs from her LinkedIn post. Needs a clean form to post the job, receive structured applications, shortlist, and refer the best one — with minimal effort on her part.
Posts the openingReceives structured applicationsShortlists & refersZero DMs required
A
Arjun — The Applicant
2 years experience · Actively job hunting
Sees Riya's referral post on LinkedIn or WhatsApp. Wants to apply without the awkwardness of cold messaging. Needs a simple apply form, confirmation his application was received, and a way to check status without being annoying.
No cold messagingStructured applicationStatus tracking linkAlways gets an answer
Trust model
The most important early decision is how to verify that referrers are genuine employees. RefLink's recommended approach for MVP:
✓
Decision: Work email verification via LinkedIn OAuth. One-click sign-in. No manual review. Instantly filters out random people posting fake openings. We'll add community ratings and reputation scores in v2 — but for MVP, LinkedIn OAuth is good enough and fast to ship.
Feature scope — what's in MVP vs later
Feature
MVP (v1)
Post-validation (v2)
Scale (v3)
LinkedIn OAuth sign-up
✓ Core
—
—
Create referral post with custom fields
✓ Core
—
—
Public apply form (no login)
✓ Core
—
—
PDF resume upload
✓ Core
—
—
Email confirmation + tracking link
✓ Core
—
—
Status updates (5 states)
✓ Core
—
—
One follow-up message (rate limited)
✓ Core
—
—
Referrer profile + reputation score
—
v2
—
Applicant login dashboard
—
v2
—
Search & filter by company/role
—
v2
—
Post boost (paid featured placement)
—
—
v3
Premium referrer accounts
—
—
v3
Analytics dashboard for referrers
—
—
v3
04 · User Flows
What the product actually does, step by step.
These flows are the product spec. Every Bubble page, workflow, and data action in the build maps back to one of these. If a feature isn't in a flow below, it doesn't go in the MVP.
Flow A — Referrer posts a job
1
Sign up via LinkedIn OAuth
One-click sign-in. Name, company, and work email pre-filled from LinkedIn. Optional: verify work email for trust badge.
LinkedIn OAuthWork email verify
2
Create a referral post
Fill: company, role, JD link, description, deadline, max applications cap, notes to applicants. Add custom screening fields (e.g., "years of backend experience").
Dynamic form builderCustom fields
3
Get a unique shareable link
Platform generates /post/swiggy-sde2-riya. Riya shares it on LinkedIn and WhatsApp. She's done — no DMs needed.
Post liveUnique URL generated
4
Review applications in dashboard
Dashboard shows each applicant's card: name, current role, resume, LinkedIn, custom field answers. Actions: Shortlist / Reject / Ask for more info / Mark as Referred.
Email digestApplicant cards
5
Mark as Referred — loop closed
Chosen applicant is marked Referred. All other applicants receive a polite auto-email. Post is automatically closed. Zero manual messages sent by Riya.
Loop closedPost archived
Flow B — Applicant applies & tracks
1
Opens the referral link
Arrives via LinkedIn or WhatsApp. Sees the public post page — no login wall. Reads: role, company, referrer's notes, deadline, spots remaining.
No login required
2
Fills the apply form
Standard fields: name, email, phone, LinkedIn, current role, resume (PDF). Plus any custom fields the referrer added. Optional cover note.
Standard fieldsCustom fieldsResume PDF
3
Receives confirmation email
Instant email with a unique tracking link. No ambiguity — Arjun knows his application was received.
ReceivedTracking link
4
Tracks status anytime
5 status states shown on the tracking page: Received → Under Review → Shortlisted → Referred / Not Moving Forward. No login needed — just the link from the email.
5
One follow-up message (optional)
Rate-limited to one message per application. No spam, no awkward cold DMs. Gets a clear outcome either way — no ghosting by design.
Rate-limited: 1 msgAlways gets an answer
05 · Technical Architecture
Stack decisions and why we made them.
MVP is on Bubble.io — chosen deliberately for speed, not because it's the best long-term tool. The migration path to Next.js + Supabase is planned from day one so we're not painting ourselves into a corner.
MVP stack — what we're using and why
Builder
Bubble.io
Full-stack no-code. Database, auth, workflows, hosting — all in one.
Auth
LinkedIn OAuth
Via Bubble plugin. One-click referrer sign-up with trust verification.
Email
SendGrid
Free up to 100 emails/day. Transactional triggers via Bubble workflows.
Storage
Bubble S3
Built-in file hosting. Resume PDFs stored automatically, no config needed.
Spam
reCAPTCHA v2
Google plugin. Free. Prevents bot applications on the public apply form.
Analytics
Google Analytics
Free. Paste one script tag into Bubble settings. Track conversions from day 1.
Domain
Namecheap
~₹800/year. Connect via DNS CNAME to Bubble app.
Monthly cost
~₹2,500
Bubble Starter plan. All other services on free tiers at MVP scale.
Each application submission. Tracking token enables login-free status page.
messages
id, application_id, sender_type, content, sent_at
One-way follow-up messages from applicant to referrer. Rate-limited to 1 per application.
notifications
id, application_id, type, email_sent_at, status
Log of all outbound emails. Enables retry logic and delivery tracking.
Scale path — Next.js + Supabase
When RefLink reaches ~200 active users and consistent referrer engagement, the migration path is defined:
Frontend → Next.js (React)
Industry standard. SSR for SEO on public post pages. Same JS language throughout. Deploy on Vercel with one-click CI/CD.
Backend → Supabase
Managed PostgreSQL + Auth + Storage + Edge Functions. Replaces Bubble's database and auth. Free tier covers early scale.
Email → Resend
Modern transactional email API. React Email templates. Better developer experience than SendGrid at scale.
Storage → Cloudflare R2
S3-compatible object storage. Zero egress fees. Resume PDFs stored cheaply at scale.
→
The Bubble MVP isn't throwaway work. Every workflow maps 1:1 to an API route in Next.js. Every data type maps to a Supabase table. We're using Bubble to validate behaviour, not architecture — so the learnings transfer cleanly when we rebuild.
06 · 3-Week Build Roadmap
The actual plan. Day by day.
Tasks are sequenced by dependency — don't skip ahead. Click any task to reveal its deepdive prompt. Check tasks off as you complete them. The checklists at the end of each week are the only gates before moving forward.
Sign up at bubble.io via Google. Skip templates. Name app "reflink". Watch the first 3 official tutorial videos (~90 mins) before touching anything.
Deepdive →
"How do I set up a Bubble.io account and create my first app?"
⌘C to copy
Register your domain
Buy reflink.in or reflink.co on Namecheap (~₹800/yr). Do not connect to Bubble yet — you need Starter plan first.
Deepdive →
"How do I register a domain on Namecheap and connect it to a Bubble app?"
⌘C to copy
Day 2 — Database schema (most critical day)
Build all 4 data types in Bubble
Create: User (extend), ReferralPost, Application, Message — with all fields. Spend the full day here. Every page you build later depends on this being correct.
Deepdive →
"How do I design the Bubble database for RefLink — users, posts, applications, and messages?"
⌘C to copy
Day 3 — Pages & privacy rules
Create all 6 pages with access rules
Pages: index, signup, dashboard (login-gated), create-post (login-gated), post (public), track (public). Set redirect to signup for protected pages.
Deepdive →
"How do I set up page access rules and login redirects in Bubble?"
⌘C to copy
Days 4–5 — LinkedIn OAuth
Set up LinkedIn OAuth sign-in
Install LinkedIn Login plugin → create LinkedIn Developer App → get Client ID + Secret → paste into Bubble → add Login button → test end to end in private browser.
Deepdive →
"How do I set up LinkedIn OAuth login in Bubble.io?"
⌘C to copy
Days 6–7 — Landing page & buffer
Build the index (landing) page
Minimal MVP: headline, subheading, two CTA buttons ("Post an opening" / "Find a referral"). Fix any blockers from Days 1–5 using Day 7 as buffer.
Deepdive →
"How do I build a minimal landing page in Bubble with two CTA buttons and a shared nav header?"
⌘C to copy
Week 1 checklist
Bubble account created, app named "reflink"
All 4 data types created with correct fields
All 6 pages created with correct privacy rules
LinkedIn OAuth working end to end
Domain registered on Namecheap
Landing page live with working nav buttons
Week 2Core flows — post, apply, trackDays 8–21
Days 8–10 — Referrer: create a post
Build the create-post form & workflow
Form fields: company, role, JD link, description, deadline, max cap, notes. On submit: create ReferralPost record, generate slug, navigate to dashboard.
Deepdive →
"How do I build a referral post creation form in Bubble with a workflow to save it to the database?"
⌘C to copy
Add custom screening fields
Repeating group where referrers add custom questions. Store as JSON in custom_fields. Skip this if it blocks you — ship standard fields first.
Deepdive →
"How do I build dynamic custom form fields in Bubble using a Repeating Group?"
⌘C to copy
Days 11–12 — Referrer: dashboard
Build dashboard with applicant list & status actions
Repeating group of posts by Current User. Per post: applicant cards with Shortlist / Reject / Mark Referred buttons. Each triggers a status update + stores it in the Application record.
Deepdive →
"How do I build a referrer dashboard in Bubble to manage applications with status update actions?"
⌘C to copy
Days 13–15 — Applicant: apply form
Build the public post page + apply form
Post page loads by URL slug. Shows post details. Below: apply form with standard fields + PDF upload + cover note. On submit: create Application, generate tracking_token.
Deepdive →
"How do I build a public application form in Bubble that does not require login, with a PDF resume upload?"
⌘C to copy
Load page content by URL parameter
Bubble page parameter reads the slug from the URL. Data source filtered by slug = URL param. Test with a real post link in private window.
Deepdive →
"How do I load a Bubble page using a URL parameter to show the right database record?"
⌘C to copy
Days 16–17 — Applicant: tracking page
Build status tracking page + rate-limited follow-up
Loads Application by tracking_token URL param. Shows 5-step visual status bar with conditional formatting. Follow-up form checks for existing message before allowing send.
Deepdive →
"How do I build an application status tracking page in Bubble without requiring login, with a follow-up rate limit?"
⌘C to copy
Days 18–19 — End-to-end test run
Full loop test: sign up → post → apply → track → update status
Run in two private browser windows. Sign up as referrer, create post, apply as applicant (logged out), check Application record in Bubble Data tab, update status, verify tracking page reflects change. Fix everything that breaks.
Days 20–21 — Buffer & UI polish
Fix test bugs, clean UI, add consistent nav header (Reusable Element)
Consistent padding, font sizes, colours across all pages. Build a Reusable Element for the nav header so changes propagate everywhere.
Week 2 checklist
Create-post form saves correctly to the database
Public post page loads from URL slug
Apply form submits without login, creates Application record
Resume PDF upload works
Tracking page loads from token, shows correct status
Status action buttons update Application record correctly
Follow-up message limited to one per application
Full end-to-end test passed with zero critical bugs
Week 3Emails, spam protection & launchDays 22–28
Days 22–23 — Transactional emails
Set up SendGrid + wire 4 email templates
Create SendGrid account → get API key → install Bubble plugin → create 4 templates: (1) Application confirmed + tracking link, (2) Shortlisted, (3) Not moving forward, (4) Referred. Trigger each from the relevant workflow action.
Deepdive →
"How do I set up transactional emails in Bubble using SendGrid, triggered by workflow actions?"
⌘C to copy
Day 24 — Spam protection
Add reCAPTCHA, honeypot field & duplicate check
reCAPTCHA v2 on apply form → hidden honeypot field (bot fills it = block submission) → duplicate check: same email + same post in last 24 hrs = show error instead of creating new record.
Deepdive →
"How do I add spam protection to a Bubble form — reCAPTCHA, honeypot field, and duplicate submission check?"
⌘C to copy
Day 25 — Mobile responsiveness
Responsive pass on all pages (375px viewport)
Priority order: post page (applicants land here on mobile), track page, dashboard. Fix overlaps, ensure tap targets are ≥44px, stack columns vertically.
Deepdive →
"How do I make my Bubble app mobile responsive using the Responsive editor?"
⌘C to copy
Day 26 — Domain, analytics & final checks
Connect domain + add Google Analytics
Connect reflink.in via Bubble Settings → Domain. Add DNS CNAME in Namecheap. Wait up to 24hrs for propagation. Add GA Measurement ID to Bubble Settings → SEO header script.
Day 27 — Seed posts (do not skip)
Get 10–15 real referral posts live before launch
Message 10 people in your network at target companies. Ask them to post one real opening. Offer to fill the form for them. A platform with zero posts at launch is a ghost town — this step is not optional.
Day 28 — Launch
Publish launch post + share to communities
LinkedIn personal post (problem → what you built → proof posts exist → CTA). Share to: Reddit (r/india, r/developersIndia), IndiaHacks Discord, tech Slack/WhatsApp groups.
Set up tracking spreadsheet
Google Sheet tracking daily: new posts, new applications, email open rate, referrers updating statuses. Check every day for the first 2 weeks.
Deepdive →
"What metrics should I track in the first 2 weeks after launching a referral marketplace, and how do I measure them?"
⌘C to copy
Week 3 checklist
All 4 transactional emails wired and tested
reCAPTCHA on apply form verified working
Honeypot + duplicate check added
All pages mobile-responsive at 375px
Custom domain connected and resolving
Google Analytics confirmed (check Realtime in GA)
10+ seed posts live before public launch
Launch post published across all channels
Tracking spreadsheet set up and monitoring
07 · Business Model
How this makes money. (Eventually.)
We're not monetising at launch. That's a deliberate call — the two-sided network needs to reach critical mass before we add any friction. Here's the honest progression from free to paid.
Phase 1
Free
Launch → first 200 users. Completely free for everyone. We need referrers posting and applicants applying before anything else matters. No friction, no paywalls, no premium features teased. Just build the habit.
₹0
by design
Phase 2
Freemium
After product-market fit is visible in data. Free referrers: 2 active posts. Premium (₹299–499/mo): unlimited posts, applicant filtering, analytics, priority listing. Referrers who consistently use the dashboard are the power users — they'll pay for tools that save them time.
₹299+
per referrer/mo
Phase 3
Marketplace
At scale — if the network holds. Boosted posts (paid featured placement). Company API integrations (B2B — HR teams pay to route all referral posts through RefLink). Verification badges for enterprise employees. Don't think about this until Phase 2 is working.
₹5k+
per company/mo
What we're watching after launch
Metric
What it tells you
Green signal
Posts created per week
Referrer-side growth velocity
Week-on-week growth
Applications per post
Demand from applicants; post quality
>5 per post within 48hrs
Apply-to-shortlist rate
Quality of matching between sides
>20% shortlist rate
Shortlist-to-referred rate
Are referrers following through?
>50% of shortlisted get referred
Return applicants
Platform stickiness
>30% apply to 2+ posts
Time-to-status-update
Referrer engagement quality
<5 days avg after application
The migration trigger — not a date, a signal
We move from Bubble to Next.js + Supabase when we have enough traction to know exactly what we're building in code. These are the three numbers to watch:
Active usersTarget: 200
Total posts createdTarget: 50
Referrers using dashboard weeklyTarget: 20+
→
When all three bars are non-zero and growing, that's the signal. The deepdive: "When should I migrate from Bubble to Next.js + Supabase, and how do I approach that migration?"
08 · Risks & Mitigations
What could go wrong. What we're doing about it.
Being honest about risks upfront means we've already thought through the mitigations. None of these are hypothetical — they're real failure modes we've seen in similar two-sided marketplaces.
Risk
Fake referral posts — bad actors post jobs that don't exist to harvest resumes or drive traffic.
Mitigation
Work email verification via LinkedIn OAuth at sign-up. Community flagging button on every post. Manual review queue for flagged posts.
Risk
Referrers ghost applicants — they post the opening, collect applications, then disappear without updating any status.
Mitigation
Auto email nudge to referrer after 5 days with no status update. Auto-expire posts after 30 days of inactivity. Reputation score docks for unresponsive referrers (v2).
Risk
Spam applications — "apply without login" is a low-friction path that bots and bulk applicants will exploit.
Mitigation
reCAPTCHA v2 on apply form. Honeypot field. Duplicate submission check (same email + same post). IP rate limiting via Bubble workflows.
Risk
Cold start problem — the platform launches with no posts, so applicants arrive and leave immediately.
Mitigation
Seed with 10–15 real posts from the founder's network before any public promotion. This is built into Day 27 of the roadmap — non-negotiable.
Risk
LinkedIn clone risk — LinkedIn could add a structured referral feature and immediately out-distribute RefLink.
Mitigation
Move fast and build community trust before this becomes a threat. Focus on reputation, tracking, and community ratings — things a feature can't replicate. LinkedIn's incentive is feed engagement, not structured referral outcomes.
Risk
Bubble platform risk — Bubble changes pricing, goes down, or the vendor relationship ends.
Mitigation
Bubble is explicitly a temporary MVP tool. The data model and all workflows are documented and map 1:1 to the Next.js + Supabase architecture. Migration is planned from day one.
09 · Deepdive Prompt Index
Stuck on something? Use one of these.
Every prompt below is a question you can paste directly into Claude to get a full step-by-step walkthrough for that specific build task. Copy button on every row.
Setup & foundation
Account setup
"How do I set up a Bubble.io account and create my first app?"
Database schema
"How do I design the Bubble database for RefLink — users, posts, applications, and messages?"
Domain setup
"How do I register a domain on Namecheap and connect it to a Bubble app?"
LinkedIn OAuth
"How do I set up LinkedIn OAuth login in Bubble.io?"
Page privacy rules
"How do I set up page access rules and login redirects in Bubble?"
Building the referrer flow
Create-post form
"How do I build a referral post creation form in Bubble with a workflow to save it to the database?"
Custom fields
"How do I build dynamic custom form fields in Bubble using a Repeating Group?"
Referrer dashboard
"How do I build a referrer dashboard in Bubble to manage applications with status update actions?"
Unique shareable links
"How do I generate a unique shareable URL for each referral post in Bubble?"
Building the applicant flow
URL parameters
"How do I load a Bubble page using a URL parameter to show the right database record?"
Apply form (public)
"How do I build a public application form in Bubble that does not require login, with a PDF resume upload?"
Tracking page
"How do I build an application status tracking page in Bubble without requiring login, with a follow-up rate limit?"
Emails & spam protection
Transactional email
"How do I set up transactional emails in Bubble using SendGrid, triggered by workflow actions?"
Spam protection
"How do I add spam protection to a Bubble form — reCAPTCHA, honeypot field, and duplicate submission check?"
Mobile responsiveness
"How do I make my Bubble app mobile responsive using the Responsive editor?"
Launch & post-launch
Post-launch metrics
"What metrics should I track in the first 2 weeks after launching a referral marketplace, and how do I measure them?"
Migration to code
"When should I migrate from Bubble to Next.js + Supabase, and how do I approach that migration?"
Seeding the platform
"How do I seed a referral platform with real posts before launch?"
Launch communities
"What are the best communities and platforms to launch a job referral product on in India?"
★
All prompts above are designed for Claude (claude.ai). Paste them as-is and they'll generate a full, specific walkthrough for that task in the context of the RefLink build. The more conversation context you carry in, the more tailored the answer — so keep this chat open as you build.