A modern, interactive chatbot application that answers questions about Art Kreimer's professional background, built with React, TypeScript, Vite, and Supabase.
This application uses RAG (Retrieval Augmented Generation) with OpenAI's GPT-4 to provide accurate, context-aware responses about professional experience, skills, and qualifications. The chatbot is deployed as a serverless application using Supabase Edge Functions and can be hosted on Vercel.
- Modern React UI: Clean, responsive design built with React, TypeScript, and Tailwind CSS
- Real-time Chat: Interactive chat interface with suggested follow-up questions
- AI-Powered Responses: Uses OpenAI GPT-4 for intelligent, contextual answers
- Conversation Storage: All conversations are stored in Supabase for analytics
- Serverless Architecture: Edge Functions handle chat logic, scalable and cost-effective
- Easy Deployment: Ready to deploy on Vercel with zero configuration
- Frontend: React 18 + TypeScript + Vite
- Styling: Tailwind CSS
- Backend: Supabase Edge Functions
- Database: Supabase PostgreSQL
- AI: OpenAI GPT-4
- Deployment: Vercel
- Node.js 18 or higher
- A Supabase account with a project
- OpenAI API key
- Vercel account (for deployment)
- Clone the repository
git clone https://github.com/yourusername/resumegpt.git
cd resumegpt- Install dependencies
npm install- Set up environment variables
Copy .env.example to .env and fill in your values:
cp .env.example .envUpdate the .env file with your Supabase credentials:
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
To customize this chatbot for your own resume:
-
Update the knowledge base in
supabase/functions/chat/index.ts:- Modify the
knowledgeBasearray with your own Q&A pairs - Update references to "Art Kreimer" with your name
- Modify the
-
Update the system prompt in the same file:
- Change the chatbot's personality and instructions
- Modify the response format if needed
-
Customize the UI in
src/App.tsx:- Update the welcome message
- Change the header title
- Modify the default suggested questions
-
Update branding:
- Change the title in
index.html - Update the favicon
- Modify colors in
tailwind.config.jsor component styles
- Change the title in
-
Push your code to GitHub
-
Import your repository to Vercel:
- Go to vercel.com
- Click "Add New Project"
- Import your GitHub repository
-
Configure environment variables in Vercel:
VITE_SUPABASE_URL: Your Supabase project URLVITE_SUPABASE_ANON_KEY: Your Supabase anon key
-
Deploy: Vercel will automatically build and deploy your application
resumegpt/
├── src/
│ ├── components/
│ │ ├── ChatInput.tsx # Message input component
│ │ ├── ChatMessage.tsx # Individual message display
│ │ └── SuggestedQuestions.tsx # Suggested questions UI
│ ├── lib/
│ │ └── supabase.ts # Supabase client configuration
│ ├── App.tsx # Main application component
│ ├── main.tsx # Application entry point
│ ├── types.ts # TypeScript type definitions
│ └── index.css # Global styles with Tailwind
├── supabase/
│ └── functions/
│ └── chat/
│ └── index.ts # Edge Function for chat logic
├── data/ # Original data files (reference)
├── index.html # HTML entry point
├── vercel.json # Vercel configuration
├── package.json # Dependencies and scripts
├── tailwind.config.js # Tailwind CSS configuration
├── tsconfig.json # TypeScript configuration
└── vite.config.ts # Vite configuration
The application uses a single table for storing conversations:
id(uuid, primary key)conversation_id(uuid) - Groups messages from same sessionuser_message(text) - User's questionbot_message(text) - Bot's responseanswered(boolean) - Whether question was answered successfullycreated_at(timestamptz) - Timestamp
This project is highly influence by the Repository created by Art Kreimer and is dependent on the following libraries and tools:
- Streamlit for building the web application
- LangChain for integrating the language model and retrieval chain
- OpenAI API for the language model
- FAISS for the vector database
- Firebase for storing the conversation history
This project is licensed under the MIT License.