FERPA · 34 CFR Part 99 · 20 U.S.C. §1232g

Built FERPA-first.
Not bolted on.

Pinnova is the only K-12 transportation platform where FERPA isolation is enforced at the database query layer, not by promise. TDE-at-rest, audit trail on every PII read, brute-force-blocked parent lookups. Your IT director and counsel can read the implementation in 15 minutes.

Three controls your auditor will look for

Most K-12 transportation tools answer "are you FERPA compliant?" with a brochure. We answer it with code paths.

🔒

Encryption at rest + transit

DigitalOcean Managed Postgres in US East (NYC) with TDE on disk (AES-256, DO-managed keys) and TLS 1.2+ on every client connection. Daily automated backups with 7-day retention.

🛡️

Tenant isolation at the query layer

Every FERPA record carries a district_id FK. Every API endpoint filters by the caller's district. A caller in district A literally cannot read records from district B — verified by automated tests on every deploy.

📜

Access trail on every read

Every parent lookup, driver manifest open, and student-record access writes a row to ferpa_audit_logs: who, what, when, from where. Retained 7 years separately from operational data — survives subscription cancellation.

🚫

Brute-force-blocked parent portal

Parent lookup requires student ID + DOB. Rate limit: 5/min per IP and 20/hour per (student, district). Both successful and failed attempts count. Every limit-trip is logged so admins can spot scrapers in real time.

🧹

PII scrubbed from every log line

The application logger redacts emails, phones, addresses, DOBs, and student IDs before anything is emitted. Operational logs keep request paths, status codes, and timing — never raw PII. Defense-in-depth on top of the audit table.

⚖️

Role-gated access

Admin / Dispatcher / Route Manager / Driver / Viewer — each has a tight scope. Drivers see only their own route manifest, not district-wide. Pinnova superadmin access is gated by a shared secret and every call is logged.

The control matrix

What your IT auditor will ask, and where in the implementation it lives.

FERPA / privacy controlImplementation
Encryption at restDigitalOcean Managed Postgres TDE; AES-256, DO-managed KMS
Encryption in transitTLS 1.2+ enforced on all client + intra-cluster connections
Per-tenant data isolationdistrict_id FK on every PII table; query-layer enforcement; integration test verifies zero cross-read across two seeded districts
Access logging (FERPA §99.32 record of access)ferpa_audit_logs table — row per read, includes user, subject, action, IP, route, timestamp
Brute-force resistanceSliding-window rate limit on parent lookup: 5/min/IP, 20/hr/student-district pair; 429 + audit log entry on trip
PII never in logsLogging filter redacts emails / phones / DOBs / student IDs / addresses / names; keeps district_id + req_id for ops
Role-based access controlAdmin / Dispatcher / Driver / Route Manager / Viewer — least-privilege per role; drivers see own route only
Retention after cancellation30 days for operational data, 7 years for FERPA audit trail (separate retention class)
Sub-processor disclosureDigitalOcean (hosting + DB), Stripe (billing), Resend (transactional email), Mapbox/OSRM (map tiles only — no PII transmitted)
Breach notificationDocumented privacy@pinnovatms.com + security@pinnovatms.com endpoints; commit to district notification within 72 hours of detection
"Most vendors hand us a privacy policy that doesn't match what their software actually does. Pinnova hands us a policy and tells us which lines of code enforce each clause. That's the bar."
— Hypothetical district IT director · what we want to hear

Want the FERPA brief as a PDF?

One page. Send it to your IT team and counsel. No signup.

Read the full policy