Kashish Dugar

Moonlight Build Log: Papa and I are building Moonlight with AI agents. I am the tech lead. I make the decisions and check the work. The agents write the code.

Moonlight is live

Anyone can open Moonlight now:

moonlight-1038733794937.asia-south1.run.app

It runs on Google’s computers in Mumbai. It is built but not checked yet. Tomorrow is checking day.

The Google walk

On Friday the Google screens beat me. Today I did it alone.

I chose “continuously deploy”. Now every time I merge, Google builds Moonlight again by itself. It is like a scoreboard that changes when a new time is recorded.

The friend and the map

The search fix uses Gemini like a friend. You ask the friend, “what might this person mean?” Then Moonlight looks on the Open Targets map.

If Gemini says “dragon pox”, no button is shown. Gemini never creates a disease. I answered this wrong first. I thought the button showed Gemini’s word.

Three tabs

The results are now three tabs: Approved, In trials, New clues.

My decisions:

The last one is important. A grandmother takes a medicine because her doctor said so. If Moonlight says “Do not try it” next to her medicine, she might stop. That could hurt her. So the ending is only for clues.

Withdrawn medicines

On Friday I saw odd names on a page. Today an agent checked the real data. It was true. Medicines that were taken off the shelves were showing as new clues.

Think of a swimmer’s card. Moonlight only read the line “best race ever”, and that line said APPROVAL. Another line said “withdrawn”. Moonlight never read that line.

My decision: if any country took a medicine off the shelves, Moonlight leaves it out. It is counted, never named.

This changed my paper graph. Sitaxentan was on it as already approved, but it was withdrawn. My answer key was 16, 2, 6, 12. With the real data it is 16, 2, 5, 13.

The Approved tab has two doors: the proteins, and Open Targets’ own list. The first fix only put a guard on one door. Now both doors have a guard.

Words Moonlight did not know

Asthma and migraine crashed the live site! Open Targets used two stage words Moonlight had never seen.

They go below phase 1 on my ladder. And if a new word ever comes, Moonlight does not crash. It treats the medicine as not approved and keeps going.

Asking permission is like sending in your entry form. Being in a trial is like being in the pool. The In trials tab is only for swimmers in the pool.

The guide

Moonlight has a guide now, called “How to use Moonlight”. It shows one real card, Doxapram, with gold letters A to H that explain each part.

My page has a rule: before a search, it names no medicine. The guide broke it. So the rule is now more exact. No names outside the guide, and only Doxapram inside it.

The draft had four sentences that were not true any more. The agent caught them and we fixed them.

At the bottom, in handwriting, it says “Made with care by a family in Kochi”. That was Papa’s idea.

One no

Papa wanted a visitor counter. I said no. It is not useful right now, and my page loads nothing from outside.

My errors

Practising for the judges

A judge might ask, “Did you write this code yourself?” My answer: No. AI agents wrote it. But I decide how Moonlight behaves, and I do not merge anything until I understand it.

The commits

Seven merges today. The tests went from 397 to 572, and they all pass.

Tomorrow

Today I learned how to swim. Tomorrow I compete. I check five results and ten explanations by hand, Agastya tries to break it, and Mumma looks at the design.