Skip to content

nitrajen/resume_chatbot

Repository files navigation

Resume Chatbot

Personal webste with mistral:7b model that talks like Smeagol, helps send emails, check calendar availability, and schedule calls.

Quick Start

# Production mode (ports 8000/8080)
./start_all.sh

# Development mode (ports 3000/3001, hot reload)
./start_all.sh dev

# Stop all services
./stop_all.sh

Prerequisites

  • Python 3.11+ with uv package manager
  • Node.js 18+ and npm
  • Ollama (install) with qwen2.5:3b model
  • Cloudflare Tunnel (optional, for public access)
  • Google Calendar API credentials (see Setup)

Setup

1. Install Dependencies

# Backend
uv sync

# Frontend
cd about-nithin
npm install

2. Configure Environment

# Copy template
cp .env.example .env

# Edit .env with your settings (ports, paths, etc.)

3. Add Secrets

Create secrets/ directory with:

  • token.json - Google OAuth token
  • client_secret.json - Google Calendar API credentials
  • google_smtp_app_password.json - Gmail app password for notifications

Format for google_smtp_app_password.json:

{
  "password": "your-app-password-here"
}

4. Pull Ollama Model

ollama pull qwen2.5:3b

API Routes

General Conversation

POST /assistant/message

  • Chat about resume/experience
  • Intent detection (contact, schedule, availability)
  • RAG-based responses

Check Availability

  1. User: "When is Nithin available?"
  2. System: Shows availability form
  3. User: Submits dates + time preferences
  4. POST /availability/check → Returns available slots

Schedule Call

  1. User: "Schedule a call"
  2. System: Shows scheduling form
  3. User: Submits contact info + availability
  4. POST /schedule/create → Returns time slots
  5. User: Selects slot number
  6. POST /assistant/message with slot# → Books meeting + sends Google Meet link

Contact

  1. User: "Contact Nithin"
  2. System: Shows contact form
  3. User: Submits message
  4. POST /contact/submit → Sends email notification

Development

Production and development servers run independently:

Production (background, always on):

  • Backend: localhost:8000
  • Frontend: localhost:8080
  • Runs built/optimized code

Development (foreground, hot reload):

  • Backend: localhost:3000
  • Frontend: localhost:3001
  • Auto-restarts on code changes

Use ./start_all.sh dev for development while production runs separately.

Project Structure

/app                 # Backend (FastAPI)
  /api.py           # Main API + routes
  /form_handlers.py # Form processing + calendar
  /scheduler.py     # Calendar operations
  /llm.py           # Ollama integration
/about-nithin       # Frontend (React + Vite)
  /src
    /components    # Form components
    /utils         # Timezone utilities
/secrets           # Credentials (gitignored)
/logs              # Runtime logs (gitignored)

Deployment

# Build frontend
cd about-nithin
npm run build

# Start production (builds + serves)
./start_all.sh

Production mode:

  • Builds frontend with npm run build
  • Serves optimized static files
  • Runs backend with 2 workers
  • Starts Cloudflare Tunnel

License

Private project

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors