mohannadibrahim.dev

README.md/case studies/c1 conagra

Case study 01 / Agents Production

A production agent with Graph RAG, inside Microsoft Teams

A Copilot Studio assistant hands multi-step reasoning to a custom LangGraph backend, which traverses SharePoint as a graph in Neo4j instead of searching it as flat text.

At a glancec1 / conagra

Role
Software Engineer
Client
Conagra Brands
Context
Raikes Design Studio capstone
Dates
Aug 2025 - May 2026
Status
Shipped to production
Result
est. 10-15 hrs saved/week
Stack
Copilot Studio, Teams, LangGraph (Python), Neo4j, Entra, SharePoint
On this page
  1. Problem
  2. Constraints
  3. Approach
  4. Decision
  5. Evaluation
  6. Result
  7. What I'd do next

01Problem

The answers people needed sat in deeply nested SharePoint documents, and the questions were about supply-chain entities and how they relate to each other.

Standard vector search fell short here. It ranks chunks by similarity, but it has no idea where a chunk sits in the document hierarchy, or which entities it connects.

02Constraints

  • It had to live where staff already work: Microsoft Teams, through a Copilot Studio assistant.
  • Calls from the assistant to anything behind it go over Microsoft Entra-secured APIs.
  • The reasoning is multi-step, so it runs in a custom backend rather than in the assistant itself.

03Approach

Four layers, each with one job.

  1. Front door. A Copilot Studio assistant in Microsoft Teams takes the question.
  2. Boundary. It hands off over a Microsoft Entra-secured API.
  3. Reasoning. A custom LangGraph backend in Python runs the multi-step work.
  4. Retrieval. Graph RAG on Neo4j traverses the SharePoint document hierarchy and maps supply-chain entity relationships.
MICROSOFT ENTRA-SECURED API MICROSOFT TEAMS Copilot Studio assistant, front door where staff already work reason answer REASONING LangGraph backend Python, multi-step traverse + map entities RETRIEVAL Graph RAG on Neo4j not flat vector search IN THE GRAPH SharePoint hierarchy + supply-chain entities MICROSOFT TEAMS Copilot Studio assistant front door, where staff already work reason answer ENTRA-SECURED API REASONING LangGraph backend Python, multi-step traverse + map entities RETRIEVAL Graph RAG on Neo4j not flat vector search IN THE GRAPH SharePoint hierarchy + supply-chain entities
Fig. 1The assistant stays in Teams. Reasoning and retrieval run behind the Entra-secured API, where the graph keeps the document hierarchy (circles, documents) and the entities documents share (diamonds).

04Decision

Graph RAG on Neo4j for retrieval. Modeling the SharePoint hierarchy as a graph lets the backend walk from a document to where it sits, and across to the supply-chain entities it mentions, instead of hoping the right chunk ranks first.

Alternatives considered
Standard vector searchrejected

Fell short on deeply nested SharePoint documents: similarity alone loses the hierarchy and the links between entities.

All reasoning inside Copilot Studionot taken

Copilot Studio stays the front door in Teams. The multi-step reasoning is handed to a custom LangGraph backend instead.

Graph RAG on Neo4jchosen

Traverses the document hierarchy and maps supply-chain entity relationships.

05Evaluation

Tested with a Copilot Studio evaluation matrix before it went to staff.

PlaceholderTwo or three example rows from the real matrix go here: the question, what a good answer must contain, and how it scored.

06Result

10-15staff hours saved per week, estimated

A production agent staff reach from Teams, answering across nested SharePoint documents instead of making people dig through them.

07What I'd do next

  • Run the matrix on every change. Prompts, tools, and the graph schema all move; a regression should show up in CI before it shows up in Teams.
  • Trace every multi-step run. The way I trace multi-agent runs with LangSmith at UNL ADMA, so a bad answer points to the step that caused it.
  • Measure the hours, not estimate them. Turn the 10-15 hours a week into a number logged from real usage.