Prepared in alignment with the NIST Cybersecurity Framework v1.1 and the New York State Education Department Model Data Security and Privacy Plan.
1. Implementation of Data Security and Privacy Requirements
Juniper Consulting LLC provides educational technology products under the trade name Juniper Reading CoLab. Juniper Reading CoLab’s products — Navigate (diagnostic screener), Decode (structured phonics intervention), and Close Read (guided close reading) — serve teachers and students in grades 3–12.
This Data Security and Privacy Plan describes how Juniper Reading CoLab implements and maintains the data security and privacy requirements of its contracts with Local Education Agencies, including the National Data Privacy Agreement executed through the Student Data Privacy Consortium.
The founder and sole operator of Juniper Consulting LLC maintains direct oversight of all data processing, security operations, and privacy compliance throughout the life of each contract. There are no employees with access to student data other than the founder. This direct-control model means there is no delegation chain for privacy compliance decisions — every policy described in this plan is implemented and monitored by the same individual who signs the DPA.
This DSPP is reviewed and updated at minimum annually, and whenever a material change occurs in Juniper Reading CoLab’s products, infrastructure, or subprocessor relationships.
2. Administrative, Operational, and Technical Safeguards
2.1 Data Minimization
Juniper Reading CoLab’s primary safeguard is aggressive data minimization. Student records contain only a first name (or initials, at the teacher’s discretion). We do not collect student last names, email addresses, phone numbers, home addresses, dates of birth, student ID numbers, Social Security numbers, or any other personally identifiable information beyond first names. Students do not create accounts. Students access Juniper products through system-generated access codes provided by their teacher.
2.2 Technical Safeguards
All application data is stored in the United States, hosted on Supabase infrastructure in US-East (North Virginia). Supabase maintains SOC 2 Type II compliance.
- Encryption.
- All data is encrypted at rest (AES-256) and in transit (TLS 1.2+). Database connections require SSL.
- Access control.
- Row-Level Security is enabled on all 89 tables in the public schema. Client-facing tables enforce role-based access policies: teachers can access only their own students’ data, school administrators can access data within their organization, and district administrators can access data across schools within their district. Tables that are accessed only by server-side functions operate under a deny-all policy (RLS enabled, no client-facing policies), ensuring that any future client-side access fails closed rather than open. No teacher can view, query, or export another teacher’s student records.
- Authentication.
- Teachers authenticate via email and password with optional Google SSO. Sessions use secure, HTTP-only cookies scoped to the .juniperreadingcolab.com domain. Student access uses a dual-field validation system (first name + access code) with rate limiting to prevent brute-force attempts. Access codes are 7-character unambiguous alphanumeric strings with database-enforced uniqueness.
- Credential management.
- All service credentials (database connection strings, API keys, webhook secrets) are stored as encrypted environment variables in Vercel’s deployment infrastructure. No secrets appear in application source code. All source code repositories are private.
- Security headers.
- Student-facing applications deploy a comprehensive security header set including Content-Security-Policy (restricting script, style, connect, media, and image sources to known origins), X-Frame-Options (DENY), X-Content-Type-Options (nosniff), Referrer-Policy (strict-origin-when-cross-origin), and Permissions-Policy (disabling camera, microphone, and geolocation). Security header deployment is being standardized across all application surfaces.
2.3 Administrative Safeguards
The founder maintains direct familiarity with FERPA (34 CFR Part 99), COPPA (16 CFR Part 312), New York Education Law § 2-d and 8 NYCRR Part 121, and the applicable student data privacy statutes of all 18 NDPA states. No other individual has direct access to the production database or student data.
Juniper Reading CoLab does not use analytics services, advertising platforms, tracking pixels, or data brokers in any product that handles student data. The Supabase AI Assistant opt-in is set to Disabled, meaning no database schema, logs, or data are shared with third-party AI providers through the database platform.
2.4 Operational Safeguards
All code changes are deployed through a CI/CD pipeline from private GitHub repositories to Vercel. Deployments are logged. Database schema changes follow a documented migration process with explicit review, approval, and ledger tracking before application.
Stripe webhook signature verification prevents processing of forged payment events. Webhook events are logged to a dedicated audit table with event ID uniqueness constraints.
3. Training
Juniper Consulting LLC is a sole proprietorship operated by a single individual. The founder and sole operator maintains current knowledge of:
- FERPA requirements for educational technology providers, including the “school official” designation and its obligations under 34 CFR § 99.31(a)(1)
- COPPA requirements as they apply to teacher-mediated student access to educational technology
- New York Education Law § 2-d and the Commissioner’s Regulations at 8 NYCRR Part 121
- State-specific student data privacy requirements across the 18 NDPA alliance states
No employees or contractors have access to student data or personally identifiable information. Subprocessors (identified in Section 4) operate under their own privacy and security training programs and compliance certifications, and do not have discretionary access to student records outside their platform function.
4. Subprocessor Agreements and Contracting
Juniper Reading CoLab uses four subprocessors to operate its platform. Each handles only the minimum data required for its function and is bound by written data processing terms:
| Subprocessor | Purpose | Data Shared | Data Location | Compliance |
|---|---|---|---|---|
| Supabase | Database, authentication, edge functions | All application data (teacher accounts, student first names, assessment results, lesson progress) | US-East (N. Virginia) | SOC 2 Type II |
| Stripe | Payment processing | Teacher email, payment method, subscription details | United States | PCI DSS Level 1, SOC 2 Type II |
| Vercel | Application hosting and CDN | No user data stored; serves static application files and serverless functions | United States | SOC 2 Type II |
| Resend | Transactional email delivery | Teacher email address and first name | United States | SOC 2 Type II |
ElevenLabs is used for pre-generating audio narration files during content development. No student data is transmitted to ElevenLabs. Generated audio files are stored in Supabase Storage and served as static assets.
Each subprocessor is bound by its published Data Processing Agreement or equivalent contractual terms that prohibit use of data for purposes beyond providing the contracted service, prohibit re-disclosure to additional parties without authorization, and require implementation of reasonable security measures. Juniper Reading CoLab reviews subprocessor compliance posture annually.
5. Data Security and Privacy Incident Response
5.1 Incident Identification
Juniper Reading CoLab monitors for potential security incidents through:
- Supabase database and edge function logs, which record all authentication events, RLS policy violations, and function execution errors
- The audit_log table, which records student data access events with user ID, action type, resource type, IP address, and timestamp
- Stripe webhook logs, which record all payment and subscription events with processing status
- Vercel deployment logs, which record all application deployments
- Manual review of authentication patterns and access anomalies
5.2 Breach Determination and Classification
A “breach” is defined as any unauthorized release, disclosure, or acquisition of student data that compromises the security, confidentiality, or integrity of the data maintained by Juniper Reading CoLab. Good faith acquisition of student data by the founder in the course of operating the service is not a breach, provided the data is not used in violation of applicable law.
5.3 Notification Procedures
Upon confirmation of a breach involving student data:
- Within 24 hours: Initial notification to all affected LEAs. For Virginia LEAs, this satisfies the requirement under Virginia Code § 2.2-5514(c). For all other LEAs, this serves as the initial report pending the detailed notification.
- Within 72 hours: Detailed notification to all affected LEAs containing: (i) the types of personal information involved; (ii) the date or estimated date range of the breach; (iii) a general description of the incident; (iv) the estimated number of affected students; (v) the name and contact information of Juniper Reading CoLab’s representative for inquiries.
- LEAs are responsible for providing notice to affected students, parents, or guardians. Juniper Reading CoLab will cooperate with LEAs in preparing that notification.
5.4 Containment and Remediation
Upon identifying a suspected breach, the founder will:
- Immediately revoke or restrict access to the affected systems or data
- Preserve all relevant logs and forensic evidence
- Determine the scope of affected data and the root cause
- Implement corrective measures to prevent recurrence
- Document the incident, response actions, and outcome
- Cooperate with LEAs and, where applicable, the NYSED Chief Privacy Officer and law enforcement
5.5 Breach Cost Responsibility
Where a breach is attributable to Juniper Reading CoLab or its subprocessors, Juniper Reading CoLab will bear the costs of notification to affected LEAs and individuals, consistent with the obligations in the applicable state supplemental terms of the NDPA.
6. Data Transition
When a contract with an LEA ends or an LEA requests return of its data, Juniper Reading CoLab provides the following data transition mechanisms:
- On written request, Juniper Reading CoLab will export all student data associated with the LEA’s teachers in a standard machine-readable format (CSV) within 60 days, or within the timeframe specified in the applicable DPA.
- Teachers may export their own data at any time by contacting hello@juniperreadingcolab.com.
- Teachers may delete individual student records at any time from within the application.
- Data export includes: student names, assessment results, screener responses, lesson progress records, and session data.
7. Secure Data Destruction
Upon written request from an LEA, or upon termination of the DPA if no request is received, Juniper Reading CoLab will securely destroy all student data associated with that LEA.
7.1 Destruction Methods
Student data destruction is performed via hard deletion from the Supabase PostgreSQL database using a verified cascading deletion function (delete_account_full). This function executes 25 count-verified delete operations across all tables that hold student or teacher data, including student records, assessment results, screener responses, lesson progress, session data, Close Read activity records, app visits, coaching progress, entitlement logs, and audit log entries. Each operation counts expected rows before deletion and compares against actual rows deleted; any mismatch aborts the entire transaction. The function writes a deletion_records tombstone confirming the deleted user, student count, and class count. Dependent child records are removed through a combination of explicit function-managed deletion and database-level ON DELETE CASCADE constraints.
7.2 Destruction Certification
Following destruction, Juniper Reading CoLab will provide the LEA with written certification confirming: (i) the date of destruction; (ii) the categories of data destroyed; (iii) the method of destruction; and (iv) confirmation that no copies of the data remain in any Juniper system or subprocessor system, except for de-identified data as permitted by the DPA.
7.3 Automated Retention Practices
Student data associated with expired trials or cancelled subscriptions is retained until July 31 of the current school year (August 1 – July 31 cycle) or 90 days after the trial or subscription ends, whichever is later. Teachers receive email notification 30 days before any automatic data deletion.
8. Alignment with LEA Policies
Juniper Reading CoLab’s data security and privacy program is designed to align with the data security and privacy policies of the LEAs it serves. Upon execution of a DPA, Juniper Reading CoLab will review the LEA’s Data Security and Privacy Policy (where provided, such as in Exhibit J for New York LEAs) and confirm alignment.
Juniper Reading CoLab’s practices are designed to meet or exceed the requirements of the Parents’ Bill of Rights for Data Privacy and Security as required by New York Education Law § 2-d. Upon request, Juniper Reading CoLab will provide New York LEAs with a completed Parents’ Bill of Rights supplement.
Where an LEA’s policy includes requirements beyond those described in this DSPP, Juniper Reading CoLab will work with the LEA to document any necessary adjustments or to confirm that existing practices satisfy the requirement.
9. NIST Cybersecurity Framework Alignment
The following table describes how Juniper Reading CoLab’s data security and privacy practices align with the NIST Cybersecurity Framework v1.1, as required by 8 NYCRR Part 121 for New York LEAs and as referenced in the NDPA Exhibit F.
| Function | Category | Juniper Reading CoLab Response |
|---|---|---|
| IDENTIFY | Asset Management (ID.AM) | Juniper Reading CoLab maintains an inventory of all systems that process student data: Supabase (database/auth, US-East), Vercel (hosting/CDN), Stripe (payments), and Resend (transactional email). Seven private GitHub repositories contain application source code. All infrastructure components and their data flows are documented. Hardware assets are limited to the founder’s development workstation; no on-premises servers are operated. |
| IDENTIFY | Business Environment (ID.BE) | Juniper Reading CoLab is a sole-proprietor educational technology company serving K–12 schools. Mission-critical data consists of teacher accounts and student assessment/progress records. Student records contain first names only — no other student PII. The platform serves individual teachers and school/district customers under formal Data Privacy Agreements. |
| IDENTIFY | Governance (ID.GV) | Privacy and security governance is maintained through this DSPP, the published Privacy Policy, Terms of Service, and executed DPAs. The founder maintains direct oversight of all compliance obligations. This DSPP is reviewed at minimum annually. |
| IDENTIFY | Risk Assessment (ID.RA) | A security hardening checklist was completed prior to launch, covering: RLS policy verification across all tables, secret key exposure scanning across all repositories, authentication rate limiting, session expiration configuration, and audit log implementation. Risks are reassessed when new products are launched or infrastructure changes are made. |
| IDENTIFY | Risk Management Strategy (ID.RM) | Data minimization is Juniper Reading CoLab’s primary risk management strategy. By collecting only student first names and no other PII, Juniper Reading CoLab reduces the impact surface of any potential breach. Subprocessors are limited to four services, each selected for their compliance posture and limited to minimum-necessary data access. |
| IDENTIFY | Supply Chain Risk Management (ID.SC) | Subprocessor relationships are limited to Supabase, Stripe, Vercel, and Resend, each operating under published DPAs or equivalent contractual terms. ElevenLabs is used for content development only and receives no student data. Subprocessor compliance certifications are reviewed annually. No student data is shared with any party for purposes beyond operating the service. |
| PROTECT | Access Control (PR.AC) | Row-Level Security is enabled on all 89 tables in the public schema, enforcing role-based data access (teacher → own students; school admin → organization; district admin → child organizations). Student access uses name + access code dual-field validation with durable rate limiting (30 failures per IP per 15-minute window, exponential backoff, counted via audit_log). Teacher authentication uses email/password or Google SSO with HTTP-only session cookies. |
| PROTECT | Awareness and Training (PR.AT) | The sole operator maintains current knowledge of FERPA, COPPA, NY Ed Law § 2-d, and applicable state student data privacy statutes. No other individuals have access to student data. Subprocessors operate under their own security training programs. |
| PROTECT | Data Security (PR.DS) | All data is encrypted at rest (AES-256 via Supabase/AWS) and in transit (TLS 1.2+). Database connections require SSL. Data is stored exclusively in the United States (Supabase US-East, North Virginia). Supabase maintains SOC 2 Type II compliance. No service_role keys or secret keys are present in application source code; all secrets are stored as encrypted environment variables. |
| PROTECT | Information Protection Processes and Procedures (PR.IP) | Security policies are documented in this DSPP and the Privacy Policy. Code changes follow a documented CI/CD pipeline from private GitHub repos through Vercel deployment. Database migrations follow a ledger-tracked process with explicit approval before application. .gitignore files enforce exclusion of environment files from version control. |
| PROTECT | Maintenance (PR.MA) | Infrastructure maintenance (database, hosting, CDN) is managed by Supabase and Vercel under their respective SLAs. Application updates are deployed through the CI/CD pipeline. The founder performs all application-level maintenance directly. |
| PROTECT | Protective Technology (PR.PT) | Student-facing applications deploy Content-Security-Policy, X-Frame-Options (DENY), X-Content-Type-Options (nosniff), Referrer-Policy, and Permissions-Policy headers. Authentication sessions use secure, HTTP-only cookies that do not contain PII. Stripe webhook signature verification prevents processing of forged events. Access code uniqueness is enforced at the database level via UNIQUE constraints. |
| DETECT | Anomalies and Events (DE.AE) | Supabase provides database query logs and edge function execution logs. The audit_log table records student data access events with user ID, action, resource type, and IP address. Webhook events are logged with processing status and error tracking. Anomalous authentication patterns (repeated failed logins, unusual access patterns) are detectable through log review. |
| DETECT | Security Continuous Monitoring (DE.CM) | Application activity is monitored through Supabase logs (database and edge functions), Vercel deployment logs, and the internal audit_log and webhook_log tables. Authentication events and RLS policy violations are logged by Supabase. The founder reviews logs as part of regular operational monitoring. |
| DETECT | Detection Processes (DE.DP) | Detection relies on log review, audit table monitoring, and Stripe webhook status tracking. Automated processes flag failed webhook deliveries and authentication anomalies. The founder performs manual log review as part of regular operations. |
| RESPOND | Response Planning (RS.RP) | The incident response plan in Section 5 of this DSPP defines notification timelines (24-hour initial, 72-hour detailed), containment procedures, and communication protocols. The plan is reviewed annually and updated following any incident. |
| RESPOND | Communications (RS.CO) | The founder handles all breach communications directly with affected LEAs. Contact information for LEA designated representatives is maintained for all districts with signed DPAs. Juniper Reading CoLab cooperates with law enforcement and the NYSED Chief Privacy Officer as required. |
| RESPOND | Analysis (RS.AN) | The audit_log table, webhook_log table, Supabase database logs, and Vercel deployment logs provide the forensic trail for incident analysis. Supabase provides database access logs that identify all queries executed against student data. |
| RESPOND | Mitigation (RS.MI) | Incident containment capabilities include: revoking database access and API keys, invalidating user sessions via Supabase Auth, disabling edge functions, and executing the delete_account_full function (25 count-verified table deletions with tombstone) for complete data removal when necessary. |
| RESPOND | Improvements (RS.IM) | Post-incident reviews are incorporated into the security hardening process. Lessons learned are documented and applied to prevent recurrence. This DSPP is updated to reflect any process changes resulting from an incident. |
| RECOVER | Recovery Planning (RC.RP) | Supabase Pro provides automated daily database backups with 7-day retention. Application code is version-controlled across seven private GitHub repositories, enabling rapid redeployment. Vercel provides instant rollback to any previous deployment. |
| RECOVER | Improvements (RC.IM) | Recovery procedures are refined based on operational experience and any incidents. Backup and restoration capabilities are verified periodically. |
| RECOVER | Communications (RC.CO) | Following incident resolution, Juniper Reading CoLab communicates the outcome and any corrective measures to affected LEAs. Recovery timelines and status updates are provided directly to LEA designated representatives. |
Document History
| Version | Date | Description |
|---|---|---|
| 1.0 | September 2026 | Initial version, prepared for 18-state NDPA (Exhibit K) |
This Data Security and Privacy Plan is maintained by Juniper Consulting LLC and is subject to update.
© 2026 Juniper Reading CoLab — Juniper Consulting LLC. All rights reserved.