Experimental AI Engineering

AI Proof of Concept
Projects

A collection of hands-on AI systems built to explore LLM workflows, RAG pipelines, agentic architectures, and serverless AI execution on AWS. Each PoC targets a real-world problem and demonstrates a distinct AI engineering pattern.

0
PoC Projects
0
AI Patterns
0
Cloud Services

AI Systems Built

Four independent systems, each exploring a different AI engineering discipline.

🧠
AI Meeting Notes Summarizer
A production-ready FastAPI + LangChain service that ingests meeting transcripts and automatically generates structured notes — summaries, key decisions, and action items with owners and deadlines.
Summarization Vector Store
  • Accepts .txt transcript uploads via REST API endpoint
  • Splits and embeds transcript chunks into a Chroma vector store using local HuggingFace embeddings (all-MiniLM-L6-v2)
  • Structured output via Pydantic parser — summary, decisions, and action items with owner & deadline fields
  • LLM-powered via google/gemma-3-12b-it:free through OpenRouter with automatic retry & backoff
  • Fully containerised with Docker Compose (API + Chroma services)
Python FastAPI LangChain Chroma DB HuggingFace OpenRouter LLM Docker Pydantic
Corporate meeting automation CRM action item extraction Legal transcript processing HR interview notes

POST /upload-transcript TextLoader RecursiveCharacterTextSplitter Chroma Vector Store PromptTemplate ChatOpenAI (OpenRouter) PydanticOutputParser MeetingOutput JSON
🔍
Enterprise Policy Q&A — RAG System
A locally-deployed Retrieval-Augmented Generation pipeline for querying enterprise policy PDFs. Ask natural language questions and receive grounded answers with source citations and LLM-as-judge evaluation metrics.
RAG Hybrid Retrieval
  • PDF ingestion via PyMuPDF — parsed, chunked (512 chars / 64 overlap), and embedded locally
  • Hybrid retrieval: dense vector search (Qdrant + BAAI/bge-small-en-v1.5) fused with BM25 keyword search via Reciprocal Rank Fusion (RRF)
  • Cross-encoder reranking with ms-marco-MiniLM-L-6-v2 for precision-ranked results
  • Optional LLM query rewriting to expand ambiguous questions before retrieval
  • LLM-as-judge evaluation: faithfulness, context precision, context recall, and answer relevance (scored 0–1)
Python FastAPI Qdrant BM25 Cross-Encoder PyMuPDF HuggingFace OpenRouter LLM Docker
HR policy chatbot Legal document Q&A Compliance assistant Internal knowledge base

PDF Upload PyMuPDF Parser Text Chunker Qdrant (dense) + BM25 (keyword) RRF Fusion Cross-Encoder Reranker LLM Answer Generator Answer + Citations
AI Lambda Functions
A collection of serverless AWS Lambda functions that expose AI capabilities — text generation, AI image creation, a conversational chatbot, and a RAG prototype — all powered by Amazon Bedrock foundation models.
Serverless AWS Bedrock
  • textGenerationFunction — Invokes Bedrock Titan Text Express to generate creative or business content from a prompt. Configurable temperature, topP, and token count.
  • moviePosterDesignFunction — Generates AI movie poster images via Bedrock Titan Image Generator, uploads to S3, and returns a pre-signed URL (30-min expiry).
  • chatbot — Streamlit + LangChain conversational chatbot backed by AWS Bedrock (Amazon Nova Pro / DeepSeek). Maintains conversation context via ConversationSummaryBufferMemory.
  • rag — Lightweight RAG prototype with document loading, text splitting, and retrieval-augmented Q&A using Bedrock models.
Python AWS Lambda AWS Bedrock Titan Text Express Titan Image Generator Amazon S3 LangChain Streamlit boto3
Serverless content generation AI image creation APIs Embedded chatbots Event-driven AI pipelines

HTTP Event / Trigger AWS Lambda Handler Input Validation Bedrock InvokeModel (boto3) Response Parsing S3 Upload (image) / JSON Response (text)
🤖
Node.js AI Agent — ToDo Manager
A terminal-based agentic AI application that accepts natural language instructions, maps intent to safe pre-defined database operations, and manages a PostgreSQL-backed todo list — without ever executing LLM-generated SQL.
AI Agent Tool Calling
  • Natural language CRUD — create, list, update, delete, and search todos via conversational input
  • Strict tool registry: LLM can only invoke one of 6 pre-defined tools (create_todo, list_todos, update_todo, delete_todo, mark_completed, search_todos)
  • All database operations use parameterised SQL — no raw LLM-generated queries ever reach the database
  • Runtime conversation memory maintains context across the session
  • OpenRouter integration with retry logic, structured logging, and configurable model selection
Node.js OpenRouter LLM PostgreSQL Tool Calling Parameterised SQL UUID Keys Conversation Memory
AI-powered task managers Natural language DB interfaces Safe agentic CRUD systems Internal ops automation

User Natural Language Input Agent Service OpenRouter LLM (tool_call) Tool Registry Validation Repository Function Parameterised SQL → PostgreSQL Conversational Response

AI Engineering Areas Explored

Patterns and disciplines applied across these PoC projects.

📚
Retrieval-Augmented Generation (RAG)
Hybrid dense + keyword retrieval, RRF fusion, cross-encoder reranking, and grounded answer generation with source citations.
🎯
LLM Prompt Engineering
Structured output prompting with Pydantic parsers, query rewriting, system prompt design, and few-shot instruction patterns.
🤖
Agent-Based Workflows
Tool-calling agents with strict registry validation, conversation memory, safe parameterised database execution, and retry logic.
Serverless AI Execution
AWS Lambda functions invoking Bedrock foundation models for text and image generation, with S3 storage and pre-signed URL delivery.
📝
Automated Summarization Pipelines
End-to-end transcript ingestion, vector embedding, LangChain orchestration, and structured JSON output extraction for meeting notes.
🧪
LLM Evaluation (LLM-as-Judge)
Automated quality scoring using a secondary LLM to measure faithfulness, context precision, context recall, and answer relevance.

Interested in Collaborating?

Open to consulting roles, freelance AI projects, and interesting engineering challenges. Drop me a message — I usually respond within 24 hours.