Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ▌ 💰 Monetization Recap (what we discussed)
- ▌ 🌱 Free Tier (hook → growth)
- ▌
- ▌ AI tailoring (JD → resume) → basic rewrites + keyword check.
- ▌
- ▌ 1 resume upload active (draft or published).
- ▌
- ▌ Directory access → preview only:
- ▌
- ▌ See role, YOE, level, some companies.
- ▌
- ▌ Blurred/partial resume preview (e.g., first few bullets only).
- ▌
- ▌ Saved resumes → up to 3 saves.
- ▌
- ▌ Verification → can upload, but no premium incentives.
- ▌
- ▌ Export → text-only copy-paste (no DOCX/PDF).
- ▌
- ▌ 🚀 Pro Tier ($15/mo or $120/yr)
- ▌
- ▌ Unlimited AI tailoring → advanced rewrites, “make mine like this” (Phase 2).
- ▌
- ▌ Unlimited uploads & versions.
- ▌
- ▌ Directory full access → full resume view, all bullets, all companies, high-res previews.
- ▌
- ▌ Filters unlocked → by role, skills, industry, company, YOE.
- ▌
- ▌ Verification bonuses → badges (LinkedIn, Outcome Verified, Company Verified) visible prominently.
- ▌
- ▌ Saved resumes → unlimited saves + collections (folders later).
- ▌
- ▌ Export formats → DOCX/PDF (when you add them).
- ▌
- ▌ Early access to add-ons (cover letters, LinkedIn tailoring, interview prep).
- ▌
- ▌ 🏢 Future Team/Recruiter Plan
- ▌
- ▌ (not MVP, but we discussed it)
- ▌
- ▌ Recruiter dashboards.
- ▌
- ▌ Anonymized aggregated insights (resume → interview/offer conversion).
- ▌
- ▌ Employer-verified outcomes feed.
- ▌
- ▌ Data API access.
- ▌
- ▌ Custom pricing.
- ▌
- ▌ 🎯 Key Gating (MVP → what to enforce now)
- ▌
- ▌ ✅ Directory
- ▌
- ▌ Free = preview only, blurred details, limited companies shown.
- ▌
- ▌ Pro = full view, all filters, verified resumes.
- ▌
- ▌ ✅ Saves
- ▌
- ▌ Free = max 3.
- ▌
- ▌ Pro = unlimited (collections later).
- ▌
- ▌ ✅ Uploads
- ▌
- ▌ Free = 1 active.
- ▌
- ▌ Pro = unlimited.
- ▌
- ▌ ✅ Tailor
- ▌
- ▌ Free = limited runs (credits, e.g., 2).
- ▌
- ▌ Pro = unlimited.
- ▌
- ▌ (Phase 2: “make mine like this” AI mode = Pro-only).
- ▌
- ▌ ✅ Exports
- ▌
- ▌ Free = text only.
- ▌
- ▌ Pro = DOCX/PDF (once implemented).
- ▌
- ▌ ⚖️ Why this mix works
- ▌
- ▌ Free tier feels generous enough to hook (tailoring + preview directory).
- ▌
- ▌ Pro tier is obvious for anyone serious: if you’re job-hunting, you need full resumes, saves, unlimited tailoring.
- ▌
- ▌ Your moat (directory + verification) is monetized without blocking growth (free previews still attract uploads). what
- ▌ do you think about some of this? let's have a discussion
- > Love how you’ve framed it. The mix feels “useful but itchy” for Free, and Pro is clearly where serious job seekers
- land. A few thoughts and clarifying questions so we can lock the implementation plan:
- Overall Structure
- - Free tier: gives people a taste of everything (tailor, directory, saves) but every surface has a ceiling or teaser.
- That keeps acquisition strong and showcases the value of Pro.
- - Pro tier: obvious upgrade path—if you’re actively job hunting or exploring multiple resumes, the limitations push
- you to upgrade.
- Directory gating
- - Free preview: blur or truncate the resume content, show limited companies, and hide verification badges unless paid?
- Or maybe badges stay visible to signal trust, but detailed verification info stays gated.
- - Filters: we can expose the UI but disable certain filters with a tooltip (“Upgrade to Pro to unlock industry
- filters”). That drives curiosity and upgrades. Your call whether to show the controls grayed-out or hide them
- entirely.
- Uploads
- - “1 active resume” for Free means: user can upload one resume (draft or published). If they want to upload a second,
- do we ask them to archive the first or prompt upgrade? Archive-only could be frustrating; I’d lean toward prompting
- upgrade while offering archive as an option.
- Saves
- - Enforcing “3 saves free” is easy via Supabase count check before insert. Nice mid-funnel nudger.
- Tailoring
- - 2 credits for Free is a great sticky mechanism. We can track per-user usage (Supabase table with daily/monthly
- counters). On run attempt, check credit balance. After upgrade, remove the cap.
- - Suggestion: since we already plan to add rate limiting, we can roll credits into the same mechanism (keyed by tier).
- Exports
- - That’s more future-facing, but we can stub the logic now (e.g., disable buttons with “coming soon in Pro” notes) to
- remind users of the value.
- Verification bonuses
- - Even if verification uploads are allowed on Free, we should make the payoff (badge prominence, directory callouts)
- yes (Supabase RLS + DB constraint or API check).
- - Upload cap: Should we block the upload button for Free once they hit the limit (with upgrade modal), or allow them
- to archive existing resumes to free the slot?
- ▌ questions + answers I'm thinking maybe blur half the resume or something? i feel that seeing all the badges/chips is
- ▌ what will make people want to see.
- ▌
- ▌ yes we'll offer upgrade and archive when over 1 resume uploaded
- ▌
- ▌ anything future we can punt for now. maybe add it to the pricing pro section saying future
- ▌
- ▌ do we want a new supabase table or can we use the existing auth table?
- ▌
- ▌ Answers to your questions
- ▌
- ▌ - whatever will be unbreakable. blur is nice if they can't get around it
- ▌ - let's say they get 2/month
- ▌ - saved resumes yes we will gate in the api/with supabase
- ▌ - based on what we said above, i'm thinking they can archive to free up the slot
- • Explored
- └ Search plan
- Read schema-resumes.sql, server.ts, types.ts, useSavedResumes.tsx, useResumesWithVotes.ts
- • I'll design a multi-step approach to manage free vs pro plans, including database schema changes, API usage checks,
- and client-side plan fetching with UI gating based on the user's plan status. This involves creating a user_profiles
- table, usage tracking, and tailoring directory views and filters accordingly.
- • Explored
- └ Read DirectoryFilters.tsx, ResumeCard.tsx
- • I’m mapping out a detailed plan to gate resume data and features based on user subscription tiers, like limiting
- displayed skills and companies for free users with blurred overlays. This involves creating new database tables for
- user profiles and usage tracking, extending backend queries or adding API routes to securely serve truncated data, and
- updating front-end hooks to respect subscription levels. There’s quite a bit to coordinate here—especially to ensure
- gating is both effective and performant—so I’m preparing a thoughtful design to discuss next before implementation.
- > Love this direction—tier gating feels well balanced and we can implement it in a way that’s both enticing and hard to
- bypass. Here’s how I’d shape it given your answers:
- Directory gating
- - Keep verification badges visible in Free (they’re strong upgrade bait), but trim the actual content: show only top
- two companies/skills, replace the rest with “Locked — Upgrade to Pro”.
- - For previews, safest path is to never deliver the full preview URL to Free. Instead, return null (show upgrade
- overlay) or store a separate blurred image in the public bucket and serve that for Free. If we blur client-side we’d
- still leak the raw image via network.
- - Hide the advanced filters (role/skills/industry/company/YOE) for Free; show a grayed-out “Unlock filters with Pro”
- block so users know the feature exists.
- Uploads
- - Allow Free users to archive to free the one slot; when they try to add a second active resume, prompt upgrade with
- “Archive current resume or upgrade to Pro for unlimited uploads.”
- Tailor credits
- - Track runs in a tailor_usage table keyed by user_id + period_start (start of current month). Increment on each run;
- Free stops at 2, Pro gets to skip the check. That also sets us up nicely for future daily/weekly limits.
- Saved resumes
- - Enforce the 3-save cap in the API layer (or via RLS). UI can warn early, but the backend must reject anything beyond
- 3 for Free.
- Data model
- - Introduce a lightweight public.user_profiles (or user_subscriptions) table referencing auth.users. Columns: plan
- ('free' | 'pro'), optional plan_renews_at, timestamps. Default to free.
- - Later, Stripe webhook can upsert into this table; for now we can manually toggle plan for testing.
- Capability helper
- - Add lib/subscriptionPlans.ts (or similar) with a map of plan → capabilities (maxUploads, maxSaves, tailorQuota…).
- That way both API routes and the UI can stay in sync.
- Gating surfaces for MVP
- 1. Directory API: create a Next.js route that fetches resumes via the server Supabase client, checks plan, and returns
- either full or truncated payload. This avoids leaking locked fields over the network. Client hook consumes the API
- instead of hitting Supabase directly.
- 2. Saved resumes API: add a tiny server route that enforces the 3-save cap and wraps Supabase upsert/delete so Free
- users can’t bypass the limit.
- 3. Tailor endpoint: before calling OpenAI, fetch plan and current month usage; deny request if Free quota exceeded,
- otherwise increment usage count.
- 4. Upload flow: before allowing publish, check active resume count against plan. If Free has 1 active, prompt to
- archive or upgrade.
- Blur vs truncate
- - Since you want it “unbreakable,” I’d avoid delivering sensitive data to the client at all. Truncate arrays (e.g.,
- offer_companies.slice(0, 2)), drop file_url, and omit preview_image_url. In the UI, we can display placeholders
- implying more content exists. When we do have blurred previews stored separately, we can safely serve them to Free.
- Next steps (suggested order)
- 1. Add the new Supabase tables (user_profiles, tailor_usage; optional SQL script update + types).
- 2. Build plan helper + server utility to fetch current user plan (with default).
- 3. Implement directory API route + update client hook to consume it (with gating logic and upgrade prompts).
- 4. Enforce saved resume cap via API.
- 5. Enforce upload cap and tailor usage quota.
- If that sequence sounds good, I’ll start with step 1: add the user_profiles and tailor_usage tables (SQL + types) and
- wire the plan helper. Want me to proceed?
- -----------------------------------------------------------------------------------------------------------------------------
- ▌ is anybody going to use this app if theyh can't see resumes?
- > Totally fair question. The current gating is intentionally “preview mode” to tease what’s behind the paywall, but it
- still needs to deliver enough value to hook people. A few ways to make the free tier feel rewarding without giving
- everything away:
- 1. Make the preview compelling, not frustrating
- - Keep badges, tagged companies, and a couple of bullets visible so users can sense quality.
- - Let free users open a limited number of full resumes per week (e.g., 3) before hitting the paywall. That “first
- taste” can be what actually converts.
- - Consider leaving high-res thumbnails visible but blurred only in the drawer so the home grid still looks rich.
- 2. Earn their trust
- - Highlight one or two sample resumes (/directory/{id}?demo=true) that free users can browse end-to-end. Seeing what
- “full access” looks like builds confidence in upgrading.
- - Showcase testimonials or “This resume led to X interview” snippets to prove value.
- 3. Align gating with use cases
- - Job seekers want comparisons: maybe allow the first resume per search filter to show the top bullet, then mask the
- rest. Enough to get a sense, not enough to copy.
- - If users are uploading their own resume, consider granting temporary full access for that upload session (e.g., 72
- hours) so they understand the platform’s value.
- 4. Communicate the upgrade story
- - In the preview drawer, make the messaging empathetic: “You’re seeing a limited snapshot. Upgrade to read how this
- candidate pitched their Amazon offer.” It feels less like a brick wall.
- 5. Track behavior quickly
- - Instrument which elements free users interact with (open drawer, click upgrade, bounce). If the drop-off is high,
- relax the gating (e.g., raise saved-resume limit, show more info) while you refine the paywall.
- In short, the free tier should still let people:
- - Browse real resumes (with partial visibility)
- - Run a limited number of AI tailoring sessions
- - Save a few favorites
- - Experience the UI/UX end-to-end
- The paywall then upsells deeper insights, unlimited access, and productivity boosters. If you think this balance still
- feels too restrictive once we get feedback, we can tweak quickly—e.g., allow one full resume view per day, or show a
- rotating “Featured Pro resume” completely unlocked.
- Let’s observe how users react, then iterate—happy to adjust the gating logic once we see real usage data.
Advertisement
Add Comment
Please, Sign In to add comment