Inspiration
After heavy rain, hail or wind, advisers receive fragmented field notes that sound decisive while missing the one measurement that makes a decision safe: crop stage, representative sampling, affected area, how long the water has been standing. The project owner works in Argentine agriculture; his own field routine shaped three requirements: check access safety before agronomy, sample several representative points instead of judging from the gate, and delay irreversible decisions until recovery can be observed. That input is first-party, not independent validation.
What it does
AgroField Agent is a scouting coordinator for post-storm soybean fields. It is deliberately not a chatbot and not an autonomous agronomist.
- A scout types or dictates a note in Spanish.
- NVIDIA Nemotron 3 Super on Nebius Token Factory extracts twelve fields with a closed tool schema. The model does not write quotes: it selects source IDs, and the application resolves them to literal sentences of the note.
- A second Nemotron call verifies field by field whether each quote really supports its value. An unsupported or ambiguous value is cleared and becomes a question. The verifier can remove values, never add them.
- Deterministic policy code (not the model) finds the missing critical checks for flooding, hail or wind, blocks the decision if any is missing, and ranks fields using weather and history.
- Follow-up tasks are proposed, never executed. A named human approves or rejects each one, and every observation, verification and decision lands in an append-only audit trail.
The red "decision blocked, checks missing" state is not an error screen. It is the product.
How we built it
Python, FastAPI, Pydantic, SQLite and vanilla JS. Every Nemotron call is one guarded request: temperature 0, reasoning disabled, forced tool call, zero retries, strict client-side revalidation of the schema, literal-evidence checks, required usage telemetry and a cost preflight. The public demo adds a persistent spend ledger with a hard total budget, a daily cap and a per-minute limit, enforced before any network call and shown live in the interface. If the budget runs out, the page says so and only a clearly labeled local extractor answers; there is no silent fallback. Provider keys never reach the browser.
What we measured
We measured before choosing a model. Capped live batches on 2026-10-10, one request per note, zero retries, 40 requests, about $0.03 in total:
| Extractor | Notes accepted | Micro-F1 | Notes fully right | p95 latency | Cost per note |
|---|---|---|---|---|---|
| Nemotron 3 Super | 18 / 20 | 0.93 | 15 / 20 | 2.7 s | $0.0014 |
| Hand-written deterministic extractor | 20 / 20 | 0.82 | 7 / 20 | - | $0 |
| Nemotron 3 Nano | 10 / 20 | 0.65 | 6 / 20 | 4.7 s | $0.0005 |
Limits, stated plainly: these are 20 synthetic development notes with AI-authored references, frozen before the runs. This is a development diagnostic, not a validated benchmark, and there is no independent agronomist review yet. A separate 30-case candidate benchmark with a blind two-phase human protocol is in the repository and remains unvalidated. The repository keeps every failed run, including our first Nano batch (8/20 accepted, F1 0.52), which is what told us our own contract and prompt were the bottleneck.
Challenges we ran into
- Literal quotes prove provenance, not support: our first accepted Nemotron response quoted real sentences next to wrong values. That is why the second-pass verifier exists.
strict: trueon a tool schema is not enforced server-side; both models sometimes omit required keys or assert values without sources, so the client revalidates everything.- An example value in a schema description ("for example V3") was copied into two outputs. Descriptions behave like few-shot examples.
- Keeping a public demo honest and free: budget ledger, caps, and a visible fallback instead of an open endpoint.
Accomplishments that we're proud of
A complete, bilingual product flow (Spanish notes, English interface with ?lang=en) where the model is powerful but never the authority; a measured model choice instead of an assumed one; 210 automated tests; and a repository that documents its adverse results instead of hiding them.
What we learned
In a high-consequence workflow, fluency is not readiness. The useful question is not "can the model answer?" but "what did the note establish, what is still unknown, and who is accountable for the next step?"
What's next for AgroField Agent
Independent agronomist review of the frozen cases, interviews with Argentine advisers, the 30-case benchmark on Nemotron under a cap, speech capture in the field, and an ablation of Tavily official-alert retrieval before claiming any value from it.
Testing instructions
- Open https://agrofield-agent.onrender.com/?lang=en (free instance: the first load after idle can take about a minute).
- The header badge reads "Nemotron ยท Token Factory";
/api/runtimeshows the model, verifier and remaining budget. - With Lote Bajo selected, keep Incomplete note and click Analyze evidence: literal quotes, a "Verified by" badge, and a blocked decision with only the missing questions.
- Click Complete note and analyze again: evidence ready for review, proposed tasks.
- Type a reviewer name, approve a task, and open Audit trail.
- Optional: write your own note in Spanish. Each analysis is two capped Nemotron requests.
All fields, locations and data are synthetic. No treatment is recommended or executed.
Project timeline
Created on 2026-09-01, after the submission period opened; no earlier code was reused.
Built With
- docker
- fastapi
- javascript
- nebius-token-factory
- nvidia-nemotron
- pydantic
- python
- render
- sqlite
Log in or sign up for Devpost to join the conversation.