A feedback report a professor opens more than once.
Most course feedback arrives as a number out of five, months late, with no indication of what to do about it. It is read once, resented, and filed. This is built to be the other thing.
Theirs, and nobody else’s.
It describes the figures. It does not produce them.
Every score, benchmark, percentile, chart, count and priority in the report is computed by code and can be reproduced by hand.
The AI writes four kinds of sentence and nothing else: the summary paragraph, the sentence naming a strength or a concern, the one line description of a theme in the written comments, and the wording of a suggested action.
It is handed finished statistics and asked to describe them. It cannot produce a number. It cannot change a ranking. It cannot reorder a priority.
And each section of the report states how it was written. If the model was unavailable when the report was built, the report says so, on the page, rather than presenting templated wording as analysis.
The limits are the point.
The same responses, compiled for each body that asks.
The same responses produce the compiled documents each body expects: AICTE 360 degree appraisal, NAAC key indicator 1.4.1, NAAC key indicator 2.7.1, and the NBA course exit survey.
Where a framework asks for something a student survey cannot answer, the document says so in place rather than leaving a blank. The NAAC student satisfaction survey, for instance, is administered by NAAC and not by us, and our output marks those items as not collected rather than pretending to them.
Results below a minimum number of responses are suppressed, and every document carries the name of whoever generated it.