End of term in most Ghanaian schools looks the same. Marks arrive on scraps of paper. Somebody transfers them into a master sheet. Somebody else calculates totals, then positions, then writes a remark for every child by hand. The cards are typed or handwritten, photocopied, and go home two weeks into the holidays with at least one child's marks in the wrong column.
It takes weeks of staff time, and the errors are the kind parents remember.
This is a guide to setting it up so the whole thing takes an afternoon, and to doing it without paying for software.
What "free" means here, and what to check
Report card software is sold in this market by the school, by the student and sometimes by the card. Before accepting any free offer, including ours, ask the same questions you would ask about a paid one: who is funding it, for how long, is report card generation itself locked behind an upgrade, and can you export your marks if you leave.
SwiftSapp is partner-subsidised and free to Ghanaian schools through the 2026/2027 academic year. Report cards are not a separate module or an upsell. There is no per-card charge, no per-student charge, and no watermark on the output. We go through the whole cost question, including the lines vendors leave out of quotes, in what school management software actually costs in Ghana.
Step one: define your grading scale, not somebody else's
This is where most report card software fails Ghanaian schools. It ships with a grading scale baked in, usually one that does not match what the school has used for fifteen years, and the school abandons the software rather than change its scale.
What you actually want is to define the bands yourself: a score range, the grade it maps to, and the remark that prints beside it. Something like 80 to 100 as grade A with "Excellent", 70 to 79 as B with "Very good", and so on down. Your school decides the boundaries and the wording.
Two practical points. First, the bands must not overlap. A scale where 79 falls into two ranges will produce inconsistent grades and arguments you cannot win. Second, the scale should cover 0 to 100 with no gaps, because a child will eventually score exactly the number you forgot about.
Step two: decide what each class actually prints
A Basic 2 report card and a JHS 3 report card should not look the same, and forcing them to is how schools end up with parents of seven-year-olds comparing class positions.
The things worth controlling per class:
Overall position. Some schools print it, some deliberately do not for lower primary. It should be a switch, not a policy imposed by software.
Subject position. Separate from overall position, and often the more contentious one.
Subject grade. Some schools print the raw score only, some print score and grade.
Aggregate. Relevant for JHS, meaningless for Creche.
Skill assessments. Behavioural and developmental indicators rather than academic scores. Essential for the youngest classes, usually dropped by upper primary.
Setting these once per class means you never think about them again, and the card that comes out is the card that class is supposed to have.
Step three: get the marks in, and know who has not
Report cards are blocked by marks, and marks are blocked by teachers. This is the actual bottleneck, and it is not a software problem so much as a visibility problem.
What removes it is a screen that answers, at any moment, which classes and subjects are still incomplete and which teacher is responsible for each one. Instead of the headteacher walking the corridors asking eleven people the same question, the question is answered on a page, and the follow-up goes to the two people who actually need it.
It is worth checking continuous assessment and exam scores separately, because a subject that has CA entered but no exam scores looks complete from a distance and is not. We go into the end-of-term chase properly in how to stop chasing teachers for marks.
Step four: remarks without writing three hundred of them
Remarks are the part everybody underestimates. Five fields per child, several hundred children, all needing to sound different and none of them sounding careless.
The workable approach is a library of remarks banded by performance, so a child in the 80s draws from a different set of phrases than a child in the 40s, and the teacher picks or edits rather than composing from nothing. Prefilling a whole class in one action and then editing the ones that need a personal touch turns a two-day job into an hour.
The fields worth having are conduct, attitude, interest, a class teacher remark and a head teacher remark. Keep the head teacher remark genuinely separate, because parents read it as the school speaking rather than the teacher, and it carries weight.
One caution: prefilled remarks are a starting point, not the finished product. A parent who receives the same sentence two terms running notices, and a parent whose child is struggling notices hardest. Prefill everything, then read through the bottom and top of each class properly.
Step five: attendance on the card, calculated not counted
Attendance belongs on a report card and is almost always the last thing assembled, because somebody has to count a register by hand.
If attendance is being recorded through the term, whether marked in class or captured at the gate, the termly figure should already exist. Present and total days flow onto the card without anyone counting anything, and the number is defensible if a parent queries it.
Step six: generate, check, then release
The generation step itself should be unremarkable. Pick a class, generate, and the PDFs exist. Individually downloadable for a parent who asks, or as a single zip file for the print shop.
Before anything reaches parents there should be a validation pass that lists, per student, exactly what is missing: which subjects have no score, and whether skill assessments are short of the expected number of entries. Generating cards with silent gaps is worse than not generating them, because the gap becomes a printed card in a parent's hand.
Then release as a deliberate, separate action. This matters more than it sounds. Marks entry, generation and publication happening in one step means a mistyped score is in front of a parent before anyone has read the card. Keeping release separate gives you the window to check, and it lets you generate early and publish on the day you intended.
When a term is released, parents get a notification and can open their child's card in the app. Schools that still want paper print from the same PDFs, so the digital and printed cards are identical rather than two versions that drift apart.
What actually goes on the card
Worth being concrete, because "report card" means different things to different schools. A complete card carries the school's logo and details, the child's photograph, their class and position where the class prints it, a subject table with continuous assessment, exam score, total, grade and a per-subject remark, a performance trend across the term, the attendance summary, skill assessments where the class uses them, the remark fields, and signature blocks for the class teacher and head teacher.
Digital signatures are worth setting up once. A card that arrives already signed looks finished, and it removes the ritual of stacking three hundred cards on a desk for someone to sign by hand.
Mock exams are a different thing
Schools preparing candidates run mocks that need their own reports, and it is a mistake to force them through the terminal report card. Mock results belong to a specific exam rather than a term, several mocks happen in a year, and the output parents expect looks different.
Keep them separate. Mock exams get their own results entry, their own report cards and their own release, without disturbing the termly card.
The five mistakes worth avoiding
Letting software choose your grading scale. If it cannot be configured, it will be abandoned.
Printing the same card for every class. Position on a Creche card helps nobody.
Generating before checking completeness. A blank subject on a printed card is a phone call from a parent.
Publishing in the same action as generating. You lose the window to catch errors.
Writing remarks from scratch every term. It is the single largest avoidable time cost in the process.
How SwiftSapp does it
Grading scales are defined per school as score bands mapped to a grade and a remark, validated so they cannot overlap. Overall position, subject position, subject grade, aggregate and skill assessments are each a per-class switch.
Remarks come from a library banded by performance across conduct, attitude, interest, class teacher and head teacher fields, can be prefilled for a whole class in one action, and are editable per child afterwards. Attendance flows onto the card from the term's registers rather than being counted.
Before generation, a validator lists every student with missing subject scores or incomplete skill assessments. Cards generate as PDFs in three layouts, download individually or as a class zip, and carry your logo, the child's photograph, a performance trend and digital signatures. Release is a separate step, per term or per class, and only releases cards that have actually been generated. Released cards notify parents and appear in the parent app.
Mock exams run alongside as their own cycle. Every change to a mark or a remark is recorded against the person who made it.
All of it is included at no cost through the 2026/2027 academic year.
If end of term is currently costing you two weeks, book a demo and we will set up your grading scale and generate a real class together.