Features
Everything the old workflow needed you to do by hand
Built around one evaluation period at a time: build a rubric, run it, get results, without a spreadsheet in between.
Rubric builder
Your rubric, your scale, built once
Rubrics are teacher-scoped, not tied to one class. Build one and assign it to every section you teach. Each criterion gets its own indicator text at every score level, so a "3" means something specific rather than a bare number.
- Analytic mode: one shared min–max scale across every criterion
- Holistic mode: each criterion carries its own point range, no forced averaging
- Score interpretation table maps a numeric mean to a verbal label you define
- Rubric and roster lock automatically on period activation, fully immutable once students start
- Multiple evaluation periods per class (midterm, final, etc.), kept fully separate
- Optional minimum/maximum evaluation requirements, checked against group size at creation
- Scheduled auto-open/close per period, with manual override always available
Who it's for: Teachers with several sections of the same subject who don't want to rebuild the same rubric five times.
Rubric: Group Project
Fair, anonymous scoring
Honest feedback, without the social cost
Students score each criterion with a slider bounded by the rubric's scale, add an optional private note the teacher alone sees, and an optional public note the evaluated student sees with no attribution. A confirmation screen recaps everything before final submit, a guard against a slider mis-tap on a phone.
- Self-select or teacher-assigned groups, set per evaluation period
- Optional self-evaluation, recorded separately and never mixed into the peer average
- A student's results view can overlay their self-evaluation against the peer average, per criterion, as a comparison chart
- Evaluations autosave locally first, so a dropped connection never loses a draft
- Aggregate-only results: no student ever sees another student's individual score
Who it's for: Teachers who've seen a Google Form get quietly gamed by whoever wrote the harshest or kindest comment; anonymity here is enforced server-side, not just hidden in the UI.
Trust safeguards
Nothing reaches a student until it's ready
Two independent gates protect what a student eventually sees: a minimum-evaluator threshold on results, and moderation on public notes. Neither is optional to route around: both are enforced at the API layer, not just hidden in the interface.
- n ≥ 3 evaluators required before any numeric result or public note is shown
- Public notes reviewed before release, with bulk-approve and auto-flagging
- Teacher can exclude a specific evaluator's rating, with a required reason; the original submission is never edited or deleted, only flagged
- Teacher can override the n≥3 threshold per student when they judge it appropriate
- Reopening a period after release marks those results stale until re-released; any note touched after a reopen reverts to pending review
Who it's for: Any teacher handing evaluative feedback about minors to other minors. This is the part of the spec built to be airtight, not just functional.
Results: awaiting release
Roster & access codes
Bulk import, no email required
Upload a CSV of Student ID, name, and an optional group/team column. Marka validates it before anything commits: new students, matched existing records, duplicates, and missing fields are all called out up front. Every student gets a 7-character access code, printable in bulk for handing out in class.
- Import validation preview before committing a single row
- One student record per teacher, linked across every class they're enrolled in
- Codes exclude ambiguous characters, no 0/O or 1/I/L mix-ups when read aloud
- Bulk export, print sheet, and single-student reveal for a lost code
Who it's for: Teachers who already keep a class list in a spreadsheet and don't want to type 40 names into a web form.
Roster: 10-A Section
Live rollup & coverage
Watch a period without waiting for it to close
Expand any student's row while a period is still open to see a provisional, clearly-labeled aggregate: bar chart by default, radar chart optional. A separate coverage view sorts students by evaluations received, not just given, so a self-select period can't quietly leave someone with unusable results.
- In-progress rollup, expandable per student, marked provisional
- Completion tracker (given) and coverage view (received), tracked separately
- Evaluator × evaluated completion matrix
- Unusual scoring pattern flags surfaced for a look, not treated as proof — see the full pattern-detection breakdown below
Who it's for: Teachers who want to nudge stragglers before a deadline instead of discovering gaps after the period closes.
In progress: 4 of 7 evaluations so far
Research-grade pattern detection
The same rater/ratee methodology as CATME
Most peer-eval tools just average scores. Marka applies the rater/ratee statistical methodology behind CATME, Purdue's widely-used academic peer-evaluation framework, to flag patterns worth a second look, automatically, for every activated period. Every flag reaches the teacher only, worded as "worth a look," never an accusation — nothing changes a score automatically.
- Free-riders and standout performers, flagged relative to their own class, not a fixed number
- Overconfident and underconfident self-ratings, including a repeat trend across periods
- Rater disagreement, straight-lining, and rushed submissions
- Scoring cliques and mutual-inflation circles, via graph-based clique and cluster detection
- Systematic rater bias against consensus, and suspicious mutual low/high-score pairs
Who it's for: Teachers who want free-riders, grudge scoring, and friend-group inflation caught before grades go out, not after a parent or student appeals one.
Flags: Final Project, Section 10-A
Reporting
The pivot table, generated for you
The Consolidated Final Report is a named, one-click action available once a period has results: the direct replacement for the old export → pivot table → mail-merge step. Confidence context (n, limited-data flags) travels with the export, so a spreadsheet copy is never more misleading than the in-app view.
- Dashboard table and CSV download, generated together
- Multi-period side-by-side view for comparing midterm and final
- Cross-period trend view — track a student's growth from midterm to final
- Printable full report with an executive summary page, then one page per student
- Evaluator-level drill-down: exclude a specific rating with a reason, and the average recalculates immediately, reversibly
- Simplified name + General Average export for pasting into a gradebook
Who it's for: Teachers who currently combine multiple Google Forms exports by hand before they can hand results back to a class.
Class rollup: General Average
Security & privacy
Your students' data never leaves your class
Every owner-scoped table carries the teacher's owner ID, and every reference between them (the class-enrollment junction, a period's roster snapshot) is a composite foreign key tied to that same owner ID. A query that forgets to filter by teacher can't accidentally leak across tenants; the boundary is enforced by the schema, not just remembered by application code.
- No student ever receives email, only teacher accounts do
- A period's rubric and roster snapshot on activation, then become fully immutable
- Rate limiting on both teacher password login and student access-code entry
- Archive vs. permanent delete kept distinct: deletion requires typing "DELETE" to confirm
Who it's for: Any school administrator who asks where student data lives before signing off on a new tool.
Tenant boundary