PARI is a free and anonymous screening tool that takes about five minutes to complete. It returns a nutrition risk score for each student, a clinical BMI-for-age z-score, and an assessment of which of four barriers is driving that student's risk. The last of these is what no existing tool provides.
The national surveys are methodologically sound. They are also of very little use to the person who actually has to act on them.
The Comprehensive National Nutrition Survey tells us that 24% of Indian adolescents are thin and 27% are stunted, and that children in the poorest households carry roughly 3.2× the odds of stunting. That is a national average.
If you run a school, that figure gives you nothing to work with. It does not tell you which of your students are struggling, and it certainly does not tell you what is causing it.
Four quite different problems can produce the same underweight child. The family may not be able to afford protein. Protein may not be sold anywhere nearby. Nobody may have taught the child what a balanced meal looks like. Or the child may simply not be eating enough meals in a day. Each of these calls for a different response, and buying more dal achieves nothing if the nearest shop selling it is six kilometres away.
No existing tool tells a school which of the four it is dealing with, and that is the gap PARI was built to fill.
What students actually eat, measured across ten food groups.
Whether food runs short, how many meals are eaten, and whether cost is what prevents buying protein.
Whether students know what protein does, and whether they consider balance when they eat.
Whether protein-rich food is sold nearby at all, and whether the school provides a meal.
A student answers 23 questions on a phone, and those answers produce a risk score. Their height and weight produce a clinical z-score through an entirely separate calculation. The two results never share an input, and that independence is what makes the comparison between them worth anything.
Most online health questionnaires assign their points arbitrarily. Every weight in PARI is drawn from published research: the wealth gradient comes from CNNS, the dietary diversity threshold from a multi-country adolescent study, and the protein requirements from ICMR-NIN 2020.
Height, weight, age and sex are run through the WHO 2007 LMS reference tables to produce a BMI-for-age z-score. This is the same statistic a paediatrician would use, rather than a BMI category invented for the application.
Because no measurement of the body feeds into the risk score, the correlation between the two is a genuine external check. Had the tool been built the other way round, any agreement between them would be circular and would prove nothing.
This is not a simplified version. It runs PARI's actual scoring code against the real WHO 2007 growth reference, entirely within your browser. Nothing is transmitted and nothing is stored.
This is general nutrition guidance rather than clinical advice. A screening instrument identifies who is worth examining more closely. It does not replace a clinician, and PARI has never claimed otherwise.
Filtering the cohort recalculates everything below it, including the summary statistics, the distributions and the screening performance.
The response set behind these charts has been anonymised and minimised. It carries no identification code, no school, no class and no height or weight, only the answers themselves, the age band, the sex and the derived scores, held in shuffled order.
The survey never asks how much a student weighs. When its results line up with who is actually underweight, that agreement tells us something.
The test is a simple one. Among the students PARI rated low risk, 7 in 100 turned out to be underweight. Among those rated moderate, the figure was 16 in 100. Among those rated high, it was 30 in 100, which is more than four times the low-risk group. The rate climbs at every step, and it does so on the basis of information the survey was never given.
This makes the tool particularly good at clearing students rather than at flagging them. When PARI rates a student as low risk it is correct roughly nine times out of ten. A school with 600 students and a single afternoon to work with can use that result to set most of them aside and concentrate its attention on the remainder.
It performs less well in the opposite direction. Most of the students it flags as high risk are not currently underweight, which looks at first like a straightforward error but is not one. The survey measures whether adequate food is within reach, and being underweight is one of the later consequences of it not being. Identifying students before the shortfall registers in their body is precisely what a screening tool exists to do.
One finding deserves stating plainly, since it is not a convenient one. Of the four things PARI measures, three independently predict a student's actual weight: what they eat, what they can afford, and what they can physically obtain. The fourth, awareness, does not. Knowing what protein does clearly shapes how a student eats, but in this data it does not register on the scale on its own. This is the main issue the next version of the instrument will need to address, and it is recorded here rather than left out.
Students entered their own height and weight rather than being measured. People tend to round their height upwards, which makes them appear less underweight than they are, so the true figures are probably somewhat worse than those shown here. Measuring students directly would be the single largest improvement available.
All of this data comes from a single sitting. Students who receive a daily school meal are less underweight, but they may also attend better-resourced schools. That is an association rather than proof that the meal is responsible, and screening the same students again at a later date is what would settle the question.
In practice the students who eat badly are usually the same students who cannot afford food. The four scores are tidier on paper than they are in reality, and a considerable amount of what PARI detects reduces to a single underlying factor, which is poverty.
The "four food groups a day" standard was established for 15 to 19 year olds. A substantial part of this cohort is younger than that, so for those students it functions as a borrowed rule rather than a validated one.
Phase 1 uses transparent, hand-assigned weights, each traceable to a published source. Phase 2 re-derives them empirically once the response set is large enough to support factor analysis.
The first score counts how many of the ten food groups are eaten at least three days a week and is worth 20 points. The second takes the highest weekly frequency among the four protein-dense groups and is worth 15.
Every option carries a published point value. There are no free parameters, no hidden multipliers and nothing fitted after the fact to make the numbers look better.
The ceilings are 35, 30, 20 and 15 points, so no single domain can push a student into the high-risk band on its own.
The bands sit at 33 and 67. The breakdown is returned alongside the total, since the breakdown is the part a school can actually act on.
The instrument, the scoring engine, the growth-reference tables, the anonymised storage layer and the codebook are all public. Read it, fork it, or tell me where it is wrong.
def _dietary(resp):
ranks = {g: _FREQ_RANK.get(resp.get(g, "Never"), 0)
for g, _ in FOOD_GROUPS}
# Diversity: groups eaten >=3 days/week (rank >= 2)
diversity = sum(1 for g, _ in FOOD_GROUPS if ranks[g] >= 2)
if diversity >= 6: div_pts = 0
elif diversity >= 4: div_pts = 7
elif diversity >= 2: div_pts = 14
else: div_pts = 20
# Protein: best weekly frequency among protein-dense groups
pmax = max(ranks[g] for g in PROTEIN_GROUPS)
prot_pts = {3: 0, 2: 5, 1: 10, 0: 15}[pmax]
return div_pts + prot_pts, {...}
This is the exact function the demo above runs. It reproduces all 1,007 stored scores without a single disagreement between them.
def baz(weight_kg, height_cm, age_years, sex):
"""Return (baz, bmi, category)."""
b = bmi(weight_kg, height_cm)
row = _nearest_row(sex, age_years)
if b is None or row is None:
return None, None, None
_, L, M, S = row
if L == 0:
z = math.log(b / M) / S
else:
z = (((b / M) ** L) - 1) / (L * S)
return round(z, 2), round(b, 1), _category(z)
"""Anonymized response storage.
NO personal identifiers are ever written — only the
SGIC code and survey data.
"""
FIELDS = [
"timestamp", "sgic", "school", "grade", "age", "sex",
"height_cm", "weight_kg", "measured_flag",
# ... the 18 survey items ...
"risk_score", "band", "baz", "bmi", "baz_category",
]
No name, roll number, date of birth or contact detail is collected at any point in the pipeline.
A self-generated code allows the same cohort to be screened again later without the instrument ever learning who anyone is.
Deployment requires the head teacher's written agreement before a single link is shared.
Families are informed before deployment and may withdraw their child without giving a reason.
Results are returned to schools only in aggregate. No individual student's score is ever disclosed to staff, because a screening score in the wrong hands ceases to be a health tool and becomes a label.
PARI is the measurement layer for work that was already running without one.
A free lunch programme at KDO Jain School in Hubli feeds more than 300 students every day. Nutrition screenings with the Welfare Society for Destitute Children in Mumbai covered 150+ children and surfaced 60+ malnutrition cases.
Both programmes serve food and hope for the best, which is the normal condition of charitable feeding. There is no baseline, no targeting and no way of telling whether the meal being served is the meal that was needed. A programme can run for years without ever discovering that its students' real constraint was availability rather than cost.
A screening layer turns the operation into a loop. The cohort is measured, the dominant barrier is identified, the food and the teaching are directed at that specific gap, and the cohort is screened again to establish whether the figure has moved. That is the difference between charity and a programme that can be improved.
Five minutes per student, on any phone, in their own language.
Not simply how many students are at risk, but which barrier dominates at this particular school.
A cost problem calls for subsidised protein, an availability problem for a supply route, and an awareness problem for teaching.
The same codes and the same instrument, at a later date. The change between the two is the evidence.
Founder of SNACC and the developer of PARI.
He came to nutrition through sport. A decade of competitive taekwondo, ending with representing India at the ISF World Games, taught him that what an athlete eats determines what an athlete can do — and that in India, the food required to train seriously was either imported, expensive, or full of things that undermined the point. He began formulating an alternative in his kitchen, then took it through food safety licensing and into retail.
Working on the product raised a question the product could not answer. A protein bar serves people who can afford a protein bar. It does nothing for the far larger group who cannot, or who have never been told what protein does in the first place.
PARI is his attempt at that problem. It is a free, open-source tool that screens young people across four dimensions — diet quality, affordability, nutritional awareness and physical access — and returns personalised guidance in plain language. Anyone can use it. Schools can run it across an entire cohort and see, for the first time, where their students actually stand.
What the data has shown so far reshaped how he thinks about the problem. The constraint is not only money. Most students screened could not explain what protein does or how much they needed.
His vision is to take PARI from a screening tool to national nutritional infrastructure — a free layer that any school, clinic or programme in India can run to identify risk early and act on it, building a picture of youth nutrition that does not currently exist. Not a product with a social arm attached, but public health utility that happens to have been built by someone who needed it first.
The position underneath all of it is straightforward. Nutritious food is not a privilege earned by income or geography. It is a right, and the distance between that principle and the situation on the ground is a problem worth building against.