The Book of Avidha Contents

Avidha Chandra

The Book
of Avidha

Eleven true stories about things I made, and how each one works

Data Science and AI at IIM Sambalpur. Also writes for children as MS Amaya.

Open the book

Every page has two sides. Read the story, then turn it over to see the code, the data and the screenshots.

The Book of Avidha

For the vendors at Golebazar, the women of Odisha’s self-help groups, and every parent who has ever got a call from “the bank”.

and for anyone who reads to the end

2

The Book of Avidha

Chapter one

The girl from the hills

Guwahati, Assam, and then Sambalpur, Odisha

4

Once there was a girl from Guwahati, where the Brahmaputra is so wide that in the rain you can’t see the other side. She could never stay quiet. At St. Claret School they made her Head Girl, perhaps hoping it would keep her busy. It didn’t.

She went west to Odisha to study data science at IIM Sambalpur, and found out that numbers are most interesting when you go and meet the people behind them.

That girl is me. The rest of this book is about those people, and what I built for them.

students I write to companies for
176
year of BS Data Science and AI
2nd

The author, as data

avidha.json
{
  "name": "Avidha Chandra",
  "studies": "BS Data Science & AI, IIM Sambalpur (2025–29)",
  "home": "Guwahati, Assam",
  "school": "St. Claret School: Head Girl, Student Council President",
  "committee": "Career & Skill Development (placements)",
  "stack": ["Python", "SQL", "Excel", "Power BI", "Tableau", "React",
            "Power Automate", "Google Earth Engine", "FastAPI", "Ollama"],
  "certified": ["McKinsey.org Forward", "KOED GenAI Product Management"],
  "languages": ["English", "Hindi"],
  "also": "children’s author, as MS Amaya"
}

This year I also wrote to tech, consulting and industry companies about summer internships for both BS batches: 86 students in Data Science and AI, and 90 in Management and Public Policy.

5

The Book of Avidha

Chapter two

A Jarvis of my own

My laptop, October to November 2026

6

Like everyone who watched Iron Man, I wanted a Jarvis. So I built one, minus the hologram. It lives entirely on my laptop. I can type to it, talk to it in English or Hindi, or wave at the webcam: pinch to spin its glowing core, open my palm to make it scan.

Getting it to run on Windows took longer than building it. Python was too new, the antivirus thought my tools were viruses, and my microphone was too quiet, so I taught it to listen to the room first.

Then I asked it a real question: how big a brain does it need? I tested a small model against one twice its size. The bigger one got one more answer right out of 24, and took half a second longer. I kept the bigger one, and wrote down why one answer isn’t proof of anything yet.

on my laptop’s CPU
100%
questions in the model test
24

How it works

  1. Browser HUDThree.js core, MediaPipe hand tracking at about 30 fps
  2. OpenJarvislocal server on :8000, speech through faster-whisper
  3. Ollamamodel runtime on :11434
  4. Qwen 3.5 4Bruns on the CPU, with thinking switched off for speed
PowerShell, 2 Nov 2026
PS> ollama list
NAME          SIZE      MODIFIED
qwen3.5:4b    3.3 GB    40 hours ago
qwen3.5:2b    2.7 GB    40 hours ago
PS> ollama run qwen3.5:4b --think=false "You are Jarvis. Say good morning to Avidha in one sentence."
Good morning, Avidha!
PS> ollama ps
NAME          SIZE      PROCESSOR    CONTEXT
qwen3.5:4b    3.1 GB    100% CPU     4096
The full Jarvis HUD linked to OpenJarvis, thinking with qwen3.5:4b.Jarvis answering a spoken question about the capital of Assam.Hand tracking on, with an open palm triggering a scan.

Linked to the model, answering out loud, and following my hand.

The experiment: 2B against 4B

ModelRightMedian answerTokens/sMemory
qwen3.5:2b79%1.27 s242.4 GB
qwen3.5:4b83%1.68 s143.2 GB
  • Data science100%100%
  • Knowledge83%100%
  • Instructions88%75%
  • Reasoning50%67%

Accuracy by category. The bigger model knew more facts but followed instructions slightly worse, and both failed the multi-step arithmetic.

benchmark_models.py (excerpt)
def grade(answer: str, check: dict) -> bool:
    a = clean(answer)
    kind = check["type"]
    if kind == "last_number":
        nums = re.findall(r"-?\d+(?:\.\d+)?", a.replace(",", ""))
        return bool(nums) and abs(float(nums[-1]) - float(check["value"])) < 1e-6
    if kind == "json_keys":
        m = re.search(r"\{.*\}", a, flags=re.S)
        ...

7

The Book of Avidha

Chapter three

The office that never forgot

CRY, Child Rights and You, May to July 2026

8

Everyone who gives money to CRY is promised a report: what happened to it, which children it reached, and when. There were many reports and many deadlines, and all of them lived in people’s heads.

When I joined as an operations intern, I gave them somewhere else to live. I built a shared tracker, and twenty-four little messengers that wake up on schedule, check what’s due, and knock on the right person’s door by email and on Teams.

Halfway through, the accounts I was building on stopped working. So I moved everything to one that belongs to CRY. The messengers still go out every morning, even though I’ve left.

reminder flows
24
funded programmes
3
months
3

How one reminder travels

  1. SharePointtracker of every report, programme, due date and owner
  2. Recurrencea schedule wakes the flow, for example on the 8th at 9 AM
  3. Power Automateworks out what’s due and builds an HTML digest
  4. Outlook + Teamsemails the owner and posts in the programme’s channel

There are 24 of these flows across three programmes: EXIDE, Akanksha and Hockey For Her. When personal Microsoft accounts lost access to cloud flows in May, I rebuilt everything under an organisation account, so the system doesn’t depend on me.

The list of scheduled EXIDE reminder flows in Power Automate.One flow in the designer: Recurrence, then Send an email, then Post a Teams message. Recipient details blurred.Three automated reminders posted in the EXIDE Teams channel at 9 AM.

The flows, one flow in the designer, and the messages arriving. Names are blurred.

9

The Book of Avidha

Chapter four

The soap that ran out

Youth4Water Plus, Odisha, July 2026

10

In village after village, someone came and built a toilet, took a photograph and left. Then the soap ran out, and nobody came back to refill it.

During my month at Youth4Water Plus I kept asking who was supposed to come back. The answer was nobody. So I designed a business around the women who were already there.

In Swasthya Sakhi, women in self-help groups make soap and sanitary pads, sell them door to door as Hygiene Didis, clean schools on contract, and pack kits for the monsoon. They earn wages, a commission and a share of the profit, because they own it.

projected a year, one-block pilot
₹48.3 lakh
women already in Odisha’s SHGs
70 lakh

The business model

  • Institutional contracts40–50%
  • Personal & home hygiene35–45%
  • Menstrual products30–45%
  • Disaster kits30–35%

Projected gross margin for each line of business. Schools, anganwadis and clinics sign recurring contracts, which gives the enterprise a buyer from day one.

How a member earnsFrom
Production wagesmaking the products
10–15% commissionevery sale she makes
Profit-share dividendowning part of the enterprise

11

The Book of Avidha

Chapter five

A month in the steel city

Steel Authority of India, Bokaro, July 2026

12

Bokaro is a city built around a steel plant that never sleeps. For a month I sat with the people who keep its computers talking to each other, and learned how a company that size remembers everything: SAP.

I wrote my first lines of ABAP, built reports and forms, and learned that nothing reaches the plant floor until it has passed through development, then quality, then production.

It was the least glamorous month of my year, and one of the most useful.

How a change reaches the plant

  1. DEVwritten and unit-tested by the developer
  2. QASchecked by quality on a copy of real data
  3. PRDreleased to the live system the plant runs on
ABAP topicWhat it does
ALV reportsinteractive list reports
SmartFormsprintable business documents
Module poolcustom screens (PBO and PAI events)
SE11the data dictionary: tables and types

13

The Book of Avidha

Chapter six

The villages that stayed dark

Space and Beyond Ideathon, October 2026, with Varun Sharma

14

On paper, every village in India has electricity. But a child in rural Odisha might still do homework by kerosene lamp three nights a week. My friend Varun and I wondered who checks.

It turns out a satellite does. Every night NASA photographs the Earth’s lights from space and gives the pictures away for free. We taught a computer to compare each village with its own usual brightness, night after night, and to notice when one went dark while its neighbours stayed lit.

Then we tested it on the night Cyclone Fani came ashore in 2019, when Bhubaneswar fell to 11% of its normal light. It worked. We called it the Andhakaar Index.

nights checked
61
likely power cuts
5
spent on data
₹0

From orbit to a score, in seven steps

  1. Collectdaily NASA Black Marble (VNP46A2) images
  2. Cleandrop cloudy and moonlit nights, remove sky glow
  3. Mapcut pixels to panchayat boundaries (ISRO Bhuvan)
  4. Compareeach night against that place’s own normal
  5. Verifycross-check with villagers’ WhatsApp check-ins
  6. Scorean Andhakaar Score from 0 to 100
  7. Publisha dashboard and alerts
the outage rule
# a night counts as a likely power cut when a place is
# under half its own normal brightness AND well below the
# rest of the district on that same night
likely_outage = (brightness / own_normal < 0.5) and (brightness < district_tonight)

# first weights, to be calibrated against smart-meter data in a pilot
score = 0.4 * satellite_reliability + 0.4 * citizen_hours + 0.2 * trend_6_months
Night brightness against normal for five places in Sambalpur district, March to May 2026, with three likely power cuts circled, and satellite images before and after Cyclone Fani.

Proof of concept: 9 places, 61 nights, 15 March to 14 May 2026. Jujomura and Naktideul lost power twice each; Sambalpur city never did.

Built with Google Earth Engine and Python. The limits are listed in the open: 500 m pixels, monsoon clouds, and one satellite pass a night, at about 1:30 am.

15

The Book of Avidha

Chapter seven

The potato man of Golebazar

Golebazar, Sambalpur. With Varun Sharma

16

At Golebazar market, an aloo-chop seller told us he boils potatoes until one o’clock in the morning. His wife peels beside him. Nobody pays her.

Every vendor on that street was doing the same work, alone, in the middle of the night. So Varun and I designed Taiyaari: one shared kitchen that preps for all of them, owned by the vendors themselves, one member, one vote. Each vendor still sells their own recipe at their own price. They just get to sleep.

When our first numbers said vendors would save 20%, we checked again and found it was closer to 10%. We told the judges 10%. We made the final round.

saved per vendor, per day
₹150
members to break even
54

One vendor, one day

LineTodayWith Taiyaari
Raw material₹1,500 (retail)₹1,230 (pooled mandi)
Co-op service charge—₹155
Co-op surplus—₹25
Own LPG for home prep₹60₹0
Total a day₹1,560₹1,410
break_even.py
from math import ceil

fixed_per_month = 74_000   # rent, manager, licences, software, reserves
debt_per_month  = 29_238   # cooperative bank loan, from year two
per_member      = 1_923    # ₹180 charge minus ₹111 variable cost, per month

ceil(fixed_per_month / per_member)                     # 39 members: running costs covered
ceil((fixed_per_month + debt_per_month) / per_member)  # 54 members: the loan too

Starting capital is ₹32 lakh: 9% from member shares, 41% from a grant and 50% from a cooperative loan. The kitchen is expected to break even around month 14, and members get a dividend from year two.

17

The Book of Avidha

Chapter eight

The weaver’s voice note

PRAYAS hackathon, IIM Sambalpur, September 2026, with Varun Sharma

18

A weaver in western Odisha earns money every single day and has nothing on paper to prove it. So when she asks the bank for a loan, the bank says no.

But she has a phone, and she has WhatsApp. Hisaab lets her say what she sold today, in Odia, in a voice note. It turns that into a record of her income that she can show a lender.

We pitched it at IIM Sambalpur’s PRAYAS hackathon, for weavers, self-help group members and street vendors.

How it would work

  1. Voice note“ଆଜି ଦୁଇଟା ଶାଢ଼ୀ ବିକିଲି…” on WhatsApp
  2. Speech to texttranscribe the Odia
  3. Extractitems, amounts and dates
  4. Ledgera running income record for each person
  5. Statementa monthly summary a lender can read

This is the design we pitched in a two-minute video and three slides. Hisaab means “the account” in Odia.

19

The Book of Avidha

Chapter nine

The call that wasn’t from the bank

LaserHack 2026, cybersecurity track, with Varun Sharma

20

“Hello ma’am, this is Arjun from your bank’s security desk. Your card was just used for 48,000 rupees in Dubai.” Thousands of parents get a call like that, and some of them read out the OTP.

ScamShot makes that call first, on purpose. It rings your parent with a realistic, harmless scam, stops before anything is shared, and then explains, kindly, what gave it away.

The writing can be made big, it speaks Hindi as well as English, and it can talk slowly. At LaserHack 2026 we were picked for the Grand Jury.

practice scams
4
languages
2

What’s inside

  1. BrowserWeb Speech API listens and speaks; text size A, A+, A++
  2. FastAPIruns the call and the scenario script
  3. Callerlive on the Claude API, or a scripted demo that works offline
  4. SQLiteprogress per family member, via SQLAlchemy
  5. Chart.jsshows how they’re improving

Scenarios: a bank “security desk” asking for an OTP, a grandchild in trouble wanting gift cards, a tax officer threatening arrest, or a surprise. Whisper and ElevenLabs are optional add-ons.

ScamShot’s home screen with text-size, language and slow-speech controls.The menu of practice calls with a demo mode switch.A practice call in progress: the fake bank caller pushes to act within two minutes.

Home, choosing a scam, and a call in progress (demo script).

21

The Book of Avidha

Chapter ten

The agent who wouldn’t guess

Builderr challenge, October to November 2026

22

I built an agent and gave it one rule: never say anything you can’t prove.

Give it the number of any company in Norway. It goes to the public registers and the company’s own website, and comes back with a profile. Every fact carries a receipt: the page it read, a fingerprint of that page, and the exact words it copied. Before it shows you anything it checks every receipt again, and anything that doesn’t match stays hidden.

When it can’t tell whether a website really belongs to the company, it says so. There’s no AI model inside it, so it has nothing to make up.

tests passing
124
API cost
$0

A receipt for every fact

one real receipt (Equinor, employees)
"reference": {
  "url": "https://data.brreg.no/enhetsregisteret/api/enheter/923609016",
  "retrieved_at": "2026-10-23T11:50:16Z",
  "content_sha256": "c7bd44b46c336b1d6208601cd35df036f6e8eef9a7200f5ff07136a10e07dd6f",
  "content_bytes": 2817,
  "quote": "\"antallAnsatte\": 21000",
  "quote_status": "exact"
}
nca/audit.py (excerpt)
def verify_facts(facts, lookup):
    """Withhold any fact whose receipt does not prove it."""
    withheld = []
    for f in list(facts):
        ref = f.get("reference") or {}
        res = lookup(ref.get("url")) if ref.get("url") else None
        if res is not None and getattr(res, "body", None):
            if sha256(res.body) != ref.get("content_sha256"):
                withheld.append({"field": f["field"], "value": f["value"],
                                 "reason": "content hash mismatch"})
                facts.remove(f)
                continue
    ...
MeasuredResult
100 companies149 seconds, 916 requests
Request cap1,900 per run
Tests124 offline, all passing
DependenciesPython standard library only

Sources: Brønnøysund’s company, roles, accounts and announcement registers, Kartverket’s address register, GLEIF, Wikidata and the company’s own site. Every source is queried by organisation number, never by name.

23

The Book of Avidha

Chapter eleven

The book about a phoenix

Written as MS Amaya

24

Before any of this, I wrote stories for children.

Echoes of the Starlit Phoenix is a collection of them: banyan trees that guard old secrets, gardens that grow upside down, and children like Deepak, Luma and Li Wei learning patience, kindness and courage from a jade phoenix and a silent monk.

I published it myself on Amazon, under the name MS Amaya. It’s the reason this portfolio is a book.

Cover of Echoes of the Starlit Phoenix: a golden phoenix and dark dragons around a child reading on a hilltop.

The book, as data

book.json
{
  "title": "Echoes of the Starlit Phoenix: unlock the magic hidden within",
  "author": "MS Amaya",
  "format": "Paperback",
  "category": "Teen & Young Adult › Literature & Fiction",
  "asin": "B0F9982JHB",
  "published": "self-published on Amazon"
}

Writing for children taught me the thing every other chapter here depends on: if you can’t explain it simply, you don’t understand it yet.

25

The Book of Avidha

Shorter stories

  • I won first prize in an elocution contest organised by Mahanadi Coalfields Limited.
  • I wrote essays for IIFT Delhi’s Trade Winds on energy security and strategic optionality.
  • I took a product apart for IIM Raipur’s product management club.
  • I made an infographic about India’s north–south demographic divide, and a poster for IISER Berhampur about the things we don’t question.
  • I designed Sajha Shakti, a cooperative for waste pickers in Sambalpur.
  • My first real projects were a React wellness dashboard and a browser aim trainer, which kept growing one feature at a time.

26

Write to the author

I’m looking for a summer 2027 internship in data, product or consulting. If you have a problem that needs someone to go and meet the real people behind it, and then build something, I’d love to hear about it.

The end

Set in Literata and JetBrains Mono. Written and illustrated in HTML, CSS and SVG by Avidha Chandra, with help from Claude. No framework, no trackers.

27

Jarvis knows this book and nothing else. Every answer tells you which chapter it came from.