http://rajiv-portfolio-chatbot-website.s3-website-us-east-1.amazonaws.com
Chatbot leveraging LLMs deployed using AWS - Specifically to answer HR questions about my experience.
What Was Built: An interactive, AI-powered chatbot that answers questions about your professional background in real-time. Visitors can ask natural language questions and receive intelligent responses based on my actual resume, recommendations, personality profiles, and project documentation.
Intended Audience:
- Primary: Recruiters and hiring managers who want to learn about your background quickly
- Secondary: Networking contacts, potential clients, or anyone interested in your professional experience
- Use Case: Acts as a 24/7 virtual assistant that can answer questions like "What work experience do you have?", "Tell me about your skills", or "What projects have you worked on?"
Live Chatbot URL:
http://rajiv-portfolio-chatbot-website.s3-website-us-east-1.amazonaws.com
┌─────────────────────────────────────────────────────────┐
│ PUBLIC INTERNET │
│ (Recruiters/Visitors) │
└────────────────────────┬────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────┐
│ AWS S3 Static Website Hosting │
│ • Hosts HTML/CSS/JavaScript chatbot interface │
│ • Public URL for visitors │
│ │
└────────────────────────┬────────────────────────────────┘
│ (HTTPS API Call)
↓
┌─────────────────────────────────────────────────────────┐
│ AWS API Gateway │
│ • Public REST API endpoint │
│ • Rate limiting: 10 req/sec, 100/day │
│ • CORS enabled for browser access │
│ │
└────────────────────────┬────────────────────────────────┘
│ (Triggers)
↓
┌─────────────────────────────────────────────────────────┐
│ AWS Lambda │
│ • Serverless function (Python 3.12) │
│ • Processes user queries │
│ • Validates input (length, rate limiting) │
│ │
└────────────────────────┬────────────────────────────────┘
│ (Queries)
↓
┌─────────────────────────────────────────────────────────┐
│ Amazon Bedrock - Knowledge Base │
│ • AI-powered semantic search │
│ • Understands natural language questions │
│ • Retrieves relevant document sections │
│ • Generates human-like responses │
│ │
└────────────────────────┬────────────────────────────────┘
│ (Retrieves from)
↓
┌─────────────────────────────────────────────────────────┐
│ Amazon OpenSearch Serverless │
│ • Vector database for document embeddings │
│ • Enables fast semantic search │
│ │
└────────────────────────┬────────────────────────────────┘
│ (Indexed from)
↓
┌─────────────────────────────────────────────────────────┐
│ AWS S3 Storage (Documents Bucket - Private) │
│ • Stores your resumes, recommendations, profiles │
│ • Private and secure │
│ │
└─────────────────────────────────────────────────────────┘
Purpose: Security and permissions management What Was Created:
- IAM user:
portfolio-admin(for you to manage AWS) - IAM roles:
LambdaBedrockExecutionRole,AmazonBedrockExecutionRole - Policies: Granted specific permissions to each service
Purpose: Two separate buckets with different purposes
Bucket 1: Documents Storage (Private)
- Name:
[your-name]-portfolio-chatbot - Contents: Resumes, LinkedIn recommendations, personality profiles, project docs
- Security: Private, blocked from public access
- Structure: Organized folders (resumes/, recommendations/, projects/, etc.)
Bucket 2: Website Hosting (Public)
- Name:
rajiv-portfolio-chatbot-website - Contents: HTML/CSS/JavaScript chatbot interface
- Security: Public read access for website visitors
- Features: Static website hosting enabled
Purpose: AI foundation models and Knowledge Base
What We Used:
- Foundation Model: Claude 3.5 Haiku or Amazon Titan Text (for generating responses)
- Embeddings Model: Titan Embeddings G1 - Text (for document indexing)
- Knowledge Base: PortfolioKnowledgeBase
- Automatically reads your S3 documents
- Chunks them into searchable pieces
- Creates semantic embeddings
- Retrieves relevant sections for each query
- Generates natural language answers
Features:
- Understands context and nuance
- Can synthesize information from multiple documents
- Cites sources (shows which documents were used)
- Handles complex, open-ended questions
Purpose: Vector database for semantic search
What It Does:
- Stores mathematical representations (embeddings) of your documents
- Enables fast similarity search
- Required by Bedrock Knowledge Base
- Fully managed (no servers to configure)
Configuration:
- Collection:
portfolio-kb-collection - Index:
portfolio-index - Automatically scaled by AWS
Purpose: Serverless code execution
Function Details:
- Name:
PortfolioChatbotFunction - Runtime: Python 3.12
- Handler:
lambda_function.lambda_handler - Timeout: 60 seconds
- Memory: 128 MB
What It Does:
- Receives query from API Gateway
- Validates input (length check, prevents abuse)
- Calls Bedrock Knowledge Base
- Returns formatted response
- Handles errors gracefully
Libraries Used:
boto3(AWS SDK for Python)json(response formatting)
Purpose: Creates public API endpoint for your chatbot
API Details:
- Name:
PortfolioChatbotAPI - Type: REST API
- Endpoint:
https://zmg42unnt3.execute-api.us-east-1.amazonaws.com/prod/chat - Method: POST
- Stage:
prod
Features Configured:
- CORS: Enabled (allows browser requests)
- Rate Limiting: 10 requests/second, burst up to 20
- Usage Plan: 100 requests per day quota
- Lambda Proxy Integration: Direct connection to Lambda
Security:
- Input validation at Lambda level
- Rate limiting prevents abuse
- CORS configured for specific origins (currently
*for testing)
Purpose: Logging and monitoring
What We Configured:
- Lambda function logs (for debugging)
- API Gateway access logs
- Cost alerts and budgets
- Usage metrics
Features:
- Track API request counts
- Monitor Lambda execution times
- Debug errors via logs
- Set up alarms for unusual activity
- ✅ Deployed cloud infrastructure across 7+ AWS services
- ✅ Configured AI/ML services (Bedrock, embeddings, vector databases)
- ✅ Wrote and deployed serverless functions (Lambda in Python)
- ✅ Built a REST API with rate limiting and security
- ✅ Hosted a public website with custom domain capability
- ✅ Implemented cost controls and monitoring
- ✅ Configured IAM security with proper role-based access
- ✅ Integrated multiple services into a cohesive application
- 24/7 availability: Recruiters can learn about you anytime
- Instant responses: No waiting for email replies
- Comprehensive answers: AI synthesizes information from all your documents
- Impressive differentiator: Shows technical initiative and innovation
- Scalable: Can handle hundreds of concurrent visitors
- Trackable: Can add analytics to see who's interested
- Quick screening: Get answers in seconds vs. reading entire resume
- Interactive experience: More engaging than static PDF
- Detailed information: Can ask follow-up questions
- Always current: You update documents, AI uses latest info
- Professional impression: Shows you're forward-thinking
By building this project, I have experience with:
- Cloud Computing: AWS infrastructure and services
- AI/ML: Bedrock, embeddings, vector databases, LLMs
- Serverless Architecture: Lambda, API Gateway
- DevOps: Deployment, monitoring, cost optimization
- Security: IAM, CORS, input validation, rate limiting
- Frontend Development: HTML, CSS, JavaScript
- API Development: REST APIs, JSON, HTTP
- Problem Solving: Debugging, troubleshooting, iteration
- Documentation: Following technical guides, creating documentation
- Project Management: Completing a complex multi-phase project