fix: Revamp legal pages for Razorpay KYC submission#434
Conversation
- Refactor privacy policy, terms & conditions, and refund policy with
Indian legal compliance (DPDP Act 2023, E-Commerce Rules 2020, IT Act)
- Add dedicated contractor/consultant agreement page at /contractors
- Remove phone and address from all public-facing pages (email-only contact)
- Use generic commission language ("service fee as displayed at time of transaction")
- Add marketplace intermediary and independent contractor clauses
- Add RBI-aligned refund timelines (T+5 for failed transactions)
- Update constants with company info and February 2026 policy dates
- Email placeholders ([EMAIL]/[SUPPORT_EMAIL]) left intentional for later setup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
✅ Deploy Preview for familiarise ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Summary of ChangesHello @teetangh, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly overhauls the legal documentation and related information across the platform. The primary goal is to ensure comprehensive compliance with various Indian legal frameworks, particularly for ReservePay KYC requirements. This involves not only updating existing policies but also introducing a new agreement for contractors and streamlining public-facing contact details to reflect a more modern and legally sound operational posture. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request is a significant and well-executed overhaul of the legal pages, aligning them with Indian legal standards for ReservePay KYC. The refactoring of the privacy, terms, and refund policies into a more structured and detailed format is a great improvement. The removal of phone/address details and the consistent use of new terminology like "service fee" are well-implemented across the board. I have two main points of feedback, both related to ensuring legal clarity and consistency in the new contractor agreement and its associated metadata. Addressing these will help solidify the legal integrity of these important new pages.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix build error: remove COMPANY_INFO.address reference from about page - Add refund exception: platform fee refundable when Consultant cancels or platform fault occurs (Consumer Protection Act 2019 compliance) - Specify jurisdiction as "Bangalore, Karnataka, India" instead of generic "India" for court jurisdiction clarity - Fix contractor agreement party naming: define Practitionist as "Company" and Familiarise as "Platform" for legal clarity - Fix contractor meta description: reference Practitionist (company) instead of Familiarise (platform name) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
✅ Deploy Preview for familiarise ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request updates the platform's legal and informational pages, including a major rewrite of the Privacy Policy, Terms & Conditions, and Refund Policy to align with Indian regulations like the DPDP Act 2023. It introduces a new Contractor Agreement page, updates branding to 'Practitionist', and standardizes terminology by replacing 'commission' with 'service fee'. Feedback highlights critical compliance risks regarding the removal of the registered business address and phone number, which are necessary for payment gateway KYC. Additionally, the review suggests using the Next.js Link component for internal navigation, avoiding hardcoded statutory thresholds and business hours, and providing more specific Grievance Officer details to ensure full regulatory transparency.
I am having trouble creating individual review comments. Click here to see my feedback.
app/(pages)/constants.ts (2-7)
The removal of the address and phone fields from COMPANY_INFO, combined with the use of placeholders for email, poses a high risk of rejection for the Razorpay KYC submission. Razorpay's compliance requirements for Indian merchants typically mandate that the registered office address and a valid contact phone number be clearly visible on the website (usually on the 'Contact Us' or 'About Us' pages). Additionally, placeholders like [EMAIL] should be replaced with actual contact details before submission to avoid rejection during manual review.
app/(pages)/about/page.tsx (142-148)
Removing the 'Registered Address' section may lead to rejection of the Razorpay KYC submission. Indian e-commerce regulations and payment gateway compliance standards generally mandate that the registered business address be publicly visible on the website to verify the entity's physical existence.
app/(pages)/contractors/page.tsx (185-187)
Internal links should use the Link component from next/link instead of the standard <a> tag to enable client-side navigation and improve performance. This pattern is observed in several places across the new legal pages (e.g., /refund, /privacy, /contactus).
app/(pages)/contractors/page.tsx (203)
Hardcoding the specific GST threshold (Rs 20 lakh) in the legal agreement is not recommended as statutory limits are subject to change. It is better to use generic language referring to the 'applicable threshold under Indian law' to ensure the agreement remains accurate without requiring frequent code updates.
<li><strong>GST:</strong> Registering for and remitting Goods and Services Tax if your annual turnover exceeds the applicable threshold under Indian law</li>
app/(pages)/privacy/page.tsx (644-661)
The Digital Personal Data Protection Act, 2023 (DPDP Act) requires publishing the contact information of a designated Grievance Officer. While an email is provided, it is recommended to also include the name or specific designation of the officer to ensure full compliance with the Act's transparency requirements.
app/(pages)/terms/page.tsx (688)
The liability cap of Rs. 10,000 is a magic number hardcoded in the text. To ensure consistency across all legal documents and allow for easier updates, this value should be defined as a constant in app/(pages)/constants.ts.
app/(pages)/refund/page.tsx (481-482)
The business hours listed here (10:00 AM - 6:00 PM) are inconsistent with the BUSINESS_HOURS constant defined in app/(pages)/constants.ts (9:00 AM - 6:00 PM). This hardcoded value should be replaced with a reference to the constant to ensure site-wide consistency.
There was a problem hiding this comment.
Pull request overview
This PR revamps the public legal/policy pages to support Razorpay KYC submission and India-focused compliance language, and adds a new /contractors contractor/consultant agreement page.
Changes:
- Rewrote Terms, Privacy, and Refund pages with updated Indian compliance/legal clauses and updated “Last Updated” dates.
- Added a new
/contractorspage and linked it from Terms and support resources. - Updated shared page constants (company info, policy dates, service-fee terminology) and removed public phone/address references from Contact/About.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
app/(pages)/constants.ts |
Updates company/policy metadata and adds contractors page meta + support link. |
app/(pages)/privacy/page.tsx |
Full Privacy Policy rewrite with DPDP-aligned structure/content and redesigned layout. |
app/(pages)/terms/page.tsx |
Full Terms rewrite with marketplace intermediary + contractor relationship language and /contractors link. |
app/(pages)/refund/page.tsx |
Refund policy rewrite with fee breakdown, RBI note, and updated refund/cancellation instructions. |
app/(pages)/pricing/page.tsx |
Renames “commission” wording to “service fee” in pricing copy. |
app/(pages)/contactus/page.tsx |
Removes address/phone blocks and updates copy to email/contact-form only. |
app/(pages)/contractors/page.tsx |
New contractor agreement page for consultants, including payout/tax/non-circumvention clauses. |
app/(pages)/about/page.tsx |
Removes registered address display from About page. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| <strong>Platform Service Fee:</strong> The platform service | ||
| fee charged by Familiarise is generally non-refundable. This | ||
| fee covers the cost of maintaining the platform, facilitating | ||
| bookings, and providing customer support. However, in cases | ||
| where the service is not delivered due to a cancellation | ||
| initiated by the Consultant or a technical fault on our | ||
| platform, the full amount including the platform service fee | ||
| will be refunded. | ||
| </li> | ||
| <li> | ||
| Only the consultant's service fee portion is eligible for | ||
| refunds | ||
| <strong>Payment Gateway Fees:</strong> Transaction processing | ||
| fees charged by our payment partner (Razorpay) are | ||
| non-refundable. These fees are deducted at the time of | ||
| payment and cannot be recovered. | ||
| </li> | ||
| <li> | ||
| The displayed refund amount will be the amount you receive | ||
| after deducting non-refundable fees | ||
| <strong>Consultant's Service Fee:</strong> Only the | ||
| Consultant's service portion of the payment is eligible | ||
| for refund, subject to the cancellation terms outlined in | ||
| Section 2. | ||
| </li> | ||
| </ul> | ||
| <div className="bg-muted p-4 rounded-lg mt-4"> | ||
| <p className="text-sm"> | ||
| <strong>Example:</strong> If you paid ₹1,000 for a | ||
| consultation (₹850 consultant fee + ₹150 platform/gateway | ||
| fees), a full refund would return ₹850, not ₹1,000. | ||
| <div className="bg-blue-50 dark:bg-blue-950 p-6 rounded-lg my-6"> | ||
| <p className="text-base leading-relaxed"> | ||
| <strong>Example:</strong> If you paid Rs 1,000 for a | ||
| consultation (Rs 850 Consultant's service fee + Rs 150 | ||
| platform/gateway fees), a full refund would return Rs 850. | ||
| The Rs 150 covering platform service fees and payment gateway | ||
| charges is non-refundable. |
There was a problem hiding this comment.
Section 3 currently contradicts itself about what a “full refund” includes. You state the platform service fee is “generally non-refundable” but refundable when the Consultant cancels / there’s a platform technical fault; however the subsequent example describes a “full refund” returning only the consultant portion and says platform/gateway fees are non-refundable. Please clarify the refund breakdown per scenario (e.g., distinguish student-initiated eligible cancellation vs consultant/platform-fault cases) and adjust the example wording accordingly to avoid misleading users.
| This applies to all refund scenarios described in this policy, | ||
| including cancellations within the eligible window, | ||
| Consultant-initiated cancellations, and other approved refund | ||
| requests. |
There was a problem hiding this comment.
This sentence says the Section 3 fee breakdown “applies to all refund scenarios … including … Consultant-initiated cancellations”, but earlier in the same section you say Consultant-initiated cancellations/technical faults will refund the full amount including the platform service fee. Please reconcile these statements so the policy is internally consistent about whether the platform service fee is refunded in consultant-cancel/platform-fault cases.
| This applies to all refund scenarios described in this policy, | |
| including cancellations within the eligible window, | |
| Consultant-initiated cancellations, and other approved refund | |
| requests. | |
| This fee breakdown applies to standard refund scenarios | |
| described in this policy, including cancellations within the | |
| eligible window and other approved refund requests, except | |
| where Section 3 specifically states that the full amount, | |
| including the platform service fee, will be refunded for | |
| Consultant-initiated cancellations or technical faults on our | |
| platform. |
| <p className="text-lg"> | ||
| <strong>Business Hours:</strong> Monday – Friday, 10:00 | ||
| AM – 6:00 PM IST | ||
| </p> |
There was a problem hiding this comment.
Business hours are hard-coded here as “Monday – Friday, 10:00 AM – 6:00 PM IST”, but the shared BUSINESS_HOURS.weekdays constant (used on /contactus) is “Monday - Friday: 9:00 AM - 6:00 PM IST”. To avoid inconsistent public info, please either reuse BUSINESS_HOURS here or align the values across pages.
| <ul className="space-y-2"> | ||
| {SUPPORT_LINKS.map((link) => ( | ||
| <li key={link.href} className="text-sm"> | ||
| <a | ||
| href={link.href} | ||
| className="text-blue-600 hover:underline" | ||
| > | ||
| • {link.label} | ||
| {link.label} | ||
| </a> | ||
| </li> |
There was a problem hiding this comment.
The support links list no longer renders any bullet/marker: the • prefix was removed from the link label, and the surrounding <ul> doesn’t use list-disc/list-inside. If the intent is still a bulleted list, please restore a marker (either the • prefix or appropriate list-style classes) to avoid the list looking like plain stacked text.
| // Pricing Page Data | ||
| export const PRICING_DATA = { | ||
| howItWorks: [ | ||
| "Consultants set their own rates based on their expertise and market demand", | ||
| "You see the exact price before booking any session", | ||
| "No hidden fees - the displayed price is what you pay", | ||
| "Platform commission is already included in the price", | ||
| "Platform service fee is already included in the price", | ||
| ], | ||
| commissionBenefits: [ | ||
| "Maintain secure payment processing infrastructure", | ||
| "Provide integrated video conferencing and communication tools", | ||
| "Host and deliver course materials and content", | ||
| "Ensure platform security and data protection", | ||
| "Offer 24/7 customer support", | ||
| "Offer customer support", | ||
| "Continuously improve the user experience", | ||
| ], |
There was a problem hiding this comment.
PRICING_DATA.commissionBenefits is now describing the platform “service fee” (not a commission). Since this constant is used to render the “Platform Service Fee” section, the key name is misleading and may confuse future edits. Consider renaming it (and updating its usages) to reflect the new terminology (e.g., serviceFeeBenefits).

Summary
/contractors[EMAIL]/[SUPPORT_EMAIL]) left intentional — to be filled before go-liveChanges
New Page
/contractors— Independent contractor agreement for consultants, covering relationship definition, obligations, payment terms (Razorpay), tax responsibilities (GST/TDS), IP ownership, non-circumvention, termination, liability, and confidentialityLegal Compliance Added
Key Legal Clauses
Files Changed
app/(pages)/constants.tsapp/(pages)/privacy/page.tsxapp/(pages)/terms/page.tsxapp/(pages)/refund/page.tsxapp/(pages)/pricing/page.tsxapp/(pages)/contactus/page.tsxapp/(pages)/contractors/page.tsxTest plan
npm run buildto verify no TypeScript errors from removed fields/privacy,/terms,/refund,/pricing,/contactus,/contractors/contractors) resolve correctly[EMAIL]/[SUPPORT_EMAIL]placeholders before merging🤖 Generated with Claude Code