← All work
GraphRAG · Knowledge graph · LangGraph agent

Consulting AI inside a farming enterprise's app

LG subsidiary · agriculture · $500M+ revenue · 2025–2026 · Lead AI engineer, 16 repositories

Every sentence the AI writes points to where it came from. If it cannot, the sentence is dropped.

The company's agronomy know-how — guidelines, past reports, consultants' calls — answers farmers' questions with citations and drafts the consultants' reports for them.

Client
Fortune 500 subsidiary, $500M+ annual revenue
Status
Live in the production app
Scope
Knowledge graph · assistant · report copilot · dashboard
Codebase
16 repositories, ~1,000 commits on the core two

What they needed

A large agricultural company runs a consulting service for farms. Its best knowledge lived in expert guidelines, years of consulting reports and the consultants’ own phone calls. None of it was reachable at the moment a farmer or a junior consultant needed it. Writing up a consultation took as long as the visit itself.

What I built

Three things that share one brain. A knowledge graph of the company’s agronomy know-how, built from their documents with quality control by their own experts. An assistant in the app (web and KakaoTalk) that answers with citations and refuses when the source is not there. And a report copilot that turns a recorded consultation into a per-topic report, then exports it to PDF. Every bullet points to the sentence in the call it came from.

What changed

The assistant and the report copilot run inside the production app. The pilot is expanding to all farms from May 2026. The company’s team can extend the graph after handover, because the method, not just the result, was delivered.

Under the hood
  • Knowledge graph on Neo4j, 35+ node types, multiple databases per domain. Text-to-Cypher with type-routed few-shot examples; execution is read-only in code (writes blocked, 30-row cap).
  • LLM extraction with conflict resolution calibrated on 381 human-resolved cases, plus an LLM-judge evaluation loop, deterministic merge and dedupe.
  • Report pipeline in LangGraph: transcript → fact extraction → topic selection → per-topic subgraph (fetch references → map facts → disambiguate only when the deterministic mapper flags ambiguity → write → render → verify). Every bullet’s evidence list is validated against transcript turn indices; a bullet with no surviving evidence is removed. A separate verification pass is demote-only: it can downgrade, never promote.
  • Document intelligence: one loader for PDF, DOCX, XLSX, PPTX, CSV with encoding fallbacks, and an HWPX (Korean office format) parser written from scratch.
  • Measured, then left off: an LLM term-correction step was re-measured on 84 real calls and shipped disabled; 85 catalog rows and one rule did the job. The pattern throughout is LLM proposes, code applies and guards.
  • Operations: one gateway is the only caller of the GPU plane (OpenAI-compatible interface, so Gemini, OpenAI or the in-house model swap by URL); nginx + TLS; LangSmith tracing in production; per-repo architecture notes so coding agents read the map before touching code.
The knowledge graph rendered in Neo4j
The knowledge graph itself — conditions, diseases, disorders, cultivation types, beneficial insects — as the assistant searches it
GraphRAG pipeline diagram
How knowledge becomes a graph, and how the assistant uses it
Crop-monitoring dashboard
Crop-monitoring dashboard delivered alongside the assistant
LangGraphNeo4jFastAPIReactGeminivLLMChromaRedisDocker
Human review platform (live) ↗