A highly configurable, tool-using AI chatbot built with Python, Gradio, and the OpenAI API. This bot acts as your "Digital Twin," designed to sit on your personal website or portfolio. It can intelligently answer questions about your background, provide your resume, book meetings, and send you real-time push notifications when a recruiter or high-value contact wants to get in touch.
- π§ Context-Aware Persona: Reads your LinkedIn PDF, a summary text file, and a custom configuration to accurately represent your skills, personality, and career history.
- π οΈ Agentic Tool Calling: The bot doesn't just talk; it takes action. It autonomously decides when to trigger specific Python functions based on the conversation.
- π± Real-Time Push Notifications: Uses the Pushover API to instantly notify your phone if someone shares their email, asks for your calendar, or asks a question the bot doesn't know the answer to.
- βοΈ Zero-Code Configuration: Fully driven by a
config.tomlfile. You can change the bot's name, trivia, projects, and links without ever touching the Python logic.
- Python 3.11+ (Requires the built-in
tomlliblibrary) - uv (The lightning-fast Python package manager)
- An OpenAI API Key
- A Pushover account (for mobile push notifications)
1. Clone the repository
git clone https://github.com/your-username/your-repo-name.git
cd your-repo-name
2. Set up your environment variables
Create a .env file in the root directory and add your API keys:
OPENAI_API_KEY="your-openai-api-key"
PUSHOVER_TOKEN="your-pushover-application-token"
PUSHOVER_USER="your-pushover-user-key"
3. Configure your Digital Twin
Open config.toml and fill in your personal details, trivia, links, and STAR projects.
4. Add your data files
Create a folder named me/ in the root directory and add:
linkedin.pdf: A PDF export of your LinkedIn profile or your standard resume.summary.txt: A brief text document summarizing your general background and current goals.
5. Install dependencies and run
Because this project uses uv, you can install the required packages and launch the app incredibly fast:
uv pip install -r requirements.txt
# OR if you are using uv's inline script runner:
uv run app.py
(Dependencies: openai, python-dotenv, requests, pypdf, gradio>=4.40.0)
Once the app is running, Gradio will provide a local URL (e.g., http://127.0.0.1:7860). Open this in your browser to chat with your digital twin!
Try asking it:
- "What is your background?"
- "What do you like to do for fun?"
- "Tell me about a time you solved a difficult technical problem."
- "Can I get a copy of your resume?"
- "I'd love to chat, here is my email: recruiter@company.com" (Watch your phone for the push notification!)
This app uses a global config.toml to separate data from logic. To add new capabilities, you simply:
- Write a standard Python function in
app.py. - Define the OpenAI JSON schema for the tool.
- Append it to the
toolslist. TheMeclass handles the tool execution dynamically usingglobals().get().