Make the unwritten rules written.
Live: https://askcommonground.vercel.app No account, no login, no setup. Paste a brief, or press Use an example.
Built for IncludAI 2026, the neurodiversity hackathon run by IncludEDU in partnership with the Stanford Network for K-12 Neurodiversity Education and Advocacy.
An assignment brief says: "critically analyse a contemporary issue… explore the topic… use appropriate sources… as discussed in the seminar, follow the usual format. Groups should organise themselves."
Six things are missing and none of them are marked as missing. How long is it? What do you hand in? What are the marks actually for? Does "discuss" mean weigh both sides or argue a position? How many is "appropriate"? Who does what — and do you all get the same mark?
Some students fill those gaps by reading the room, asking a friend, or having absorbed the conventions without noticing. That's the hidden curriculum:
"Neurotypical pupils often absorb these 'school rules' intuitively, while autistic pupils are expected to work them out."
Everyone else pays for the gaps in time, in stress, and in marks — and the cost lands hardest on autistic and ADHD students, students working in a second language, and anyone who missed the class where it was explained.
Group work makes it worse. The finding that shaped this project:
"It wasn't the content that caused difficulty, it was the unpredictability of peer communication."
The work isn't the hard part. The unwritten social process around it is.
Four tools, all built on the same idea: take something that is normally decided implicitly, and write it down.
Paste an assignment. It returns what finished looks like (a concrete, checkable list, derived only from what the brief says), what you hand in, and questions worth asking — grouped by kind, each quoting the exact text that triggered it and giving you a sentence you can send straight to a teacher.
It does not rewrite the brief. It does not write the assignment. It names the gaps and hands them back as questions.
And then it closes the loop. A tester pointed out the failure mode of the whole idea: "thirty people asking the same five questions is how a tutor stops replying." So when you get an answer, you write it down against that question — and the question leaves your email. Share the link with your group and it leaves everyone's. One person asks, everybody has the answer, and the thirtieth person sends an email with nothing in it.
Roles usually get decided by talking, fast, in the first meeting. That reliably favours whoever is most comfortable negotiating out loud.
Instead: everyone answers the same four questions — which parts they want, how they'd rather contribute, how much notice they want before a meeting, how they want feedback. The split comes out of stated preferences, and every allocation carries a reason quoting what that person chose.
It ends with a working agreement that accommodates the widest stated need and never says whose it was. If one person asks for several days' notice, the group norm becomes several days' notice — stated as a group rule, with no name attached. That is the mechanism by which someone gets what they need without disclosing why they need it.
There is no model call in the allocation, deliberately. If a group disputes the split, "the AI decided" is not an acceptable answer.
A decision is only a decision once it is written down. Otherwise agreement has to be inferred from tone, silence and who didn't object.
Silence is never counted as a yes. Each entry shows who has agreed and who has not answered — displayed as its own state, with the page saying plainly that not answering is not the same as disagreeing. Raising something in writing is a first-class entry: you never have to win a turn in a live conversation to get something on the record.
There is also a private, on-device-only panel showing things you raised that nobody answered. Never aggregated, never shared, never sent anywhere.
The obvious version of this is a teacher dashboard that watches groups. That is deliberately not what this is. A tool that reports on students to an authority figure is surveillance regardless of intent.
So it is reversed: the group composes this page, and the group decides whether to send it. No teacher login, no dashboard, no feed of groups. Everything on it is a fact about the project — decisions not yet confirmed, questions open five days or more, parts of the work with no owner. No participation score, no per-student count, no judgement about any person.
/judges is a three-minute guided walkthrough — what to click, in what order, and
what each part is trying to prove.
Every check, listed straight from the array the engine runs, so the tool can be read without cloning it.
Neurodivergent friends of mine — from college, and friends of friends — tested this across three rounds on 8 August 2026, one of them twice. I'm not naming what any of them has. They agreed to test an app, not to have a diagnosis published next to a quote about what they find hard, and a tool built on the argument that nobody should have to disclose in order to be accommodated should not start by disclosing for them.
What they said is the part that matters.
The first session found three of the four findings on their own brief were wrong. Their brief said "Extensions follow the standard university policy" and the tool reported it had no extensions policy.
"Sending my tutor a question they already answered in writing is precisely the humiliation this tool exists to prevent."
That reframed the project. A false positive is not an accuracy bug here; it is the exact failure the product exists to prevent.
| They said | What changed |
|---|---|
| "Extensions follow the standard university policy" → reported missing | The matcher demanded an exact boundary, so "Extensions" never matched "extension" |
| "'Relevant literature' is not a quantity. If I send that, I look like I can't read English." | Standards and amounts became separate checks asking different questions |
| "Seven copies of the same question with one word swapped. Nobody sends that email." | Verbs collapse into one finding; Copy writes a sendable email |
| "That's not relief, that's a new task with 23 subtasks." | The counts became filters; the page opens on blockers only |
| "Twenty-five seconds of a static page is where I open another tab." | 23–35s → under 2s, with named progress stages |
| "Ten percent and twenty percent produce the identical sentence." | A rounding boundary collapsed them; eleven weights now give eleven distinct sentences |
| "Thirty people asking the same five questions is how a tutor stops replying." | Built the answer loop |
| "There's a person in the URL." | Names stripped from share links |
Two of them changed what the product is: they corrected the mechanism (the answers travel through group chats — social capital, not brief quality), and they named the gap the product still has ("you've solved disclosure but not conspicuousness"), which is now on the front page, credited to them.
This is the central design decision.
A tool that helps neurodivergent students specifically requires you to identify as one to use it. That means disclosure, and it means being marked out at exactly the moment you least want to be. So Common Ground is built the other way round: a tool a whole class uses, whose design happens to remove barriers that fall hardest on some people.
That principle has a name — Universal Design for Learning — and the research supports it directly: UDL "shifts inclusion from an accommodation mindset to a design mindset, one where flexibility is built in from the start," and it "minimises the burden on neurodiverse students to request accommodations and reduces the stigma."
Nobody has to disclose anything to benefit.
These are architectural commitments, not policy promises.
| Never | Why |
|---|---|
| Infer or report anything about a person | There is no account, no profile, no behavioural score. The only input is a document. A tool that detected neurodivergence and told a teacher would be outing people without consent — the opposite of the point. |
| Rewrite the brief or the student's words | ASAN's July 2025 position on generative AI in accessibility work found it "added new ideas that were not in the text we wrote" and "changes what something means." This tool extracts and asks. It never restates. |
| Write any part of the assignment | It describes the task. It does not do it. |
| Monitor, time, score or gamify | "An AI that detects a loud environment and does nothing about the resulting anxiety is not an accommodation. It is surveillance with extra steps." And masking research links performance pressure to real harm — so there are no streaks, no timers, no progress guilt anywhere in this product. |
| Teach anyone to mask | It changes the environment, not the person. Nothing here asks a student to communicate differently. |
Two layers. The first does the work; the second improves it.
18 checks across 7 categories, each a pure function over the brief text:
| Category | Looks for |
|---|---|
| The finish line | No length · no deliverable format · no deadline |
| What you're being asked to do | 14 instruction verbs markers read differently — discuss, explore, critically analyse, engage with, reflect on… — plus softened wording where required-vs-optional is unclear ("you may wish to", "ideally", "where possible") |
| How it's marked | No rubric or criteria mentioned · several parts with no weighting |
| How much | Unquantified amounts — some, several, appropriate, sufficient |
| Assumed knowledge | obviously, simply, as discussed, the usual format — the hidden curriculum, in words — plus acronyms never spelled out |
| Working as a group | No role guidance · unclear whether the mark is shared or individual · no route if it goes wrong · no group size |
| Between now and the deadline | No checkpoint · sources expected but not defined · no submission method · no extensions policy |
Every finding quotes the exact text that triggered it. Nobody has to trust a model's opinion about their assignment.
Adding a check is one entry in CHECKS. Nothing else in the codebase changes.
Extracts the summary, a checkable definition of done, the deliverables, and the separable workstreams. Rules it operates under, in code:
- Only uses what's in the brief. Never invents requirements, deadlines or criteria.
- Never rewrites meaning. Extract, don't reinterpret.
- Degrades to nothing. No key, a timeout, a malformed response → the caller
gets
nulland the checks stand alone. A missing interpretation is fine; a confidently wrong one is not. - Never sees a person. The only thing sent anywhere is the brief text.
Providers are tried in order and both are OpenAI-compatible: Google Gemini
(gemini-3.6-flash), then Featherless as fallback.
25% of this hackathon's rubric, and the part usually bolted on last. Here it's in the first commit.
- Text size (5 steps), line spacing and letter spacing as separate controls (a tester: "letter spacing is the one that helps me; line spacing I don't need"), six background tints, four typefaces including Atkinson Hyperlegible, contrast, colour theme, motion — all user-controlled, all persisted, all applied before first paint so the page never flashes in the wrong state
- Your whole setup copies as a link, so it moves to another device with no account
- Controls live in the header on every page, in the same place, reachable by keyboard — not hidden behind a label that makes you identify as needing them
- Full keyboard operation, visible focus rings, skip link, live status regions
- Severity never communicated by colour alone — every badge carries a word
- Zoom never blocked
- Plain, direct language throughout. No idioms, no metaphors
- No timers, no streaks, no notifications, no sound, no autoplay, no animation by default
On the typeface control: evidence for specialised "dyslexia fonts" improving reading speed is genuinely mixed, so the UI says "pick whichever is easier for you to read. There is no correct answer." We offer a preference, not a remedy.
npm test # 101 tests, 6 filesThe one that matters most is "a complete brief stays quiet". A checker that flags something on every input is worse than no checker — it trains people to ignore it, and it tells a student their perfectly clear assignment is full of problems. So a brief that genuinely answers everything must produce zero blockers.
That test failed the first time it ran, and caught a real false positive: a brief saying "bring a one page outline to the seminar in week 6 for feedback" was being told it had no checkpoint, because the check looked for "draft" and "formative" but not "outline" — the word briefs actually use.
tests/tester-feedback.test.ts exists solely to pin what real testers found: every
false positive they hit is now a named regression test, and the brief that came
back with three wrong findings out of four now comes back with nothing.
The suite also covers determinism in the role allocation (same input, same output, regardless of the order people were entered), tolerant JSON parsing that throws rather than guessing, and 9 pathological inputs including empty, unicode, regex metacharacters and HTML.
One test enforces a product rule directly: no finding may ever contain clinical or diagnostic language. This tool describes documents, never readers.
git clone https://github.com/Shivang-creator/common-ground
cd common-ground && npm install
cp .env.example .env.local # optional — it works without keys
npm run devWithout an API key you get the deterministic checks, which are the majority of the value. With one, you also get the definition of done and workstreams.
Next.js 16 (App Router) · React 19 · TypeScript · Tailwind v4 · deployed on Vercel. No database. Nothing you paste is stored — it is sent once, read, and forgotten.
- Hidden curriculum in schools — Tes
- Group work and peer unpredictability — De Gruyter, Sparkle Buds
- Autistic inertia and unstructured environments — APS Observer
- Universal Design for Learning and stigma reduction — Frontiers in Education
- Generative AI in plain-language work — ASAN
- Surveillance vs accommodation — Built Without Us
- Masking and mental health — Therapist Neurodiversity Collective, Avela Health
MIT