Director of Business Strategy and Innovation at Sadaway Pvt. Ltd., formerly Indus Cosmeceuticals. The company began in 1976 as a research and analytical laboratory in Faridabad, India, and today manufactures organic beauty and personal care products under Indus Valley Organic Beauty, MINA IBROW and Bio Organic.
I trained as a cosmetic scientist before moving to the commercial side of the industry, which is why I tend to argue about formulation and margin in the same meeting. I hold an MBA from the Yale School of Management, and before this role I worked in marketing and strategy at L'Oreal in Paris.
I direct the building of small tools that check what people already produce, from meeting transcripts to price lists. For each tool I decide which real files it is measured against, and that the results which do not flatter it are published beside the rest. AI agents write the code and the documentation.
Said Who is a memory store for AI agents that
refuses to save a claim about what a person decided unless it can point at a real message
that person actually typed and quote their words back. It exists because an agent wrote a
business target into my decision log that I had never said, and four more agents read it
and repeated it. It supports Claude Code and nothing else, which the front page says in
its first paragraph. Run against 893 real transcripts it did not author: 1,313 human turns
all resolved, and 693 forgery attempts across four classes all refused. That corpus also
found a defect the tests could not, because every fixture was a full sentence and real
people send one word replies, so a quote short enough to guess was passing as proof.
pip install said-who
Kick The Tyres reads a public GitHub
repository and reports the static evidence about it: what it can check, what it
could not establish, and how much of the repository it actually opened. Version 0.2
was run against 385 real public repositories it did not author. Version 0.1 had been
reading 8% of the bytes of a typical one, nothing at all in 15 of them, and reporting
no findings either way; two of its four verdicts could never be produced by any input.
The README carries the before and after, including the parts that did not improve and
the directories it does not look in at all. pip install kick-the-tyres
Follow Through finds the commitments
people make out loud in a meeting transcript, and tracks each one until somebody closes
it with a reason. Reads English and Hinglish, because most meetings in India are not
held in one language. Runs entirely on your machine: no account, no API key, and no
way to upload anything. Version 0.2 was measured against 6,320 real meeting records,
from IETF working-group minutes and US congressional hearings. The README carries the
score, including the parts of it that are poor and the question the corpus could not
answer. pip install follow-through
Show Your Work finds the numbers in a
spreadsheet that nobody can explain: a formula someone typed over, a total that stops
one row short, a cell quietly doing something different from the column around it.
It says which numbers the sheet cannot account for, never that a number is wrong.
Local only, and cell contents stay out of the report unless you ask for them.
pip install unexplained-cells, and the command is show-your-work.
Before You Send reads a PDF and
reports what is still inside it that you may not mean to send: text under a box that
was never removed, an earlier version of the document kept in the same file, an
attached spreadsheet, a name left in the properties. It never says a file is safe to
send, and it reports the places it could not see into separately from what it found.
Local only, and what it finds stays out of the report unless you ask for it.
pip install before-you-send
Says On The Tin finds where a
cosmetic label contradicts itself: a free-from claim on the front, and an ingredient
on the back that breaks it. Paraben-free over a list containing methylparaben, vegan
over carmine, sulphate-free over sodium laureth sulphate. It never says a product is
compliant or clean. Both halves it compares are printed on the same pack, so the
finding is arithmetic rather than an opinion. It also reports what it deliberately did
not count, because flagging cetearyl alcohol under an alcohol-free claim is how a
tool like this loses a formulator in the first five minutes. Measured against 2,554
real published labels, which showed that reading only English claims found none of the
contradictions in the sample: they were on Portuguese, French, German, Italian and
Dutch packs. pip install says-on-the-tin
On The List reads a cosmetic
ingredient list and reports what the EU's official annexes say about the ingredients
on it: a name that matches the prohibited list, a colour printed out of position, the
same ingredient entered twice. It is the first of these that checks a document against
an outside official register rather than against itself, and the register is shipped
inside the package, so nothing leaves the machine. It reports a match as a match and
never as a compliance verdict, because an ingredient list states no concentrations and
most annex entries carry a condition a label cannot answer. The pinned corpus run
selected 16,635 published labels. An exhaustive review of the 19 Annex II entries
behind 1,066 unconditional prohibited findings found one overbroad mapping responsible
for 99 findings. In a seeded sample of 30 repeated entry findings, 21 were false
positives and 9 correctly described a repeated normalized name in the recorded text.
This is a sample result, not a population rate. The warning wording check could not be
measured with this corpus. The README publishes the method, findings, and limits.
pip install on-the-list
Adds Up reads a price list and reports
the arithmetic in it that contradicts itself: a volume tier where buying more costs
more per unit, the same item priced two different ways, a stated discount that does
not reconcile with the prices beside it. It never says whether the pricing is right,
because a price list states no cost and a tool that cannot see cost cannot see margin.
Measured over 200 real hospital price files, 20,513,338 rows read and 190,549 set
aside because their cell count did not match the header, and 29,521 published utility
tariffs. Hand-auditing the first run found a defect in the reader, not the
checks: rows with an unquoted comma shift every column after the break, and the tool
was reporting findings from them. One file supplied a third of a check's entire output
that way. It is fixed, the rows are now set aside and counted, and the account of it is
in the README because it is the strongest thing the measurement has to say.
pip install adds-up
On Notice reads a cosmetic ingredient
list and reports which ingredients on it are named in an EU rule that carries a
date still ahead of it. The others check what is wrong with a document today;
reformulation takes the better part of a year, so the question that costs money
is what becomes wrong while the stock is still on the shelf. It reports dates and
never a verdict on whether a product may be sold, because an ingredient list
states no concentrations and every one of these rules catches products that miss
a concentration. Measured against 17,595 published ingredient lists, of which
17.3% name a substance carrying a date that has not arrived. That figure was
44.0% on the first run and the difference is the whole story: around fifty of
the substances came from a labelling rule, so finding them on a label meant
finding products doing what the rule asks, not products facing a deadline. Two
further corrections, each also in the tool's favour, are in the README.
pip install on-notice
Said Who is the odd one out and the newest. The other eight share one rule. Each of them reads something people already produce: a repository, a meeting, a spreadsheet, a document about to leave the building, a label about to be printed, an ingredient list about to be signed off, a price list about to go out, a formulation with a deadline attached to it. It reports only what it can actually check. Absence of evidence is reported as unknown, never as a confirmed no, and none of them claims a certainty it cannot support.
The On The List README records two defects from its real label work. One input path exited clean when a prohibited ingredient appeared first, and two print orders of the same colourant received opposite answers. Both examples and their fixes are documented there.
A fresh AI memory can still be false, October 2026. Why freshness cannot repair false provenance at creation, what Said Who refuses, what it still cannot prove about interpretation, and why its own public example had to be corrected before this story was published.
Every fixture in the suite used a classic xref table, September 2026. All eight tools below, set beside each other: each had a test suite that passed, each was wrong anyway once it met files nobody involved had chosen. Six of the eight can show that from the repository alone and two cannot, and the piece names which two and why. Also the five kinds of blindness the failures sort into, the one kind real files rarely catch because a silent tool looks the same either way, and the disclosure that these tools were built with an AI assistant, recorded on 146 of their 148 commits.
Two of my scanner's four verdicts were impossible to reach, September 2026. A repository scanner that was opening 8.3% of the bytes of the median repository and reporting nothing found, and why those two reports look identical to a reader. Also the enumeration of 3,359,232 input combinations that showed two of its four verdicts could never be printed by any command in it, and the README that was honest about one of those two and wrong about the other.
676 published documents kept their own history. Six kept different words, September 2026. 838 published PDFs from the US Federal Register, gov.uk, the WHO and arXiv, and how much of its own past each one still carries. 676 keep an earlier version of something. Only six keep different words. Also why every Federal Register document looks alarming and none of them is, and the two wrong numbers that had to die before the six could be trusted.
Lawful today, and non-compliant on 1 January 2027, September 2026. A rule adopted in April 2026 starts applying on 1 January 2027, and 3,050 of 17,595 published cosmetic ingredient lists already name a substance it restricts. Also the three readings of the law that had to be corrected before that number could be trusted, each of which had made the tool look better than it was.
Thirty correct findings, and only one looked like a mistake, September 2026. What a small price list checker found when it met 29,521 published tariff price lists and 200 hospital charge files: thirty hand checked findings all correct, only one of them looking like a real mistake, and the defects the real files exposed that its tests never did.
An ingredient list cannot tell you most of what you want to know, September 2026. What 16,635 real published cosmetic labels say when they are checked against the European Commission's own register, why more than half the prohibited-list matches turn on a condition an ingredient list cannot answer, and what a hand audit of 30 repeated entry findings found, including 21 false positives and the limits of that sample.
- waiga.github.io: who I am, in one page
- Medium
- On the Python Package Index: adds-up, before-you-send, follow-through, kick-the-tyres, on-notice, on-the-list, says-on-the-tin and unexplained-cells
Useful tests, clearer evidence, reproducible examples, honest limitations, and bounded technical ownership are first-class contributions.


