Building intelligent applications with LLMs, RAG, AI Agents, Tools & Modern AI Architectures
Welcome to my AI Engineering portfolio.
This repository contains hands-on projects focused on building practical applications with Large Language Models, Retrieval-Augmented Generation, AI Agents, tool calling, semantic search and agentic workflows.
My goal is not only to work with LLMs, but to understand how to turn them into reliable software systems that can use data, tools and external services to solve real-world problems.
My AI Engineering work focuses on the intersection of:
┌──────────────────┐
│ LLMs │
└────────┬─────────┘
│
┌────────▼─────────┐
│ AI Agents │
│ & Workflows │
└────────┬─────────┘
│
┌─────────┼─────────┐
▼ ▼ ▼
Tools RAG Memory
│ │ │
▼ ▼ ▼
APIs Vectors Context
│ │ │
└─────────┼─────────┘
▼
┌──────────────────┐
│ Real AI Apps │
└──────────────────┘
- 🧠 Large Language Models
- 🤖 AI Agents & Agentic Workflows
- 🔎 Retrieval-Augmented Generation (RAG)
- 🛠️ Tool Calling & Function Calling
- 🔌 Model Context Protocol (MCP)
- 📚 Semantic Search
- 🧬 Embeddings & Vector Search
- 🌐 Web Search & Data Extraction
- 👤 Human-in-the-Loop Workflows
- ⚙️ AI-powered Automation
- 🔗 LLM Application Architecture
Production-oriented AI research assistant built with LangChain and FastAPI.
This is the main project in this repository.
The application allows users to provide sources, ask questions grounded in those sources, search the web when required, and generate structured artifacts.
┌─────────────────────────────────────────────┐
│ Web Client │
│ │
│ Sources │ Chat │ Studio │ Notes │
└───────────────────┬─────────────────────────┘
│ HTTP / REST
▼
┌─────────────────────────────────────────────┐
│ FastAPI Backend │
├─────────────────────────────────────────────┤
│ │
│ AI Agent │
│ ┌──────────┼──────────┐ │
│ ▼ ▼ ▼ │
│ RAG Tools Memory │
│ │ │ │
│ ▼ ▼ │
│ Vector Store External APIs │
│ │
└───────┬──────────┬───────────┬──────────────┘
│ │ │
▼ ▼ ▼
Gemini Cohere Firecrawl
LLM Embeddings Web Data
- 💬 Grounded conversational AI
- 🔎 Semantic search over sources
- 📚 Vector-based RAG
- 🌐 Web search and content extraction
- 🛠️ Tool-based AI Agent
- 👤 Human-in-the-Loop approval
- 📝 Notes & conversation memory
- 📊 AI-generated artifacts
- 🔗 Source citations
- 📁 Dynamic source management
The agent integrates multiple capabilities through tools and services:
User Question
│
▼
AI Agent
│
├──► Search Sources
│
├──► Semantic Retrieval
│
├──► Web Search
│
├──► Source Management
│
├──► Artifact Generation
│
└──► Human Approval
│
▼
Grounded Response
+ Citations
| Layer | Technologies |
|---|---|
| Language | Python |
| Backend | FastAPI, Uvicorn |
| AI Framework | LangChain |
| LLM | Google Gemini |
| Embeddings | Cohere Multilingual |
| Retrieval | Vector Search |
| Vector Store | InMemoryVectorStore |
| Web | Firecrawl |
| Frontend | HTML, CSS, JavaScript |
| Package Management | UV |
notebooklm-starter/
│
├── client/
│ ├── index.html
│ ├── app.js
│ └── styles.css
│
├── src/
│ ├── agents/
│ │ └── chat.py
│ │
│ ├── core/
│ │ ├── sources.py
│ │ ├── store.py
│ │ ├── web.py
│ │ └── firecrawl.py
│ │
│ └── api/
│ ├── app.py
│ ├── serve.py
│ ├── schemas.py
│ └── services.py
│
├── main.py
└── pyproject.toml
➡️ Explore the NotebookLM project
A hands-on Retrieval-Augmented Generation project exploring document ingestion, indexing, embeddings, retrieval and LLM-powered responses.
- Document ingestion
- Chunking
- Embeddings
- Vector indexing
- Semantic retrieval
- Context-aware generation
- RAG pipelines
Exploring Model Context Protocol (MCP) and the connection between AI models and external tools.
The project demonstrates how an AI system can interact with external environments through structured tools and browser automation.
Python · MCP · Playwright · AI Agents
An AI agent designed to interact with files through tools.
The project focuses on the connection between:
LLM
│
▼
Agent
│
▼
Tools
│
▼
File System
This demonstrates how LLMs can move beyond text generation and perform controlled actions through external tools.
An AI-powered task manager demonstrating LLM Function Calling and tool-based execution.
The system translates natural-language instructions into structured function calls that interact with application logic.
Natural Language
│
▼
LLM
│
▼
Function Calling
│
▼
Application Tool
│
▼
Task Operation
LLMs · Generative AI · RAG · AI Agents · LangChain · LangGraph · LlamaIndex
MCP · Function Calling · Tool Calling · Agent Workflows · Human-in-the-Loop
Embeddings · Semantic Search · Vector Search · Vector Stores
Google Gemini · OpenAI API · Anthropic API · Cohere · Firecrawl
Python · FastAPI · REST APIs
Docker · Git · GitHub · PostgreSQL · FAISS · ChromaDB
I focus on building AI applications that are:
Responses should be based on relevant data rather than relying only on the model's internal knowledge.
LLMs become significantly more useful when they can interact with tools, APIs and external systems.
RAG and semantic search allow AI systems to work with domain-specific knowledge.
For sensitive or consequential operations, human approval can be incorporated into the agent workflow.
AI systems should separate agents, tools, retrieval, business logic and external integrations.
The goal is to move from isolated LLM experiments toward complete applications with APIs, services, state and user interfaces.
I'm currently focusing on advancing my skills in:
- Agentic AI
- LLM application architecture
- Advanced RAG
- Multi-agent systems
- MCP
- Tool-enabled AI
- AI application backends
- AI + Full Stack integration
I'm a Full Stack & AI Engineer interested in building modern software systems that combine traditional software engineering with Generative AI.
My background in full-stack development gives me a strong foundation in:
Frontend · Backend · APIs · Databases · Architecture
which I combine with:
LLMs · RAG · Agents · Tools · Semantic Search
to build intelligent end-to-end applications.
GitHub: @shani01846
⭐ If you find these projects interesting, feel free to explore the individual project repositories.