Practitionist / Practitionist/elluminar_web
Scholarship campaign engine (₹-denominated, quantified)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 1
- Forks
- 0
- Avg merge
- 17h 2m
- Merged PRs (30d)
- 18
Description
Why / Context
Teardown STEAL (Crio): quantified, ₹-denominated scholarship marketing ("₹60,000 scholarship") outperforms vague "financial aid available" language — a discount framed as a specific win raises perceived value versus an equivalent blanket price cut. PRD §8.6 also lists need/merit scholarships as a trust + distribution lever.
Schema already in place — NO migration required
Coupon.campaigntag + full coupon machinery (scoping, windows, redemption caps, per-user limits)CouponRedemptionfor reporting;Waitlist(source)for application intake- Quiz infra can power merit tests (scholarship qualifier quiz)
Implementation plan
- Campaign model on top of coupons (
src/lib/growth/scholarships.ts): a scholarship campaign = config (name, ₹ value framing, eligibility mode: open/need-based/merit-test, seat count, window) + generated single-use coupons under onecampaigntag. - Application flow: landing page per campaign (₹-denominated headline, deadline countdown), application form (need-based: statement fields; merit: qualifier quiz via existing Quiz with pass threshold), review queue for need-based.
- Award flow: approval issues a personal single-use coupon (max discount = advertised ₹ value) with expiry; award email; unclaimed-award reminders.
- Merit auto-award: qualifier quiz pass → instant coupon issuance (rate-limited, one attempt policy via maxAttempts).
- Campaign ops (admin): seats remaining, awards issued/redeemed, revenue impact (redemption discount totals vs conversions), close/extend controls.
- Marketing surfaces: scholarships index page, campaign OG cards, storefront banners for creator-funded campaigns (tenant-scoped coupons — creators can fund their own).
- Guardrails: stacking rules (scholarship coupons don't combine with other discounts — pricing engine flag), fraud checks on multi-account claims (pairs with referral fraud heuristics).
Acceptance criteria
- Campaign page advertises a ₹-value scholarship with live seat counter and deadline
- Merit path: pass the qualifier quiz → receive a working single-use coupon automatically
- Need-based path: apply → admin approves → coupon email → redemption tracked under the campaign tag
- Advertised ₹ cap never exceeded at checkout; no stacking
- Campaign report shows awards, redemptions, and attributable revenue
Dependencies / sequencing
- MVP M7 (coupons) + M9 (quizzes); issue #12 for conversion reporting
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading src/lib/growth/scholarships.ts and the existing Coupon, CouponRedemption, Waitlist, and Quiz machinery, then review dependencies M7, M9, and issue #12. The work is done when the campaign, application and award flows, admin reporting, marketing surfaces, and stated coupon guardrails satisfy all acceptance criteria.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend, frontend, full-stack
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100