Inspiration

Poultry feeds many Kenyan families, but on a typical medium farm of 500–5,000 birds I kept seeing the same losses:

  • 🦠 Disease is noticed too late, so by the time many birds are dying, a whole batch can be lost.
  • 🌾 Feed runs out without warning, and wastage goes unseen, even though feed is the biggest cost.
  • 📓 Records live in exercise books, so nobody knows the real deaths, sales or profit of a batch.

Farm workers also speak Kiswahili and Sheng, while most farm software is English-only forms that nobody fills in. I wanted a farm team that workers can simply talk to, the way they already use WhatsApp, so I built KukuMind.

What it does

KukuMind is a team of seven AI agents. A worker sends a message or a photo in English, Kiswahili or Sheng, for example "B1 leo vifo mbili, chakula gunia moja" (B1 today: 2 deaths, 1 bag of feed), and the Manager agent passes it to the right specialist:

Agent What it does
🧭 Manager Routes every message, writes the morning briefing, shows today's plan and alerts
📒 Flock records Saves daily reports, registers new flocks, keeps every bird counted
🩺 Disease detector Camera and symptom check (RED / AMBER / GREEN), early warnings from the records, disease research, and a ready WhatsApp message to the vet
🥚 Hatchery Runs the 21-day incubator plan; hatched chicks become a new batch
🌡️ Advisor Vaccination plan and brooder heat for each batch's age
🌾 Feed & inventory Days of feed left, bags to order, wastage and sick-bird flags
💰 Sales & marketing Records sales, finds what's ready for market, writes offers to buyers, full profit statement

A RED health alert automatically blocks sales of that batch until the vet clears it, and KukuMind never names medicines or doses. Each agent also has its own page with forms, charts and a chat, and a language picker sets the reply language.

Live demo: jachammer.ai/project/prj_12dfd0e721a247bfb46f15fca1f71e49 · Code: github.com/Mesheco/KukuMind

How I built it

I built KukuMind almost entirely in Jac (about 98% of the code).

  1. I modelled the farm as a graph (Object-Spatial Programming): Farm → House → Batch → Record / Sale / HealthCheck / Expense, plus FeedStore, Buyer, Vet and EggSet, for 14 node types in all.
  2. I made every agent a walker. For example, save_report walks to a Batch, saves the record, lowers the birds alive and takes the feed out of the store.
  3. I connected the AI through by llm() (byLLM): 16 AI functions return typed Jac objects, such as def route_message(text: str, batch_ids: list[str]) -> Route by llm();. I use Claude Haiku 4.5 to read and route messages, and Claude Sonnet 4.6 to write replies, check photos and explain diseases.
  4. "The AI reads, the code counts." I let the model only copy numbers out of a message, and Jac code does all the arithmetic, so the records are always exact:

$$\text{alive} = \text{start} - \text{dead} - \text{sold}$$

$$\text{eggs} = 30 \times \text{trays} + \text{loose eggs} \qquad \text{feed (kg)} = 50 \times \text{bags} + \text{kg}$$

$$\text{profit} = \text{bird sales} + \text{egg sales} - \text{feed eaten} \times \text{price per kg} - \text{chicks} - \text{vaccines} - \text{other costs}$$

$$\text{days of feed left} = \frac{\text{feed in store}}{\sum_{\text{batches}} \text{birds alive} \times \text{kg per bird per day}}$$

  1. I built the whole stack in Jac: 16 walker:pub endpoints form the API, and the whole web app (home page, seven agent pages, camera, charts) is written as Jac client components (.cl.jac). I deployed it live on JacHammer.
  2. I tested it: 161 automated checks with a stand-in AI, plus a live test with Claude in English, Kiswahili and Sheng.

Challenges I ran into

  • Language: I had to teach the model Kiswahili and Sheng number words (thelathini na mbili = 32, gunia = a 50 kg bag, trei = 30 eggs) and correct Kenyan Kiswahili. Early replies used wrong words, so I added a shared language guide and a list of banned words.
  • Wrong maths from the AI: in an early version the model got 32 trays of eggs wrong. That is why I moved all arithmetic into Jac code.
  • Being a beginner on Windows: I had to set up a full-stack Jac app, fix the web build on Windows, and move my project out of OneDrive.
  • Deploying: JacHammer runs a newer Jac than my laptop, so I updated the graph filter syntax from (?:Farm) to [?:Farm] and declared byllm as a dependency.

Accomplishments that I'm proud of

  • I built seven agents that plan, decide and act on one shared farm graph: a single message updates the records, feed stock, warnings, profit and the reply together.
  • I made a disease check that goes from a phone photo to a ready message for the vet in about a minute, with safety rules enforced in code, not just in the prompt.
  • I made sure every bird is accounted for: started − dead − sold = alive, checked for every batch.

What I learned

  • I learned how Jac's walkers and graph make multi-agent systems feel natural: each agent simply walks the farm.
  • I learned how typed by llm() functions keep AI output structured, testable and safe.
  • I learned the best split: AI for language, code for numbers.

What's next for KukuMind

  • WhatsApp and SMS reporting, so workers can report without opening an app
  • More Kenyan languages (Kikuyu, Dholuo, Kamba and more)
  • New agents for market prices, M-Pesa payments and vet booking
  • An offline-first mobile app, and a county vet view for early outbreak warnings across farms

Built with: Jac · Jaseci · byLLM · Claude (Anthropic) · VS Code · GitHub · JacHammer

Built With

  • agriculture
  • agritech
  • ai-agents
  • anthropic
  • byllm
  • claude
  • computer-vision
  • git
  • github
  • jac
  • jachammer
  • jaseci
  • kenya
  • kiswahili
  • llm
  • multi-agents
  • node.js
  • object-spartial-programming
  • poultry
  • python
  • react
  • sheng
  • vite
  • vscode
  • whatsapp
Share this project:

Updates

posted an update —

KukuMind v1.0 is live: your AI farm team, from egg to market

Today I'm submitting KukuMind to AI Hackathon Kenya: Hack the Future with Jac. Here's how it grew over the hackathon.

How KukuMind evolved

Day 1: the idea and the first agents

  • Started with one question: why do poultry farms lose birds and money they never see coming?
  • Built the farm as a Jac graph (Farm → House → Batch → Records) and the first walkers to save worker reports.

Day 2: seven agents and three languages

  • Grew to 7 agents: Manager, Flock records, Disease detector, Hatchery, Advisor, Feed & inventory, Sales & marketing.
  • Workers can now write in English, Kiswahili or Sheng, e.g. "B1 leo vifo mbili, chakula gunia moja".
  • Moved all maths into Jac code, so the AI only reads numbers and never calculates them.

Day 3: a real product

  • Disease detector with camera: diagnose (RED / AMBER / GREEN), monitor, research, plus a one-tap WhatsApp message to the vet.
  • Safety in code: no medicine names, and sales are blocked while a batch is on RED alert.
  • Full profit statement: sales − feed eaten − chicks − vaccines − other costs, per batch and for the whole farm.
  • Every bird counted: started − dead − sold = alive.
  • Language picker, a navy/teal design, and a layout that works on phones.
  • Reset farm: start from the demo farm, or an empty farm with your own data.
  • Deployed live on JacHammer.

A peek at the code

Every agent is a walker on the farm graph, and the AI is a typed function:

def route_message(text: str, batch_ids: list[str]) -> Route by llm();

walker save_report {
    can save with Batch entry {
        here.alive = here.alive - self.deaths;
        here ++> Record(date=self.date, deaths=self.deaths, feed_kg=self.feed_kg);
    }
}

By the numbers

  • 7 AI agents · 14 node types · 16 walker:pub endpoints · 16 by llm() functions
  • 161 automated checks passing
  • ~98% of the code is Jac

Try it

What's next

WhatsApp/SMS reporting, more Kenyan languages, M-Pesa and vet booking, an offline-first mobile app, and a county view for early outbreak warnings.

Feedback is very welcome. Tell me what you'd want KukuMind to do on your farm!

Meshack Mutinda

Log in or sign up for Devpost to join the conversation.

Submission history