Skip to content

Latest commit

 

History

195 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KrishiSetu

Cyclone and flood resilient smart agriculture advisory system for coastal Odisha. Craft N Code 2026, PS-07, Team 511.

A cyclone forecast becomes a crop-stage decision: an action, a deadline, a source, and a fallback, in Odia, on any phone.

Warnings are infrastructure. Decisions are the product.

Why this exists: the 1999 lesson

In 1999 a super cyclone hit Odisha with a 48h+ official warning. 9,893 people died. The warning existed. The decision did not. Every cyclone since is measured against that failure: Fani 2019 (108,220 ha crop loss, Rs 1,304.58 cr, OSDMA damage assessment), Yaas 2021 (5,882 ha salt-affected across 5 Balasore blocks, 2-4 m surge over a full-moon tide), Dana 2024 (5,428 acres in a rapid assessment of 4 selected blocks). Farmers got the alerts. They did not get an answer to the one question that matters: what do I do with my crop today.

The market we studied, not guessed

This is not a tech-first idea. It is grounded in 49 research reports, 7 waves, 3.2M chars of raw evidence, 4,800+ cited sources, every claim traceable to a named dated source. The market reality:

  • Paddy covers 44% of Odisha's cropland
  • 4.866 million holdings, average 0.95 ha
  • 40.5% of rural households are indebted (average Rs 31,000)
  • 5.82% of land is wholly leased in: the tenant cannot make long-term investments, so advice must fit what a tenant can actually do
  • 48.4% of women own a phone versus 80.7% of men: the advisory must work on a shared feature phone, in Odia, by voice
  • PMFBY already processes 88.5 lakh enrollments and Rs 2,580 crore in claims (2020-25, Lok Sabha annexure): the insurance rail exists, the gap is verified observation and actionable advice

Why the hardware and money floor is low, on purpose

The target farmer has no money for sensors, no reliable 4G, no smartphone, and a landlord who may veto changes to the land. So the system is built backwards from that constraint:

  • Rs 1,500 total demo hardware budget: one real ESP32 sensor node in Round 1, everything else simulated and labeled SIMULATED
  • zero API-key dependence: the advisory engine runs on the absence of every external service. IMD CAP RSS is a cached bonus, not a dependency
  • zero installs, zero network needed: Python 3.11+ stdlib only, the demo runs on any machine, offline, on the CPU
  • a delivery ladder, not a fallback list: app, SMS, IVR missed-call, USSD, community radio, village announcement. Each rung has a trigger, a latency budget, and an escalation rule when delivery fails. If the phone has no data, the farmer still gets the decision
  • the phone is a feature, not a dependency: every advisory works on a basic phone with voice

The two-farm proof

Two farms, one warning. Asha: flowering paddy, low plot, weak embankment, leased land. The compiler says do not harvest: grain not formed, harvesting loses the whole season, protect the crop, photograph it for the claim. The high-field farm: mature paddy, owned land, labor available. The compiler says harvest now, deadline lead minus 6h, move to the raised platform. Same 24h warning, two governed decisions, each with a deadline, a source, a cost of waiting, a doability check. That contrast is the product: the message was never the gap, the decision was.

The math is real and visible

  • CVaR (conditional value at risk) at every decision node, sample-based
  • Monte Carlo with convergence gates (pilot + main, precision stops)
  • fragility curves per crop and stage
  • a typed cascade graph: TRIGGER, AMPLIFY, CASCADE, COMPOUND edges between hazards and outcomes, because no phenomenon is a static event
  • the Fani replay: the engine is run over the real 2019 event with the best track frozen, the posterior band contains the actual 108,220 ha anchor. No prevented-loss claim is made: the numbers are what happened

Where the AI is (and is not)

The decision core is deliberately deterministic: no LLM sits inside the advice loop. Agronomy rules are a curated, cited seed set (R1-R18), and the math is classical: CVaR, Monte Carlo with convergence gates, fragility curves, a typed cascade graph. That is a design decision, not a gap. LLMs hallucinate agronomy, and a farmer cannot afford a wrong answer. Rules with citations beat vibes with confidence.

The AI layers are the delivery and sensing layer, built for Round 1, and documented in EDGE-AI-VISION.md: on-device small LLM for conversational Odia advisory on a phone hub, Odia ASR and TTS, photo-based damage estimation for claim evidence, LoRA fine-tuning per district, all running offline on the farmer's own device. The prototype proves the decision core; Round 1 bolts on the voice.

The research base is deep: 49 reports across 7 waves with verification gates, but the product never depends on a model to give advice. Every number in this deck traces to a source you can open.

The problem in one line

Farmers get warnings. They do not get decisions.

What this is

An advisory engine, not an alert system. It takes a farm profile (crop, stage, plot elevation, soil, tenancy, labor) and a hazard bulletin, then issues staged actions ranked by what the farmer can actually execute: harvest now or protect in place, move seed above the water line, brace the banana, photograph the standing crop for the claim. Every action carries a deadline, a source, a cost of waiting, and an evidence badge.

The cyclone and flood predictor is a backup layer that fires only when the official warning never reaches the farm.

Why it runs this way

Your constraints shaped it: minimize hardware, minimize API-key dependence, work on 4G or less, self-dependent. The prototype is the honest minimum: a decision engine plus UI that runs on any machine with Python 3.11+, no installs, no network, no keys. All math is live on the CPU: the CVaR harvest decision, the Fani replay band, the delivery ladder, the claim packet.

Run it (two commands)

cd krishisetu-backend && python3 serve.py --seed --port 8100
cd scaffold && bash ./demo.sh

Open http://localhost:8137. Python 3.11+ stdlib only, offline capable.

  • backend on 8100: farms, incidents, actions, claims, hash-chained audit log
  • UI on 8137: farmer view, operator console, two-farm contrast, research tab
  • everything is simulated and labeled: SIMULATED feed, SIMULATOR delivery

What is inside

Folder What it is
scaffold/agri/ advisory core: 18-rule registry (R1-R18), compiler, CVaR, Fani replay, 11-state machine, claims, doability
scaffold/webapp/ farmer UI (krishi.html), operator console, offline service worker
scaffold/engine/ domain-agnostic engine: ingest, dedupe, rank, propose, approve, audit, trace
krishisetu-backend/ SQLite schema, REST API, CAP ingest stub, SMS/IVR adapter stubs, hash-chained audit log
scaffold/deck/ the 13-slide presentation (generator + built pptx)
research/ 49 research reports, every claim traceable to a named dated source

The research

49 research reports across 7 waves, 3.2M chars of raw evidence, 4,800+ cited sources. Full ledgers of every cyclone and major flood with agricultural damage (IBTrACS 1848-present, EM-DAT, Dartmouth Flood Observatory). No phenomenon is treated as a static event: typed cascade graphs, Monte Carlo with convergence gates, CVaR at every decision node, fragility curves per crop and stage. Every number in the deck traces to a source you can open: slide to proof ledger to EVIDENCE-INDEX.md to raw report.

The counterfactual: Fani (108,220 ha, Rs 1,304.58 cr, 90h watch), Yaas (5,882 ha salt-affected, 2-4 m surge), Dana (rapid assessment, 5,428 acres), 1999 (9,893 deaths with a 48h+ warning). The warning existed; the decision did not.

Honesty

  • IMD feed is simulated, SMS and IVR run through simulators, agronomy rules are a curated seed set awaiting agronomist review
  • every claim carries an evidence badge: ODISHA-MEASURED, TRANSFER-PRIOR, SCENARIO-ASSUMPTION, UNKNOWN
  • nothing is labeled live that is not live
  • no prevented-loss claims: the events are real, the engine output is what the product would issue, the replay validates against what happened

Tests

cd scaffold/tests && for t in test_*.py; do python3 $t; done
cd ../krishisetu-backend 2>/dev/null; cd ../../krishisetu-backend && python3 tests.py
cd scaffold && python3 eval/eval.py --all

106 acceptance checks plus the backend suite and integration harness, all green on the shipped build.

Team 511

  • Harsh Gounder: architecture, code, research method, backend, QA, devops
  • Ayush Kharwar: presentation build and design
  • Sujal Shukla: presentation design assistance

Craft N Code 2026, PS-07: Cyclone and flood resilient smart agriculture advisory system.

About

KrishiSetu: cyclone and flood resilient smart agriculture advisory for coastal Odisha. Craft N Code 2026 PS-07, Team 511.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages