Working notes · MVP not started · May 2026
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 opening Receives structured applications Shortlists & refers Zero 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 messaging Structured application Status tracking link Always 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

FeatureMVP (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 scorev2
Applicant login dashboardv2
Search & filter by company/rolev2
Post boost (paid featured placement)v3
Premium referrer accountsv3
Analytics dashboard for referrersv3
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.

Database schema

TableKey fieldsPurpose
users id, name, email, linkedin_url, company, work_email_verified Referrer accounts. Created via LinkedIn OAuth.
referral_posts id, user_id, company_name, role_title, jd_url, custom_fields (JSON), deadline, status, slug Each job opening posted by a referrer. Public via unique slug URL.
applications id, post_id, applicant_email, resume_url, status, tracking_token (UUID), custom_responses (JSON) 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.
Week 1 Foundation — account, database, auth Days 1–7
Day 1 — Account & orientation
Create Bubble account & app
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 2 Core flows — post, apply, track Days 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 3 Emails, spam protection & launch Days 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

MetricWhat it tells youGreen 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.