One bot, two-player match
You manage one farm. Every scored episode pairs your bot with another bot managing a separate farm.
Kaggriculture
Run one farm inside a shared, reactive economy.
Essentials
You manage one farm. Every scored episode pairs your bot with another bot managing a separate farm.
Higher bank wins. Equal bank ties. Lower bank loses. Unsold inventory is worth zero.
Kaggle adjusts skill rating across many episodes. The size of the coin lead does not affect that rating.
Schedule labor, care, harvests, expansion, and liquidation.
Both bots and the town change supply, demand, and market prices.
Use visible commitments to choose a better response before turn 720.
Setup
Kaggle evidence
Track ratings over time without confusing ladder movement with local farm quality.
Interpretation
Submit the interpretable baseline, then log its first rating and rank.
Early ratings move quickly; wait for more episodes before making a large rewrite.
Classify the opponent opening and identify the first irreversible mistake.
History
| Version | Date | Status | Rating | Rank | Episodes | Notes |
|---|
The first entry becomes the baseline for rating and rank movement.
Agent system B
Start from a stable policy, then switch only when evidence justifies it.
Stable mixed engine while the opponent model has low confidence.
Switch cost: noneMove away from a product the opponent is visibly scaling before the glut arrives.
Trigger: strong portfolio signalPreserve cash and shorten payback when the opponent commits heavily to long-horizon growth.
Trigger: land + structure spendStop reinvestment, collect reachable output, and sell before the deadline.
Trigger: payback exceeds time leftTen melons, five wheat plots, six temporary hands.
Build four pastures and unlock the second quadrant.
Feed and care for cattle while recurring crops mature.
v0 still hires and buys seeds; a hard liquidation gate is the next change.
| Seat | Episodes | Finished ahead | Average final bank |
|---|---|---|---|
| First | 10 | 10 / 10 | 29,984 |
| Second | 10 | 10 / 10 | 29,815 |
Local benchmark: Balanced Tempo v0 versus Kaggle's starter bot. This is matchup evidence, not a Kaggle leaderboard rating.
Best run · seed 3 · second seat
A tie is only possible when both bots finish with exactly the same bank. Cattle, strawberries, and clean exit are internal strategy checkpoints—not official win conditions.
Daily trace
| Day | Phase | Bank | Change | What happened | Why |
|---|
Balanced Tempo finished ahead in all 20 head-to-head episodes.
Average bank differed by only 570 coins between first and second seat.
Final bank varied by 14,352 coins across seeds.
Three runs ended with three cows; only eight reached ten strawberry plots.
Competitive dynamics
Two farms, one shared price system, and a town that keeps consuming.
Convergence
Hotelling’s beach model is a useful analogy: competitors often converge on the same attractive location. Here the “location” is a crop, livestock mix, timing window, or market resource. If both bots find the same center, supply rises and the price response can erase the original edge.
Analogy, not a theorem for this game. Hotelling’s original minimum-differentiation result depends on its assumptions and was later challenged.Pressure map
Copying the strongest portfolio may work until both bots flood the same product and depress its price.
Watch: opponent assets · inventory curveTown shops and the town center remove products from the market, rebuilding scarcity between player sales.
Watch: shop unlocks · price recoveryLand, animals, seeds, and hands raise future output while reducing the bank that currently decides the match.
Watch: payback day · bank leadEvery care, harvest, movement, and placement consumes scarce execution capacity.
Watch: overdue work · route lengthA rigid plan is efficient against a familiar bot; an adaptive plan can react when the opponent commits elsewhere.
Watch: archetype confidence · switching costLate assets only matter if they pay back and their output reaches the bank before turn 720.
Watch: turns remaining · unsold unitsGame-specific claims are grounded in the official Kaggriculture environment reference ↗.
Agent system A
Turn visible commitments into a small, revisable hypothesis.
Inference loop
Never let a weak guess override farm survival.
Land unlocked, structures built, crop ages, animal mix, visible workers, bank, and shared price movement.
Expansion rush, livestock compound, recurring crops, short-cycle cash, or mixed/unknown.
Cash shortage, feed demand, care load, harvest wave, storage pressure, or liquidation deadline.
Differentiate the portfolio, preserve liquidity, accelerate a sale, or stay on the baseline when evidence is weak.
Decay stale beliefs and compare predicted farm changes with what actually appeared.
Reading windows
First seeds, worker count, and early spending reveal tempo but not the full portfolio.
Land and structures make the strategy more expensive to reverse.
Yield cadence, feed load, and price impact expose the bot’s operating model.
New purchases, unsold output, and bank conversion reveal terminal mistakes.
Opponent farm state and the shared market.
Opponent shed, private inventory, source code, and future actions.
Archetype probabilities, predicted constraint, confidence, and response budget.
Agent system C
Chess-like response planning with stochastic branches and partial information.
Rolling horizon
Long enough to see payback, short enough to remain responsive.
Bank, assets, care deadlines, shed, routes, prices, town demand, opponent hypothesis, and turns remaining.
Baseline continuation plus a small set of meaningful deviations: expand, diversify, accelerate, defend, or liquidate.
Opponent response, weed rolls, future shop unlocks, price movement, and execution slippage.
Prioritize probability of finishing ahead; use expected bank and failure risk as diagnostics.
Take the first action from the best robust plan, observe the new state, and simulate again.
Build order
Re-run known seeds and reproduce bank, farm, and market transitions.
Starter, expansion, livestock, recurring-crop, and mixed response models.
Sample weeds, shops, and uncertain opponent choices.
Compare predicted win probability with held-out episodes and ladder results.
Agent system D
Protect irreversible obligations before spending effort on adaptation.
Priority stack
Lower number wins when tasks compete.
Water/feed deadlines, overflow, invalid actions, and products about to decay or cap.
As turn 720 approaches, stop purchases that cannot repay and liquidate all reachable value.
Harvest windows, temporary scarcity, shop-driven demand, and care bonuses.
Update the archetype only when visible evidence materially changes the likely response.
Compare the baseline with bounded counter-strategies and choose the robust branch.
Plant, build, hire, expand, and route workers using the remaining action budget.
Guardrails
Stay on the baseline until multiple signals support the same opponent model.
A response is only useful if the gain exceeds the cost of abandoning the current plan.
Opponent analysis must not steal in-game actions from mandatory farm work.
Use small reversible deviations to learn; avoid large speculative commitments.
First ladder entry
The first submission is a measuring instrument, not the final strategy.
Learning plan
Keep the three attention modules readable, bounded, and protected by a safe fallback action.
Complete self-play, starter matches, both seats, varied seeds, and the late-game liquidation test.
Kaggle first validates the bot against a copy of itself, then matches it with similarly rated submissions.
Record rating, rank, and episode count at consistent checkpoints instead of reacting to every move.
Tag opponent archetype, first strategic divergence, execution failure, and terminal inventory.
Improve opponent modeling, lookahead, attention, or a strategy rule—then submit a new version.
Candidate architecture
Each module has a narrow decision boundary.
Prioritize harvest, watering, feed, care, placement, and worker routing by deadline and travel distance.
Classify expansion, livestock, or recurring-crop concentration. Only a strong strawberry signal switches our recurring crop to tomato.
Stop land, livestock, and recurring-crop investment before they lose time to mature; route carried value to the shed during liquidation.
Future architectures play both seats against the exact v0.2 artifact. Promote one mechanism at a time, then compare ladder evidence.
Release gate
Submission
def agent(obs):
return {
"farmer": ["PASS"],
"hands": [],
"market": []
}
main.py at the tar.gz root with agent(obs)Frozen local opponent: artifacts/kaggriculture-v0.2.0.tar.gz. Build with npm run submission:build; validate the exact archive with npm run submission:validate.
Submission and ranking behavior: official Kaggriculture evaluation section ↗.
Reference
Environment
The agent observes these rules; it cannot change them.
30 days with 24 turns each.
Northwest 5 × 5 begins unlocked.
Three more quadrants cost 1,000 / 2,000 / 4,000.
Overflow at day-end is discarded.
Both players affect shared prices.
Unwatered plants become weeds; unfed animals escape.
Daily hires follow Fibonacci pricing and reset each day.
Shops unlock every 3 days and consume stock every 4 turns.
Board
Economy
| Asset | Buy-in | Base price | First yield | Cadence / life | Daily obligation |
|---|
Prices move with supply and town demand.
Invariants
Evidence
One change. Enough head-to-head episodes. Clear decision.
Trend
Log a matchup to start.
History
Start with a baseline.
Priorities
Impact × confidence ÷ effort.
Backlog