Inspiration

Small farmers often need a tractor, harvester, or water pump for only a few days. If they miss that time, their crop can be lost. At the same time, other machines in nearby villages sit unused.

Most rental apps only show a list of machines. When many farmers want the same machine, it goes to whoever asks first. That is not fair, because the farmer with the most urgent need may lose out. We wanted to build a system that gives machines to the farmers who need them most, and explains why.

What it does

FarmGrid helps farmers and machine owners share farm resources in a fair and smart way.

  • Farmers enter what they need, the dates, their crop stage, and how urgent it is.
  • Machine owners add their equipment and set when it is available.
  • The system checks if many farmers want the same machine at the same time.
  • Each request gets a score from 0 to 100. The highest score gets the machine first.
  • The system picks a time slot and includes travel time and preparation time.
  • If a machine breaks down or rain is coming, the schedule updates by itself.
  • Farmers can use it offline. Requests are saved on the phone and sent when the internet comes back.
  • Every decision has a simple reason, so farmers can see why they got or did not get a slot.

How we built it

We built a web application with three screens: one for farmers, one for machine owners, and one main dashboard for admins. We used sample data for farms and machines. We did not use machine learning. We used simple rules, so every result is clear and can be explained.

Priority score. The score is the sum of six parts:

$$Score = U + W + C + Q + D + R$$

Part Meaning Max points
$U$ Urgency (how close the deadline is) 25
$W$ Weather risk (rain or hail coming) 25
$C$ Crop stage (is it ready to harvest?) 20
$Q$ Waiting time (how long they have waited) 15
$D$ Distance (how close the farm is) 10
$R$ Resource fit (fuel, operator, attachments) 5

The total is always between 0 and 100.

No double-booking. Two bookings on one machine clash if:

$$start_1 < end_2 \quad \text{and} \quad start_2 < end_1$$

If they clash, the system gives the slot to the higher score.

Travel and preparation time. A machine can start a new job only after:

$$start_{new} \ge end_{previous} + buffer + travel$$

Offline mode. The phone saves requests locally and sends them in order when the network returns.

Challenges we ran into

  • Stopping double-booking while also counting travel time and preparation time.
  • Making the score fair. It had to favor urgent farmers without making others wait forever.
  • Rescheduling quickly after a breakdown or rain alert without upsetting other bookings.
  • Offline sync. We had to make sure requests were never lost or sent twice.
  • Explaining decisions in plain language that any farmer can understand.

Accomplishments that we're proud of

  • A system that never allows one machine to be booked twice at the same time.
  • A clear 0 to 100 score with a full breakdown for every request.
  • A live demo where a breakdown or rain alert updates the schedule right away.
  • Offline requests that sync automatically.
  • A dashboard where every decision has a simple reason.

What we learned

  • Fair sharing needs clear rules that people can read and trust.
  • Real plans must include travel and preparation time, or they fail in real life.
  • Simple rule-based logic can be better than complex AI when the goal is trust.
  • Apps for villages must work with weak or no internet.

What's next for FarmGrid

  • Use live weather data and real road distances.
  • Add GPS tracking for machines.
  • Support local languages, voice input, and SMS for farmers with low internet.
  • Plan one machine's route across many farms in a single trip.
  • Add reports to help owners see how much their machines are used.

Built With

Share this project:

Updates

Submission history