← Jack Quinn

Case study · D2 Labs

MyVoice

An anonymous feedback platform that turns what teachers say about their school into plans leaders can act on and track.

Role
Founding engineer
Client
D2 Labs
Period
2022 – present
~20,000educators using it
~200districts
6states
A MyVoice theme page for Coverage and planning time at Lincoln Middle School, rising with 42 mentions across 9 teams. On the left, anonymized staff quotes and three patterns the agent found. On the right, an agent-drafted action plan awaiting the leader's review: a goal, four actions with owners, due dates and measures, and an update for the staff who raised it, with buttons to regenerate, edit, or approve and assign.
Leader view An action plan the agent drafted from one rising theme, waiting for the leader to review it. Screens on this page are wireframes with demo data.

Teachers won’t be candid if they can be identified

Our client works with schools across the country, and it kept seeing the same pattern: trust and satisfaction between educators and the people who run their schools were low. It wasn’t a handful of bad schools. It was a national trend. They hired D2 Labs to develop the concept with them and build the platform: a way to collect feedback from educators anonymously, track it over time, and show school leaders the real problems in their workforce at a glance.

Before MyVoice, the usual channel was a town hall: educators and leadership in a room together, often on a planning day. The trouble is the room. Teachers get nervous about being completely honest face to face, in front of their peers and their supervisors, so the hardest problems tend to stay unsaid.

The whole thing depends on honesty. A teacher who thinks their principal could work out who said something will soften it or say nothing. Anonymity is what lets real change happen, and the system is what carries it through, taking the discomfort out of the process. So the guarantee had to be real, which meant building it into the architecture from the start instead of adding it later.

A theme, a plan, and proof it worked

Interactive 01

One theme, two school years.

Drag through the timeline to follow one theme at one school, from rising mentions to a plan and back down.

Coverage & planning time mentions9
Since the plan went live—
50250Plan live9234224136
Staff take the fall pulse.

Teachers at Lincoln Middle School share what’s affecting their work. MyVoice groups the responses into themes, and Coverage & planning time comes up 9 times.

Illustrative. The counts are demo data, not results from a real school.

The MyVoice staff app on a phone, titled You said. We did. Cards show what the school is doing about themes staff raised: a rotating coverage schedule in progress with its steps and owner, staggered 6th-grade passing periods completed with buttons asking whether it's helping, and a planned Friday staff digest.
Teacher view Staff see what their school is doing about what they raised, and say whether it's working.

Feedback comes in through pulses: short check-ins a school runs through the year. Staff pick what their feedback is about, describe what’s happening in their own words, and can say what would help. MyVoice groups the responses into themes and tracks how often each one comes up from one pulse to the next, so leaders can see what’s rising, what’s holding steady, and what’s easing.

MyVoice calls the plans action plans. An action plan answers one theme with a goal, a set of actions, an owner and due date for each, and a way to tell whether it worked. A rotating coverage schedule, because teachers keep losing their planning periods to cover for absent colleagues, is a typical one.

The agent doesn’t write a plan and hand it over. It reads what staff said about a theme, finds the patterns behind it, and drafts a plan for a leader to review. The leader can regenerate it, edit it, or approve it and assign the actions. What comes out is a live plan inside the platform, tracked step by step, not a document.

Approving a plan also closes the loop. The draft includes an update for the staff who raised the theme, and once it’s approved they can see what their school is doing about it, follow its progress, and say whether a finished plan is helping. The next pulse shows whether the theme is easing.

The MyVoice culture overview for Lincoln Middle School's fall pulse. Summary cards show 214 responses, 71% participation, 7 active themes and 3 plans in progress. Emerging themes are ranked by mentions, led by Coverage and planning time. An agent summary explains what's changing, with buttons to draft an action plan or see its 42 sources, beside participation by team and anonymized excerpts from recent responses.
Leader view What the agent starts from: the school's themes, ranked by mentions, and its summary of what's changing. The draft at the top of this page is what it wrote for the top theme.

What I built

I’ve been the only engineer on MyVoice since 2022, responsible for discovery, architecture, implementation, validation, and the long-term support that follows.

MyVoice is a Next.js app backed by Postgres, and we host it ourselves on AWS Lambda. The agents run on Claude through Anthropic’s SDK.

Interactive 02

Where anonymity is enforced.

Select a part of the system. Below the line, MyVoice knows people only by their anonymity ID.

The next pulse shows whether the plan worked.

Anonymity is decided here, once.

Every user has an anonymity ID, and it is the only identifier their responses carry past this point. Reporting, the agent, and the national view are all built on anonymity IDs, so none of them has anything that leads back to a person.

Anonymity is part of the data model

Promising teachers anonymity in the interface isn’t enough. It has to hold everywhere the data goes, including places nobody thought about when the promise was made.

The MyVoice staff app on a phone, step 2 of 3 of the fall pulse. A teacher picks Workload as the topic, describes covering six classes in two weeks, and suggests a rotating coverage schedule. A note says names are never shown to school leaders, above a Submit anonymously button.
Teacher view Leaders see grouped themes, never the name behind a response.

So in MyVoice, anonymity is decided by how responses are stored. Every user has an anonymity ID, and that ID is what their responses are saved against. Reporting works only with anonymity IDs, which keeps individual people out of every report.

That matters most at the top. Because multi-tenancy is built into the architecture, D2 Labs can look at trends like teacher happiness, retention, and student success across districts and states from one national view. That view is built from the same anonymized data, so the guarantee a teacher gets in one school still holds when their responses become part of a national number.

Hiding names isn’t enough on its own. If a team has three teachers, a theme that only comes from that team is easy to trace back. So the data system won’t report a result unless enough people contributed to it, with the minimum sample size set for each district.

The agent never sees who said what

The simplest way to keep an agent from revealing a source is to never give it one. The agent doesn’t know where any piece of feedback came from. It only sees responses saved against anonymity IDs, with no names or accounts attached, so it has nothing identifying to leak, even by accident.

The rest of the agent’s behaviour is checked by evals (automated tests of its output) that run in CI, on every code change. One set covers guardrails, meaning the edge cases we never want to see in production:

A second set checks the quality of the work, and it exists because of a real failure. Early on, the agent was suggesting fairly generic solutions. It had tools for searching the district’s solutions library, the plans it had used before, saved as reference, but it often didn’t use them, so the plans it proposed ignored what that district had already tried.

To fix it, we built a series of increasingly complicated requests into the eval suite and tuned when the agent calls its tools, and in what order, until the solutions library was actually applied. Those cases now run in CI with the guardrail checks, so a change that makes the agent generic again fails before it ships.

Six states and counting

MyVoice first rolled out in late 2022 through our client partnership. It now reaches about 20,000 educators in about 200 districts across six states, and it’s still expanding.

Much of that growth comes from people who use the product. District champions in Georgia and Arizona bring new districts onto the platform in their states. We also have a strong presence and connections in the public sector, and a busy pipeline of new states.

Districts use it for real planning, too. On average a district creates two or three action plans a semester, which adds up to hundreds of plans across the platform. Most are large plans tracked over a long period, not quick fixes. On average, the workforce happiness metrics we track go up at schools that use MyVoice.