A portfolio-ready version of my Udacity Agentic AI Nanodegree project that demonstrates how multiple LLM agents can collaborate to turn a product specification into a structured development plan.
The project uses an Email Router product specification as the input and generates three planning artifacts:
- user stories for the product personas,
- product features that group related user needs, and
- engineering tasks with acceptance criteria and dependencies.
flowchart TD
A[Workflow Prompt] --> B[Action Planning Agent]
B --> C[Routing Agent]
C --> D[Product Manager Agent]
C --> E[Program Manager Agent]
C --> F[Development Engineer Agent]
D --> G[Product Manager Evaluation Agent]
E --> H[Program Manager Evaluation Agent]
F --> I[Development Engineer Evaluation Agent]
G --> J[Final Development Plan]
H --> J
I --> J
Traditional automation follows fixed rules. This project explores a more flexible pattern: agentic workflow orchestration. A planning agent breaks down the work, a routing agent sends each step to the right role-specific agent, and evaluator agents check that each output follows the expected format before the workflow continues.
This is not a chatbot. It is a structured workflow that processes a product prompt and produces a product-development artifact.
| Agent | Purpose |
|---|---|
DirectPromptAgent |
Sends a prompt directly to an LLM. |
AugmentedPromptAgent |
Adds a persona/system prompt to shape the response. |
KnowledgeAugmentedPromptAgent |
Restricts the response to provided knowledge. |
RAGKnowledgePromptAgent |
Retrieves relevant knowledge chunks using embeddings before answering. |
EvaluationAgent |
Checks another agent's response against explicit criteria and asks for corrections if needed. |
RoutingAgent |
Uses embedding similarity to route work to the most relevant specialized agent. |
ActionPlanningAgent |
Extracts ordered action steps from a workflow request. |
.
├── phase_1/
│ ├── workflow_agents/
│ │ └── base_agents.py
│ ├── direct_prompt_agent.py
│ ├── augmented_prompt_agent.py
│ ├── knowledge_augmented_prompt_agent.py
│ ├── rag_knowledge_prompt_agent.py
│ ├── evaluation_agent.py
│ ├── routing_agent.py
│ └── action_planning_agent.py
├── phase_2/
│ ├── workflow_agents/
│ │ └── base_agents.py
│ ├── Product-Spec-Email-Router.txt
│ └── agentic_workflow.py
├── outputs/
│ ├── phase_1/
│ └── phase_2_output_final.txt
├── .env.example
├── .gitignore
├── requirements.txt
└── README.md
Create a virtual environment and install dependencies:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtCreate your local environment file:
cp .env.example .envThen add your OpenAI API key to .env:
OPENAI_API_KEY=your_api_key_hereOptional model settings are also available in .env.example:
OPENAI_CHAT_MODEL=gpt-3.5-turbo
OPENAI_EMBEDDING_MODEL=text-embedding-3-largeLeave OPENAI_BASE_URL blank for the standard OpenAI API. Set it only if you are using a proxy or classroom-provided OpenAI-compatible endpoint.
Run individual Phase 1 demos:
python phase_1/direct_prompt_agent.py
python phase_1/augmented_prompt_agent.py
python phase_1/knowledge_augmented_prompt_agent.py
python phase_1/rag_knowledge_prompt_agent.py
python phase_1/evaluation_agent.py
python phase_1/routing_agent.py
python phase_1/action_planning_agent.pyRun the end-to-end Phase 2 workflow:
python phase_2/agentic_workflow.pyPreviously generated sample outputs are included in the outputs/ folder so reviewers can understand the expected behavior without rerunning the full workflow.
The Phase 2 output shows the workflow producing:
- validated Email Router user stories,
- grouped product features,
- engineering implementation tasks,
- acceptance criteria,
- estimated effort, and
- dependencies.
This project demonstrates:
- decomposing a broad product-management request into agent-routable steps,
- using role-specific product, program, and engineering agents,
- grounding outputs in a product specification,
- validating generated artifacts against structured criteria,
- using embeddings for semantic routing, and
- making an educational prototype safer and cleaner for public GitHub sharing.
Do not commit .env files or API keys. This repository includes .env.example for configuration and .gitignore rules to prevent local secrets from being committed.
- Add automated unit tests with mocked OpenAI responses.
- Add a single shared
workflow_agentspackage instead of carrying a copy in each phase. - Persist routing/evaluation traces as structured JSON.
- Add a CLI flag to save workflow output directly to Markdown.
- Replace hardcoded product-spec pathing with configurable input files.
Completed as part of Udacity’s Agentic AI Nanodegree. This portfolio version was cleaned, documented, and adapted by Nimra Alam. Starter project instructions and the original project structure are attributed to Udacity; implementation, cleanup, documentation, and portfolio presentation are my own.