The Self-Serve User Rights Portal

The Legal “Must-Haves”

The Identifiers

Rule: You must define exactly what ID is needed.

EdTech Specifics: Accept Enrolment ID, Application Number, or Registered Mobile/Email.

The Means

Rule: You must “prominently publish” the means to request rights.

UI Requirement: It must be digital and accessible (no physical letters).

The SLA

Rule: Grievance response timeline must not exceed 90 days.

Requirement: Technical measures must be in place to track this deadline.

Information Architecture

  • Title: Privacy & DPDP Requests
  • Micro-copy: “Submit and track your DPDP requests using your registered email/mobile or enrollment ID.”
  • UI Cards:
    1. Manage Consent & Notices (Link to Settings)
    2. Submit a DPDP Request
    3. Track Existing Requests
    4. Raise a Grievance
    5. Contact Helpdesk
  • Design Note: Use large clickable tiles, not a dropdown.
  • Tiles:
    • ℹ️ Access / Information (What data do you hold?)
    • ✏️ Correction / Update (Fix profile/parent details)
    • 🗑️ Deletion / Erasure (Remove account/history)
    • 🚫 Withdraw Consent (Stop processing)
    • 👥 Nomination (Assign a nominee)
  • Common Fields (All Requests):
    • Identifier (Email / Mobile / Enrollment ID)
    • Role Selector (Student / Parent / Teacher / Admin)
    • Description (Max 500 chars)
    • Attachment Upload (Optional)
  • Specific Fields:
    • If Correction: “Field to correct” + “Correct Value”
    • If Deletion: “What to delete?” (Account vs. Specific Chat/Content)
    • If Access: “Preferred Format” (PDF / In-App)
  • Visual Timeline: SubmittedUnder VerificationIn ProgressAction TakenClosed
  • Ticket Details: Ticket ID, Submission Date, Response History.
  • Note: This must be separate from standard rights requests.
  • Fields:
    • Category (Delay, Denial, Incorrect Response)
    • Related Ticket ID (Link to previous request)
    • Preferred Contact Mode

The Fulfillment Workflow

Developer Specs: Data Model & Schema

/* DPDP Request Tables */
TABLE dpdp_requests (
    ticket_id          VARCHAR(50) PRIMARY KEY,
    user_identifier    VARCHAR(100),  -- Enrolment ID or Mobile
    request_type       ENUM('ACCESS', 'CORRECT', 'DELETE', 'WITHDRAW', 'NOMINEE'),
    status             ENUM('VERIFYING', 'OPEN', 'ACTION_TAKEN', 'CLOSED'),
    created_at         TIMESTAMP,
    sla_due_date       TIMESTAMP
); [cite: 1274]

TABLE dpdp_request_messages (
    ticket_id          VARCHAR(50),
    sender             VARCHAR(50),   -- User or System
    message            TEXT,
    created_at         TIMESTAMP
); [cite: 1275]

TABLE dpdp_verification_events (
    ticket_id          VARCHAR(50),
    method             VARCHAR(20),   -- OTP_MOBILE, MAGIC_LINK
    verified_at        TIMESTAMP
); [cite: 1276]

TABLE dpdp_grievances (
    grievance_id       VARCHAR(50) PRIMARY KEY,
    ticket_id          VARCHAR(50),   -- Linked original request
    category           VARCHAR(50),
    sla_due_date       TIMESTAMP      -- Must be <= 90 days
); [cite: 1277]

“Copy-Paste” Text Blocks

Portal Footer (Mandatory Contact Info)

DPDP Helpdesk: privacy@yourdomain.com Contact Person: DPDP Support Officer (or DPO) Note: This must be visible on every screen.

The “Means” Text

“You can submit DPDP requests through this portal. Please keep your registered email/mobile or enrollment ID handy.”

The Grievance Promise

“We respond to grievances within 90 days.”

Need this portal built in 2 weeks?

We have the UI wireframes, SLA logic, and email templates ready to deploy.