Composite study

This is a product-class write-up, not a named-client story and not a results press release. Counts below describe the pack we actually write (approach points, tools, layers) — not invented bug totals or conversion lifts.

4
Approach points
5
Tools in the pack
5
Layers covered
3
Challenges documented

Overview

The copilot answered “how is my child doing?” for a parent with two linked students — then mixed the children. A student token could retrieve another roster row through the tools API.

Generated worksheets included real student first names from the class list that had been stuffed into the prompt “for personalization.”

Industry pattern this is grounded in

FERPA and COPPA shape what you log and what models may train on. District chatbot rollouts have also stalled when vendors and privacy reviews could not keep up. Isolation is the launch gate.

Highlights

Typical launch bar: Wait until journeys and evals agree — do not ship on demo scores alone.

Challenges

01

Personalization and privacy pulled in opposite directions.

02

Under-13 accounts needed COPPA-constrained vendors; the default LLM route was the consumer API.

03

School Wi-Fi and a 40-student submit spike were nothing like the office demo.

How we tested

01

Role matrix: student, parent (linked children only), teacher (this class), admin (this school).

02

IDOR on gradebook and submissions.

03

No training on student work by default; check vendor data-use flags.

04

Peak submit during a class period — lost homework is a P0.

Starting point vs what we required

Starting point versus the controls we required
Starting pointWhat we required
Personalization and privacy pulled in opposite directions.Role matrix: student, parent (linked children only), teacher (this class), admin (this school).
Under-13 accounts needed COPPA-constrained vendors; the default LLM route was the consumer API.IDOR on gradebook and submissions.
School Wi-Fi and a 40-student submit spike were nothing like the office demo.No training on student work by default; check vendor data-use flags.

What we delivered

01

API / contract

  • Postman — Gradebook IDOR and parent linking
02

Journeys / UI

  • Playwright — Parent vs student vs teacher views
03

Adversarial evals

  • Promptfoo — Prompt injection to dump roster
04

Load / soak

  • k6 — Class-period submit spike
05

Accessibility

  • axe DevTools — Public-facing parent login

Outcomes

Tool calls carried the authenticated student/parent scope; extra ids in the prompt were ignored. Names were not injected into generation prompts.

k6 on submit plus Postman gradebook IDOR were the release checks. Consumer-API training flags were treated as a Block until the school-approved endpoint was used.

Stack

Testing stack used on this product class
LayerToolWhat we validated
API / contractPostmanGradebook IDOR and parent linking
Journeys / UIPlaywrightParent vs student vs teacher views
Adversarial evalsPromptfooPrompt injection to dump roster
Load / soakk6Class-period submit spike
Accessibilityaxe DevToolsPublic-facing parent login

Same method as the rest of our work: severity-ranked findings, pass rules in writing, and a ship / wait / block call. See the evaluation method and tool comparison.