MCPcopy Index your code
hub / github.com/Chihiro-n/csiro-biomass-agentic-solution

github.com/Chihiro-n/csiro-biomass-agentic-solution @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
361 symbols 759 edges 6 files 193 documented · 53%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

CSIRO Pasture Biomass Prediction — 5th Place Solution Repository

This repository contains the code used for my 5th place finish out of 3,803 teams (gold medal) in the Kaggle competition CSIRO - Image2Biomass Prediction.

I participated by delegating almost all implementation work to Claude Code (Opus 4.5) and Codex (GPT-5.2 xhigh). I also wrote a blog post about that experience.

Blog post (Japanese): Claude Code / CodexでKaggle金メダルを取った話

About This Repository

This repository intentionally preserves the code, configs, and analysis outputs I actually used during the competition without over-cleaning everything. The goal is to show what collaboration with coding agents looked like in practice.

Notes

  • _CLAUDE.md / _AGENTS.md are instruction files I used for coding agents during the competition. They are prefixed with _ to avoid unintended behavior in other people's environments. Claude Code / Codex automatically read CLAUDE.md / AGENTS.md from the repository root and follow those instructions, so publishing them as-is could cause unexpected behavior when someone clones the repo. They are included here for reference only.
  • The competition dataset (images and CSV files) is not included. Please download it from Kaggle.

Why It Is Structured This Way

To let coding agents (Claude Code / Codex) iterate on experiments quickly, I used the following setup.

Two-Level Structure: EXP + child-exp

  • When I made a major pipeline change in train.py, I created a new EXP directory
  • When I only changed parameters, loss, or model settings, I ran a new child-exp (YAML config) under the same EXP

This made it possible to give short, concrete instructions such as: "Create child-exp003 under EXP113 and change the loss to XX."

Instruction Files for Coding Agents

  • _CLAUDE.md: Instructions for Claude Code. It includes the correct evaluation function, common bug patterns, backward compatibility rules, and other guardrails. It grew to 430 lines as I kept adding lessons learned during the competition.
  • _AGENTS.md: Instructions for Codex. It is a slimmed-down version of CLAUDE.md with an emphasis on guardrails such as "these changes tend to hurt LB."

EXP_SUMMARY.md (Experiment History)

This file records CV, LB, success/failure, and notes for every experiment. I used it as a guardrail to prevent coding agents from repeatedly suggesting ideas that had already failed.

Experiment Workflow

1. Ask the coding agent to write experiment code
   -> Create EXP/{EXPNO}/config/child-{childexpno}.yaml

2. Run execute_train.ipynb on Google Colab
   -> Results are written to EXP/{EXPNO}/outputs/child-{childexpno}/
      |- oof_predictions.csv   # Out-of-fold predictions
      `- results.json          # CV scores

3. Submit with palla-csiro-inferece.ipynb on Kaggle Notebook
   -> Check the leaderboard score

4. Update EXP_SUMMARY.md
   -> Add experiment name, changes, CV, LB, success/failure, and notes

Repository Layout

.
|- _CLAUDE.md                  # Claude Code instruction file (reference only)
|- _AGENTS.md                  # Codex instruction file (reference only)
|- execute_train.ipynb         # Notebook for training on Google Colab
|- EXECUTE_TRAIN_README.md     # How to use execute_train.ipynb
|- palla-csiro-inferece.ipynb  # Notebook for inference and submission on Kaggle
|
|- EXP/
|  |- EXP_SUMMARY.md           # Full experiment log (CV, LB, success/failure, notes)
|  |- EXP060/                  # Main experiment line (EVA02-CLIP -> DINOv3)
|  |  |- train.py              # Training script
|  |  |- infer.py              # Inference script
|  |  |- config/               # Two representative child-exp configs
|  |  `- outputs/              # Experiment outputs (oof, results.json)
|  `- EXP113/                  # Final submission experiment (Private best: child-exp020)
|     |- train.py
|     |- infer.py
|     |- config/               # Six child-exp configs including the final submission setup
|     `- outputs/
|
|- docs/                       # Intentionally messy in places to preserve the real workflow
|  |- OVERVIEW.md              # Competition overview
|  |- DATASET.md               # Dataset description
|  |- Idea_Research/           # Idea notes, Gemini Deep Research results, etc.
|  `- papers/                  # Notes on reference papers
|
`- output/
   `- CV_LB/STATE_SEASON/      # CV-LB correlation analysis outputs generated by agents

Key Files

File Description
EXP/EXP_SUMMARY.md Full log of experiments, including both successes and failures. It functioned as the coding agent's "memory."
_CLAUDE.md A 430-line instruction file that grew from repeated painful lessons during the competition.
docs/Idea_Research/ Raw idea notes, ranging from rough memos to Gemini Deep Research outputs.
execute_train.ipynb Colab notebook for running training. You can launch an experiment by changing only the EXP name and child-exp name.
palla-csiro-inferece.ipynb Kaggle notebook for inference and submission.
output/CV_LB/STATE_SEASON/ Example outputs from CV-LB correlation analysis. I intentionally left some of these analysis artifacts to show how I used coding agents for OOF analysis.

Detailed Solution Write-Ups

If You Want to See the Private-Best Code

My best Private LB setup was EXP/EXP113/config/child-exp020.yaml (DINOv3 Large, 864px, Private 0.66).

See:

  • EXP/EXP113/train.py for training
  • EXP/EXP113/infer.py for inference

Experiment Environment

  • Code authoring: Local Mac + Claude Code / Codex -> edited on Google Drive
  • Training: Google Colab (A100 / L4)
  • Inference / submission: Kaggle Notebooks

Core symbols most depended-on inside this repo

Shape

Method 209
Function 88
Class 64

Languages

Python100%

Modules by API surface

EXP/EXP060/train.py149 symbols
EXP/EXP060/infer.py72 symbols
EXP/EXP113/train.py61 symbols
EXP/EXP113/infer.py32 symbols
EXP/EXP060/infer_ttt.py27 symbols
EXP/EXP113/infer_fast.py20 symbols

For agents

$ claude mcp add csiro-biomass-agentic-solution \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page