← Back to toolkit
Student Feedback Generator

Generate comments from exam marks

Upload a students CSV (names, gender, scores per element) and a comment bank CSV (mark ranges and templates). The tool produces one combined written comment per student. All processing happens in your browser—no data is sent to any server or third party. This keeps student information local, making the tool GDPR compliant and safe for teachers to use.

Load both CSV files to enable generation.

Comment bank builder (optional)

Build a comment bank directly in the browser, then download it as CSV or load it into the generator. This uses the same format as the Comment bank CSV file.

Important:

If you want to reuse this comment bank in future sessions or on another computer, download the CSV and save it to a safe location (e.g. your documents or cloud storage).

Element Min Max Comment template
No rows yet. Add element ranges and comments, then download or load into the generator.

How to use this tool

1. Prepare your files

You need two CSV files: a Students CSV (your class roster with marks per exam element) and a Comment bank CSV (templates that describe what to write for each mark range). Use the sample downloads above to see the expected format, or create your own from scratch.

2. Students CSV format

Your students file must have:

  • name — Student’s name (used in placeholders)
  • genderM or F (for pronoun placeholders)
  • One or more score columns — Column names must match the element names in your comment bank

Example:

name,gender,element1,element2,element3
John Smith,M,17,36,45
Sarah Jones,F,13,44,35
Alex Brown,M,15,40,38

Here, element1, element2, and element3 are the exam elements. Their names must match exactly the element column in the comment bank.

3. Comment bank CSV format

Your comment bank must have these columns:

  • element — Matches the score column name in the students CSV
  • min_marks — Minimum score (inclusive) for this comment
  • max_marks — Maximum score (inclusive) for this comment
  • comment_template — The text to use, with placeholders

For each student, the tool looks up each score column, finds the comment bank row where element matches and the score falls between min_marks and max_marks, then replaces placeholders in the template. If multiple rows match (overlapping ranges), the first match is used.

Example:

element,min_marks,max_marks,comment_template
element1,0,10,{name} struggled with this component. {pronoun_cap} needs to focus on revision.
element1,11,14,{name} showed some understanding. {pronoun_cap} should work on weaker areas.
element1,15,17,{name} demonstrated a good grasp. {pronoun_cap} effectively applied the concepts.
element1,18,20,{name} excelled in this area. {possessive_cap} work was outstanding.

4. Placeholders in templates

Use these inside comment_template; they are replaced automatically:

Placeholder Example output (M) Example output (F)
{name}John SmithSarah Jones
{pronoun}heshe
{pronoun_cap}HeShe
{possessive}hisher
{possessive_cap}HisHer
{object}himher
{score}The score for that element (e.g. 17)
{max_score}Max marks for that element (e.g. 20)
{percentage}Score as a percentage (e.g. 85.0)

5. Generate and download

After both files are loaded, click Generate feedback. The tool combines one comment per exam element into a single paragraph per student. Use Download results CSV to save the output. The results CSV includes the combined comment plus per-element scores and percentages for your records.

Tips

  • Keep element names identical between the students CSV and comment bank (e.g. element1 in both).
  • Ensure mark ranges cover all possible scores so every student gets a comment for each element.
  • Use quoted fields in CSV if your text contains commas: "Smith, John".