Skip to content

Commit 8970e78

Browse files
committed
added portfolio description and updated readme
1 parent e083d39 commit 8970e78

2 files changed

Lines changed: 33 additions & 8 deletions

File tree

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,24 +27,24 @@ flowchart TD
2727
classDef db fill:#dc2626,stroke:#b91c1c,color:#ffffff
2828
classDef text fill:#ffffff,stroke:#4b5563,color:#1f2937
2929
30-
UI["Streamlit UI"] --> Agent["LangChain Agent"]
30+
UI["Streamlit UI"] --> AGENT["LangChain Agent"]
3131
32-
subgraph UI
32+
subgraph UI["Streamlit UI"]
3333
A[Inbox view<br/>Draft review<br/>Calendar view<br/>Settings]
3434
end
3535
36-
subgraph Agent
36+
subgraph AGENT["LangChain Agent"]
3737
B[Email classification<br/>Email drafting<br/>Calendar scheduling]
3838
end
3939
40-
Agent --> gmail["Gmail API"]
41-
Agent --> calendar["Calendar API"]
42-
Agent --> hf["HuggingFace LLM API"]
43-
Agent <--> db[(SQLite DB)]
40+
AGENT --> gmail["Gmail API"]
41+
AGENT --> calendar["Calendar API"]
42+
AGENT --> hf["HuggingFace LLM API"]
43+
AGENT <--> db[(SQLite DB)]
4444
4545
class UI ui
4646
class A text
47-
class Agent agent
47+
class AGENT agent
4848
class B text
4949
class gmail,calendar,hf api
5050
class db db

docs/portfolio.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Gmail Agent — AI-Powered Email & Calendar Assistant
2+
3+
## Situation
4+
5+
Managing a busy inbox involves repetitive tasks — classifying emails, drafting replies, and scheduling meetings — that consume significant time but follow predictable patterns. Modern LLMs have made it possible to automate these workflows intelligently, but most solutions operate as black boxes without meaningful human oversight.
6+
7+
## Task
8+
9+
I built a full-stack AI assistant that automates email classification, reply drafting, and meeting scheduling while keeping the user firmly in control. The project served as a deep dive into LLM application development, integrating LangChain orchestration, Google APIs, and a human-in-the-loop approval system into a cohesive product.
10+
11+
## Action
12+
13+
Built a **Streamlit** web app with a modular architecture:
14+
15+
- **AI Agents** (LangChain + HuggingFace Llama 3.1): An email classifier that categorises messages (needs reply, FYI, meeting request, action item) with confidence scoring; a reply drafter with tone control and iterative improvement; and a meeting scheduler that extracts details and proposes free calendar slots.
16+
- **Human-in-the-Loop Approval**: Every action (sending emails, creating calendar events) requires explicit user approval. A risk assessment layer automatically flags unknown senders, sensitive content, and low-confidence classifications.
17+
- **Google API Integration**: Full OAuth 2.0 flow with Gmail (fetch, send, label) and Google Calendar (availability checking, event creation, free slot detection with working-hours awareness).
18+
- **Persistence & Learning**: SQLAlchemy/SQLite database tracking classifications, drafts, approvals, and user feedback to build an audit trail and support future model improvement.
19+
- **Graceful Degradation**: Every AI agent includes fallback strategies (heuristic keyword matching, template-based drafts) so the app remains functional even when the LLM is unavailable.
20+
21+
## Result
22+
23+
A fully functional, production-structured application that demonstrates end-to-end LLM integration — from prompt engineering and chain composition to API orchestration and state management. The security-first design (layered approvals, sensitive content detection, trusted sender lists) reflects real-world considerations for AI-assisted communication. The project solidified practical skills in **LangChain**, **Google Cloud APIs**, **OAuth 2.0**, **SQLAlchemy**, and **Streamlit**, with clean separation of concerns across agents, services, database, and UI layers.
24+
25+
**Tech stack:** Python · LangChain · HuggingFace · Streamlit · SQLAlchemy · Gmail API · Google Calendar API · OAuth 2.0

0 commit comments

Comments
 (0)