HR-Assistant / intro.md
owenkaplinsky's picture
update from github stable code (#3)
3370983 verified
# ***`Gradio Agents & MCP Hackathon Winter Edition 2025`***
## ๐Ÿ Overview
This repository hosts our team's submission for **Track 2: MCP in Action** in the [MCP's 1st Birthday Hackathon](https://huggingface.co/MCP-1st-Birthday).
Our goal is to build an **autonomous agentic system** that demonstrates:
- **Planning, reasoning, and execution**
- Integration of **custom tools, MCP tools, or external APIs**
- Effective **context engineering**
- Clear, practical **user value**
We'll use **LangGraph** as our orchestration backbone for building multi-turn, tool-using, and context-aware agents.
> ***`Check hackathon README for detilaed requirements.`***
## ๐Ÿง  ***`Tools & Frameworks`***
- ๐Ÿงฉ [LangGraph](https://docs.langchain.com/oss/python/langgraph/overview): for multi-agent orchestration and planning
- Why & how they built [LangGraph for production agents](https://blog.langchain.com/building-langgraph/)
- ๐Ÿง  **LLM Engines:** [OpenAI](https://openai.com) / [Anthropic](https://www.anthropic.com) โ€” reasoning and planning models
- gpt-oss inference providers
- [Open Router](https://openrouter.ai/openai/gpt-oss-20b):
- LangChain Wrapper: https://github.com/langchain-ai/langchain/discussions/27964
- [TogetherAI](https://www.together.ai/openai)
- ๐Ÿ’ฌ [Gradio](https://www.gradio.app/): for the UI and context-engineering demos
- โš™๏ธ [MCP](https://modelcontextprotocol.io/docs/getting-started/intro) Tools: standardized interfaces for Gmail, Google Calendar, Voice technologies and other APIs
- โ˜๏ธ [Google Cloud Platform](https://cloud.google.com): optional backend for hosting MCP servers and integrated services
- ๐Ÿ“ž [Twilio](https://www.twilio.com/en-us): enables automated voice calls and candidate interactions
- ๐Ÿ”Š [ElevenLabs](https://elevenlabs.io): (optional) natural text-to-speech for realistic voice screenings
- ๐ŸŽ™๏ธ [Whisper-based Transcription API](https://whisperapi.com) (or [OpenAI Whisper API](https://platform.openai.com/docs/guides/speech-to-text) ) โ€” for speech-to-text functionality in voice interviews
- ๐Ÿงญ [Langfuse](https://langfuse.com) or [LangSmith](https://docs.langchain.com/langsmith/quick-start-studio): debugging, observability, and trace visualization
- ๐Ÿ“„ [Docling](https://www.docling.ai): for parsing and analyzing uploaded CV documents
- ๐Ÿงฑ [Pydantic](https://docs.pydantic.dev/latest/): for structured outputs and data validation
- ๐Ÿ”€ [Parlant](https://github.com/emcie-co/parlant): enables agents to handle multi-intent, free-form conversations by dynamically activating relevant guidelines instead of rigidly routing to a single sub-agent โ€” solving the context fragmentation problem inherent in traditional LangGraph supervisor patterns.
## ๐Ÿ“š ***`References for Context Engineering`***
- [**Context Engineering for AI Agents โ€” Manus Blog**](https://manus.im/blog/Context-Engineering-for-AI-Agents-Lessons-from-Building-Manus)
- [**YouTube Talk Manus**](https://www.youtube.com/watch?v=6_BcCthVvb8&start=2525)
- [**LangGraph Overview**](https://docs.langchain.com/oss/python/langgraph/overview)
- https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents
- https://medium.com/fundamentals-of-artificial-intelligence/mitigate-context-poisoning-in-ai-agents-using-context-engineering-96cf40dbb38d
- https://blog.langchain.com/context-engineering-for-agents/
- **langgraph implementations**
- [video]((https://www.youtube.com/watch?v=nyKvyRrpbyY))
- [good notebooks](https://github.com/langchain-ai/how_to_fix_your_context/blob/main/notebooks/utils.py)
- [Langgraph summary of what frontier labs and firms apply](https://www.youtube.com/watch?v=XFCkrYHHfpQ)
These resources guide our approach to **memory management, planning transparency, and tool orchestration** in autonomous agents.
## ๐Ÿงพ ***`HR Candidate Screening Multi-Agent System`***
An autonomous HR assistant that streamlines early recruitment through five steps:
1. **CV Upload (Application)** โ€” candidate applications uploaded and parsed
2. **CV Screening** โ€” rank and shortlist candidates using LLM reasoning
3. **Voice Screening** โ€” invite and coordinate interviews using a voice agent.
4. **Person-to-Person Screening** โ€” schedule HR interviews via Google Calendar integration
5. **Decision** โ€” generate a concise summary and notify HR
> **`NOTE`**
> - Final decision of whether candidate will be hired is made by human.
> - Just automate the boring, tedious stuff while keeping human final decision in the loop.
**Architecture:**
1. **Main Planner Agent**: orchestrates the workflow
2. **Subagents**:
- CV Screening Agent
- Voice Screening Agent
- Meeting Scheduler Agent
3. **Tools (via MCP)** connect to Gmail, Calendar, and Voice APIs.
4. **Database** stores both candidate info and persistent agent memory.
5. **Gradio UI** visualizes workflow, reasoning, and results.
```mermaid
flowchart TD
subgraph MainAgent["๐Ÿง  Main Planner Agent"]
A1["Plans โ€ข Reasons โ€ข Executes"]
end
subgraph Subagents["๐Ÿค– Subagents"]
S1["๐Ÿ“„ CV Screening"]
S2["๐ŸŽ™๏ธ Voice Screening"]
S3["๐Ÿ“… Scheduling"]
S4["๐Ÿงพ Decision Summary"]
end
subgraph Tools["โš™๏ธ MCP & External Tools"]
T1["๐Ÿ“ง Gmail"]
T2["๐Ÿ—“๏ธ Google Calendar"]
T3["๐Ÿ—ฃ๏ธ Voice API"]
end
subgraph Data["๐Ÿ—„๏ธ Database"]
D1["Candidate Data"]
D2["Context Memory (Cognitive Offloading)"]
end
subgraph UI["๐Ÿ’ฌ Gradio Dashboard"]
U1["HR View & Interaction"]
end
%% Connections
MainAgent --> Subagents
Subagents --> Tools
Subagents --> Data
MainAgent --> Data
MainAgent --> UI
```
**GCP Setup for Judges:**
A single demo Gmail/Calendar account (`scionhire.demo@gmail.com`) is pre-authorized via OAuth, with stored credentials in `.env`.
Judges can run or view the live demo without any credential setup, experiencing real Gmail + Calendar automation safely.
We use **hierarchical planning**:
- **Main Agent:** decides next step in the workflow (plan, adapt, replan)
- **Subagents:** specialized executors (screening, scheduling, summarization)
- **Memory State:** tracks plan progress and tool results
- **Dashboard Visualization:** shows active plan steps and reasoning traces for transparency
๐Ÿง  Why This Is an Agent (Not Just a Workflow)
| Criterion | Workflow | Our System |
|------------|-----------|-------------|
| **Autonomy** | Executes fixed sequence of steps | Main agent decides next actions without manual triggers |
| **Planning** | Predefined order (A โ†’ B โ†’ C) | Main agent generates and adapts a plan (e.g., skip, retry, re-order) |
| **Reasoning** | No decision logic | Uses LLM reasoning to evaluate outputs and choose next subagent |
| **Context Awareness** | Stateless | Maintains shared memory of candidates, progress, and outcomes |
| **Adaptation** | Fails or stops on error | Re-plans (e.g., if calendar slots full or candidate unresponsive) |
โœ… **Therefore:** it qualifies as an *agentic system* because it **plans, reasons, and executes** autonomously rather than following a static workflow.
## ***`Project Structure`***
```
agentic-hr/
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ src/
โ”‚ โ”‚
โ”‚ โ”œโ”€โ”€ ๐Ÿ“ core/
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ base_agent.py # Abstract BaseAgent (LangGraph-compatible)
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ supervisor.py # Supervisor agent (LangGraph graph assembly)
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ state.py # Shared AgentState + context window
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ planner.py # High-level planning logic
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ executor.py # Graph executor / runner
โ”‚ โ”‚
โ”‚ โ”œโ”€โ”€ ๐Ÿ“ agents/
โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ cv_screening/
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ agent.py # CVScreeningAgent implementation
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ tools/
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ doc_parser.py
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ normalize_skills.py
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ rank_candidates.py
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ match_to_jd.py
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“ schemas/
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ cv_schema.py # Parsed CV Pydantic schema
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ jd_schema.py # Job description schema
โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ voice_screening/
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ agent.py # VoiceScreeningAgent
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ tools/
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ twilio_client.py
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ whisper_transcribe.py
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ tts_service.py
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“ schemas/
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ call_result.py
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ transcript.py
โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ scheduler/
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ agent.py # SchedulerAgent
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ tools/
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ calendar_tool.py
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ gmail_tool.py
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ slot_optimizer.py
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“ schemas/
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ meeting_schema.py
โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“ decision/
โ”‚ โ”‚ โ”œโ”€โ”€ agent.py # DecisionAgent (final summarizer/Reporter)
โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“ schemas/
โ”‚ โ”‚ โ””โ”€โ”€ decision_report.py
โ”‚ โ”‚
โ”‚ โ”œโ”€โ”€ ๐Ÿ“ mcp_server/
โ”‚ โ”‚ โ”œโ”€โ”€ main.py
โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ endpoints/
โ”‚ โ”‚ โ”œโ”€โ”€ auth.py
โ”‚ โ”‚ โ””โ”€โ”€ schemas.py
โ”‚ โ”‚
โ”‚ โ”œโ”€โ”€ ๐Ÿ“ gradio/
โ”‚ โ”‚ โ”œโ”€โ”€ app.py # Main Gradio app (Hugging Face Space entry)
โ”‚ โ”‚ โ”œโ”€โ”€ dashboard.py # Live agent graph & logs view
โ”‚ โ”‚ โ”œโ”€โ”€ candidate_portal.py # Candidate upload / screening status
โ”‚ โ”‚ โ”œโ”€โ”€ hr_portal.py # HR review + interview approval
โ”‚ โ”‚ โ”œโ”€โ”€ components.py # Shared Gradio components
โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“ assets/ # Logos, CSS, etc.
โ”‚ โ”‚
โ”‚ โ”œโ”€โ”€ ๐Ÿ“ cv_ui/
โ”‚ โ”‚ โ”œโ”€โ”€ app.py
โ”‚ โ”‚
โ”‚ โ”œโ”€โ”€ ๐Ÿ“ voice_screening_ui/
โ”‚ โ”‚ โ”œโ”€โ”€ app.py
โ”‚ โ”‚
โ”‚ โ”‚
โ”‚ โ”œโ”€โ”€ ๐Ÿ“ prompts/
โ”‚ โ”‚ โ”œโ”€โ”€ prompt_manager.py # Centralized prompt versioning
โ”‚ โ”‚ โ”œโ”€โ”€ cv_prompts.py
โ”‚ โ”‚ โ”œโ”€โ”€ voice_prompts.py
โ”‚ โ”‚ โ””โ”€โ”€ scheduler_prompts.py
โ”‚ โ”‚
โ”‚ โ”œโ”€โ”€ ๐Ÿ“ database/
โ”‚ โ”‚ โ”œโ”€โ”€ models.py # SQLAlchemy models
โ”‚ โ”‚ โ”œโ”€โ”€ db_client.py # Connection & CRUD
โ”‚ โ”‚ โ””โ”€โ”€ context_sync.py # Cognitive offloading (context โ‡„ DB)
โ”‚ โ”‚
โ”‚ โ”œโ”€โ”€ main.py # CLI runner / local orchestrator entry
โ”‚ โ””โ”€โ”€ config.py # Environment configuration
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ tests/
โ”‚ โ”‚ โ”œโ”€โ”€ test_cv_agent.py
โ”‚ โ”‚ โ”œโ”€โ”€ test_voice_agent.py
โ”‚ โ”‚ โ”œโ”€โ”€ test_scheduler_agent.py
โ”‚ โ”‚ โ”œโ”€โ”€ test_mcp_server.py
โ”‚ โ”‚ โ””โ”€โ”€ test_integration.py
โ”‚
โ”œโ”€โ”€ .env.example
โ”œโ”€โ”€ requirements.txt
โ”œโ”€โ”€ Dockerfile
โ”œโ”€โ”€ app.py # Shortcut to src/ui/app.py
โ”œโ”€โ”€ README.md
โ””โ”€โ”€ LICENSE
```
## ***`Multi Agent System Architecture`***
Below you will find an overview of the subagent components that mnake upo the entire system. More detailed information and brainstorming is decicated to the `docs/agents/..` directory.
### 1) ***`Orchestrator`***
#### Overview
The orchestrator agent is reponsible for **supervising** and **triggering** the ***tasks of the subagents***.
> For more planning and info, go to `docs/agents/agent_orchestrator.md`
### 2) ***`CV Screener`***
#### Overview
The cv screening agent deals with scanning the applicant's CV's, and deciding who are fruitful versus unpromising candidates as a first filtering step.
> For more planning and info, go to `docs/agents/cv_screening.md`
### 3) ๐ŸŽ™๏ธ ***`Voice Screening Agent`***
#### Overview
The **Voice Screening Agent** conducts automated phone interviews and integrates with the **LangGraph HR Orchestrator**.
It uses **Twilio** for phone calls, **Whisper/ASR** for speech-to-text, **ElevenLabs** for natural voice output, and **LangGraph** for dialogue logic.
> For more planning and info, go to `docs/agents/voice_screening.md`
### 4) ***`Google MCP Agents`***
#### Overview
The google mcp agents will be resposnible to:
a) writing emails
b) scheduling and menaging google calendar events
It adviseable to break this up into two subagents, to get rid of `context poisoning`.
> For more planning and info, go to `docs/agents/google_mcp_agent.md`
### 4) ***`LLM as a Judge`***
#### Overview
LLM-as-a-judge will be leveraged to judge call screening results.
> For more planning and info, go to `docs/agents/judging_agent.md`
## ๐Ÿ—„๏ธ ***`Data Layer`***
The system uses a unified **SQLAlchemy-based database** for both **candidate data management** and **context engineering**.
### ๐Ÿ“ฆ Purpose
| Data Type | Description |
|------------|--------------|
| ๐Ÿงพ **Candidates** | Stores CVs, parsed data, and screening results |
| ๐ŸŽ™๏ธ **Voice Results** | Saves transcripts, evaluations, and tone analysis |
| ๐Ÿ—“๏ธ **Scheduling** | Tracks HR availability and confirmed interviews |
| ๐Ÿง  **Agent Context Memory** | Enables **cognitive offloading** โ€” storing reasoning traces and summaries so the active context stays uncluttered and information can be recalled when needed |
| ๐Ÿ“š **Logs / Tool History** | Archives tool interactions and results for transparency and reuse |
We use [**SQLAlchemy**](https://www.sqlalchemy.org) as the ORM layer to manage both structured candidate data and **persistent agent memory**, allowing the system to offload, summarize, and retrieve context efficiently across sessions.
## ๐Ÿ—ƒ๏ธ ***`Prompt Archive`***
To ensure consistent behavior and easy experimentation across subagents, the system includes a **centralized prompt management layer**.
### ๐Ÿ“ฆ Purpose
| Component | Description |
|------------|--------------|
| ๐Ÿง  **Prompt Templates** | Stores standardized prompts for each subagent (CV screening, voice screening, scheduling) |
| ๐Ÿ”„ **Prompt Versioning** | Allows tracking and updating of prompt iterations without changing agent code |
| ๐Ÿงฉ **Dynamic Injection** | Enables context-dependent prompt construction using retrieved memory or database summaries |
| ๐Ÿ“š **Archive** | Keeps older prompt variants for reproducibility and ablation testing |
## ๐Ÿ“บ ***`Gradio Interface`***
We use **Gradio** to demonstrate our agent's reasoning, planning, and tool use interactively โ€” fully aligned with the **Agents & MCP Hackathon** focus on **context engineering** and **user value**.
### ๐Ÿงฉ Key Features
| Section | Purpose |
|----------|----------|
| ๐Ÿง **Candidate Portal** | Upload CVs, submit applications, and view screening results |
| ๐Ÿง‘โ€๐Ÿ’ผ **HR Portal** | Review shortlisted candidates, trigger voice screenings, and schedule interviews |
| ๐Ÿง  **Agent Dashboard** | Visualizes the current plan, tool calls, and reasoning traces in real time |
| โš™๏ธ **Tool Integration** | Shows live MCP actions (Gmail send, Calendar scheduling) with status updates |
| ๐Ÿ“Š **Context View** | Displays agent memory, current workflow stage, and adaptive plan updates |
#### Context Engineering Visualization?
This is what judges really care about โ€” it must show that the system is agentic (reasoning, memory, planning).
๐Ÿง  Agent Plan Viewer
gr.JSON() or custom visual showing the current plan state, e.g.:
```json
{
"plan": [
"1. Screen CVs โœ…",
"2. Invite for voice screening ๐Ÿ”„",
"3. Schedule HR interview โฌœ",
"4. Await HR decision โฌœ"
]
}
```
๐Ÿ—บ๏ธ Live Plan Progress
- Use a progress bar or color-coded status list of steps.
- Judges must see autonomous transitions (from one step to another).
๐Ÿ’ฌ Reasoning Log / Memory
- Stream or text box showing LLM thought traces or context summary:
- โ€œDetected strong match for Data Scientist role.โ€
- โ€œCandidate completed voice interview; confidence: 8.4/10.โ€
- โ€œNext step: scheduling HR interview.โ€
โš™๏ธ Tool Call Trace
- Small table showing:
| Time | Tool | Action | Result |
| ----- | -------- | ---------------- | --------- |
| 12:05 | Gmail | `send_invite()` | Sent |
| 12:06 | Calendar | `create_event()` | Confirmed |
## ๐Ÿ”— ***`MCP Integration (Best Practice Setup)`***
To align fully with the **Agents & MCP Hackathon** standards, our system will use or extend a **standardized MCP server** for integrations such as **Gmail** and **Google Calendar** โ€” and potentially **Scion Voice** in later stages.
**`Inspired by`** [Huggingface MCP Course](https://huggingface.co/learn/mcp-course/en/unit2/introduction): shows how to build an MCP app.
### ๐Ÿงฉ Why MCP?
| Benefit | Description |
|----------|--------------|
| โœ… **Standardized** | Exposes Gmail & Calendar as reusable MCP tools with a consistent schema |
| ๐Ÿ” **Secure** | OAuth handled once server-side โ€” no tokens or secrets stored in the agent |
| ๐Ÿงฑ **Modular** | Clean separation between the agent's reasoning logic and the integration layer |
| ๐Ÿ”„ **Reusable** | Same MCP server can serve multiple projects or agents |
| ๐Ÿš€ **Hackathon-Ready** | Directly fulfills the โ€œuse MCP tools or external APIsโ€ requirement |
---
### โš™๏ธ Why Use MCP Instead of Just Defining Tools
| Approach | Limitation / Risk | MCP Advantage |
|-----------|-------------------|----------------|
| **Custom-defined tools** (e.g., direct Gmail API calls in code) | Each project must re-implement auth, rate limits, and API logic | MCP provides a *shared, pre-authorized* interface any agent can use |
| **Embedded credentials** in `.env` | Security risk, harder for judges to test | Credentials handled server-side โ€” no secrets in the repo |
| **Tight coupling** between agent and tool | Hard to swap or extend integrations | MCP creates a plug-and-play API boundary between reasoning and execution |
| **Limited reuse** | Tools only exist in one codebase | MCP servers can expose many tools to multiple agents dynamically |
MCP turns these one-off integrations into **standardized, composable building blocks** that work across agents, organizations, or platforms โ€” the same philosophy used by **Anthropic**, **LangChain**, and **Hugging Face** in 2025 agent ecosystems.
We will build or extend the open-source [**mcp-gsuite**](https://github.com/MarkusPfundstein/mcp-gsuite) server and host it securely on **Google Cloud Run**.
This server manages authentication, token refresh, and rate limiting โ€” while exposing standardized MCP actions like:
```json
{
"action": "gmail.send",
"parameters": { "to": "candidate@example.com", "subject": "Interview Invite", "body": "..." }
}
```
and
```json
{
"action": "calendar.create_event",
"parameters": { "summary": "HR Interview", "start": "...", "end": "..." }
}
```
This architecture lets our HR agent (and future projects) perform real email and scheduling actions via secure MCP endpoints โ€” giving judges a safe, live demo of true agentic behavior with no local credential setup required.
## ๐Ÿง  ***`Agent Supervisor โ€” Why Parlant + LangGraph`***
LangGraph provides a powerful orchestration backbone for planning, reasoning, and executing multi-agent workflows.
However, its common **supervisor pattern** has a key limitation: the supervisor routes each user query to **only one sub-agent** at a time.
### โš ๏ธ Example Problem
> โ€œI uploaded my CV yesterday. Can I also reschedule my interview โ€” and how long is the voice call?โ€
A standard LangGraph supervisor would forward this entire message to, say, the **CV Screening Agent**,
missing the **scheduling** and **voice screening** parts โ€” causing incomplete or fragmented responses.
### ๐Ÿ’ก Parlant as the Fix
**[Parlant](https://github.com/emcie-co/parlant)** solves this by replacing single-route logic with **dynamic guideline activation**.
Instead of rigid routing, it loads multiple relevant *guidelines* into context simultaneously, allowing coherent handling of mixed intents.
```python
agent.create_guideline(
condition="User asks about rescheduling",
action="Call SchedulerAgent via LangGraph tool"
)
agent.create_guideline(
condition="User asks about voice screening duration",
action="Query VoiceScreeningAgent"
)
```
If a user blends both topics, ***both guidelines trigger***, producing a unified, context-aware response.
### โš™๏ธ Why Combine Them
| Layer | Framework | Role |
| ----------------------------- | ------------- | ----------------------------------------------------------------------- |
| ๐Ÿง  **Workflow Orchestration** | **LangGraph** | Executes structured agent workflows (CV โ†’ Voice โ†’ Schedule โ†’ Decision). |
| ๐Ÿ’ฌ **Conversational Layer** | **Parlant** | Dynamically manages mixed intents using guideline-based reasoning. |
| ๐Ÿ”ง **Integration Layer** | **MCP Tools** | Provides standardized access to Gmail, Calendar, and Voice APIs. |
Together, ***Parlant + LangGraph*** merge structured planning with conversational adaptability โ€”
enabling our HR agent to reason, plan, and respond naturally to complex, multi-topic interactions.
## โœจ ***`Agentic Enhancements [BONUS]`***
To make the system more **autonomous, interpretable, and resilient**, we integrated a few lightweight yet powerful improvements:
- ๐Ÿง  **Self-Reflection** โ€“ before executing a step, the agent briefly states *why* it's taking that action, improving reasoning transparency.
- ๐Ÿ”„ **Adaptive Re-Planning** โ€“ if a subagent or tool call fails (e.g., no calendar slot, missing response, or API timeout), the main planner automatically updates its plan โ€” skipping, retrying, or re-ordering steps instead of stopping.
- ๐Ÿงฎ **LLM Self-Evaluation** โ€“ after each stage (CV, voice, scheduling), a lightweight judge model rates the result and adds feedback for the next step.
- ๐Ÿ—‚๏ธ **Context Summary** โ€“ the dashboard displays a live summary of all candidates, their current stage, and key outcomes.
- ๐Ÿค **Human-in-the-Loop Checkpoint** โ€“ HR receives a short confirmation prompt before final scheduling to ensure responsible autonomy.
These enhancements demonstrate **true agentic behavior** โ€” autonomous planning, adaptive execution, and transparent reasoning โ€” in a simple, explainable way.
## ๐Ÿ‘ฅ ***`Team`***
| Member |
| -------- |
| [Sebastian Wefers](https://github.com/Ocean-code-1995) |
| [Owen Kaplinsky](https://github.com/owenkaplinsky) |
| [SrikarMK](https://github.com/Srikarmk) |
| [Dmitri Moscoglo](https://github.com/DimiM99) |
# ***`License`***
This project includes and builds upon [gmail-mcp](https://github.com/theposch/gmail-mcp),
which is licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html).
This repository extends gmail-mcp for experimental integration and automation with Claude Desktop.
All modifications are distributed under the same GPLv3 license.
> **Note:** The original gmail-mcp code has not been modified at this stage.
>