Red Stet
← Back to Help
Help · For teachers · Tier 3 — Advanced features

Variants — differentiated assignments

One assignment, multiple prompt versions, routed by per-student tags like ESL, extended-time, or honors. No duplicate assignments, no follow-up DMs. The student opens the assignment and sees the version routed to them.

What variants solve

One class holds several reading levels at once — students at grade level, some below, some above, an IEP student who needs a simpler prompt, an ESL learner who'd write more if the prompt were shorter. Without variants you build three assignments and track which student got which, or send differentiation in a DM (untracked).

Variants give you one assignment with labelled versions, routed by a tag on each student's enrollment. Your roster drives the routing.

Variants are part of the assignment. Move the due date or change the rubric — every variant inherits.

The tag → variant routing model

Two pieces: tags on enrollments and target tags on variants. Free-form strings — no enforced vocabulary. Use esl, ell, level-2.

Tags live on the enrollment — the row connecting a student to one classroom. Ava tagged honors in AP Lit isn't tagged in Creative Writing.

Tags normalize on save — trimmed, lowercased, de-duplicated. Matching is lowercase.

Tags are per-classroom, not per-student-globally. Tagging Ava honors in Period 4 doesn't affect Period 6.

Tagging students on the People tab enrollments.tags

Class → People. Each row has a tag area. Type into + tag, press Enter or comma to commit. Chip saves immediately. × removes.

No cap. A student tagged esl and extended-time matches either variant — see routing order.

Tag hygiene

The biggest cause of broken routing is a typo gap between enrollment tag and variant target. esl vs ELL doesn't match. Tag autocomplete reduces the risk.

Who can see tags

Teachers and co-teachers read and edit. TAs read only. Students never see tags — never on the profile, never in verify UI.

Creating a variant on an assignment assignments.variants

In the New/Edit assignment modal, scroll to Variants. + Add variant. Three fields:

  1. Label — e.g. ESL, Honors, Extended time. The student sees this as a pill, so keep it plain.
  2. Routes to students tagged — chip list. Any overlap with the student's tags makes this variant a candidate (OR). Empty list → default variant.
  3. Overrides — replacement instructions (markdown) and starter body. Blank inherits the base.

/ reorder; × deletes. Variants ship with the assignment on save.

What a variant overrides (and what it doesn't)

A variant replaces prompt text. Everything else comes from the base assignment. Overrides:

  • Instructions — the markdown prompt. Most variants live here.
  • Starter body — pre-filled editor text. Useful for ESL sentence frames.
  • Attachments — variants share base attachments.

Shared:

  • Title and due date
  • Rubric and targets — same standards. A softer rubric per population is a grading-practice conversation.
  • Sub-tasks
  • Peer-review config
  • Attempts cap, late policy, style preset

Routing order and the first-match rule

Red Stet walks variants top-down and stops at the first overlap with the student's tags. There's no merging; the student gets one prompt.

Order matters when a student has multiple tags. Diego with esl and extended-time sees whichever variant ranks higher.

How to order

Most specific first, most general last. "Severely-modified" at the top, catch-all "ESL" lower, empty-targets default at the bottom.

No tags or no match → base (or default variant — next section).

Order is visible to you, not the student. Students see only their routed variant.

The default variant — empty target tags

Empty target tags = catch-all. Matches any student no earlier variant matched.

Use for inverted setups — most of the class on the harder version, a few on the easier one. Two patterns:

  1. Harder in the base, Standard variant targeting standard. Works, but requires tagging every standard student.
  2. Easier in the base, Honors default with no targets. Untagged students get Honors. No tagging needed.

The second pattern keeps the version most students get out of the base assignment, so the base itself still reads as a plain prompt.

At most one default. Red Stet picks the first empty-targets variant; having two is confusing. For two paths for untagged students, give one a real target tag.

How the student-side experience differs

The assignment looks normal. One signal: a pill near the top of the info panel — Variant: ESL, Variant: Honors.

Hovering the pill shows the matched tags. Accommodation policies usually require that disclosure. The base assignment shows no pill.

Everything downstream — editor, targets, rubric, materials, submit, gradebook — is identical. No chooser; students can't switch versions.

Privacy — what each student can and can't see

  • Students don't see other students' variant labels. Diego sees his pill; Ava sees hers. Neither sees the other's content or knows the other is on a different variant.
  • Students don't see other students' tags. Teacher/co-teacher/TA only. Even with roster visibility on, tags stay hidden.

Server-side resolution

Resolution is server-side. The Convex query reads tags, picks the variant, ships only that variant's content. Other variants stay on the server.

The resolved label travels to the client as resolvedVariantLabel. The content of other variants doesn't.

Use neutral labels — the resolved label is visible to the student. Don't put accommodation specifics ("IEP version") in the label.

Submissions stay bound to their variant submissions.variantId

On first edit, Red Stet stamps the variant id onto the submission. From there, the submission is anchored regardless of routing changes.

Routing can change after the fact. You can:

  • Add or remove an enrollment tag
  • Add a new variant mid-flight
  • Change a variant's target tags
  • Reorder variants
  • Edit variant instructions or starter text

None retroactively change what an in-progress student writes against — unless you push an assignment update (see Creating an assignment).

The grade view shows each submission's variant, so you can filter to "ESL variant only" while grading.

Manually overriding a student's variant assignmentVariantOverrides

Use an override for one-offs: a student who needs a different variant on a single assignment without restructuring tags.

Gradebook row's kebab → Override variant opens a picker (every variant plus base). Pick, save. The row shows a pill.

Stored per (assignment, student), takes precedence over tag routing. Student sees it immediately; in-flight submissions keep their existing binding. Clearing the override falls back to tag routing.

Tag autocomplete classrooms.listUsedTags

Tag inputs show a <datalist> of every tag in use in the classroom. Pick a suggestion, commit — same chip as a freshly typed tag.

The list is the union of every tag on every enrollment. Updates as tags change.

This catches the silent miss: Diego is tagged esl, you type ell on a new variant, and routing breaks for a week. With autocomplete, esl is the first suggestion.

Common patterns — ESL, honors, extended-time

ESL / multilingual learners

Tag esl. ESL variant: shorter instructions (50-60% the length), simpler sentences. Same rubric and word-count — differentiate scaffolding, not standard. Sentence-frame starters ("In this story, I want to tell you about…") often help more than rewording.

Extended-time / IEP accommodations

Tag extended-time or iep. Same prompt restated as numbered steps, bullets on long paragraphs, requirement front-loaded. Keep the due date; for more time, use a per-student extension, not a variant.

Honors / stretch

Tag honors. Base prompt plus a "Push further" section requiring synthesis, counter-evidence, or meta-reflection.

Don't over-tag. If half the class is tagged, routing becomes maintenance. Tag stable needs across multiple assignments; message one-offs.

Related

Creating an assignment — every section of the New Assignment modal.

Setting up your first class — People tab and roster basics.

Co-teachers and TAs — who can edit roster tags.

Back to the help library.

Hit a routing edge case this doc didn't cover? Email feedback — this doc grows by use.