Spaces:
Running
A newer version of the Gradio SDK is available:
6.0.0
title: DigitalDan
emoji: π
colorFrom: purple
colorTo: blue
sdk: gradio
sdk_version: 5.49.1
app_file: app.py
pinned: false
license: mit
short_description: Digital twin of me Daniel Halwell
Digital CV - Interactive Personal Assistant
An AI-powered digital CV that allows visitors to chat with Daniel Halwell through an intelligent conversational interface. Built with Gradio and powered by OpenAI's GPT models, this application provides an interactive way to learn about Daniel's professional background, experience, and capabilities.
π Features
- Interactive Chat Interface: Natural language conversations about Daniel's experience, skills, and projects
- Intelligent Context Awareness: Draws from comprehensive professional summary and LinkedIn profile data
- Contact Recording: Ability to capture visitor contact information with proper consent
- Professional Presentation: Clean, responsive UI with custom branding
- Question Tracking: Logs unknown questions to continuously improve the knowledge base
π§ Technology Stack
- Frontend: Gradio (Python-based web UI framework)
- AI/LLM: OpenAI GPT models with function calling
- Document Processing: PyPDF for resume parsing
- Notifications: Pushover integration for contact alerts
- Deployment: Supports containerized deployment
- Python Version: 3.11+
π Project Structure
digital-cv/
βββ app.py # Main Gradio application
βββ me/
β βββ Profile.pdf # LinkedIn profile export
β βββ summary.txt # Comprehensive professional summary
βββ utils/
β βββ chat.py # Core chat functionality and AI integration
β βββ tool_calls.py # Function calling tools (contact recording, etc.)
β βββ logging.py # Application logging setup
βββ assets/
β βββ logo.png # Application logo
β βββ dan.png # Avatar image
β βββ Logo WO Background.png
βββ pyproject.toml # Project dependencies and metadata
βββ .env # Environment variables (create this file locally; not included in repo)
βββ README.md # This file
## π Quick Start
### Prerequisites
- Python 3.11 or higher
- OpenAI API key
- (Optional) Pushover account for notifications
### Installation
1. **Clone the repository**
```bash
git clone https://github.com/CodeHalwell/digital-cv.git
cd digital-cv
Install dependencies
pip install -e .Or install key dependencies directly:
pip install gradio openai python-dotenv pypdf requestsSet up environment variables Create a
.envfile in the root directory:OPENAI_API_KEY=your_openai_api_key_here PUSHOVER_TOKEN=your_pushover_token (optional) PUSHOVER_USER=your_pushover_user_key (optional) PORT=7860Run the application
python app.pyAccess the interface Open your browser and navigate to
http://localhost:7860
π― Usage
For Visitors
- Start a conversation by typing questions about Daniel's experience, skills, or projects
- Example prompts:
- "Tell me about your last role"
- "How do you design a RAG pipeline?"
- "What projects have you worked on?"
- "Can you scope a small automation?"
- Share your contact information if you'd like to connect directly
- Use the "Stop" button to interrupt streaming responses
For Developers
- The chat interface automatically draws context from
me/summary.txtandme/Profile.pdf - Function calling enables contact recording and question tracking
- All conversations are logged for analytics and improvement
π§ Configuration
Environment Variables
| Variable | Description | Required |
|---|---|---|
OPENAI_API_KEY |
OpenAI API key for GPT models | Yes |
PUSHOVER_TOKEN |
Pushover application token | No |
PUSHOVER_USER |
Pushover user key | No |
PORT |
Server port (default: 7860) | No |
Customization
- Personal Content: Update
me/summary.txtwith your professional background - Profile: Replace
me/Profile.pdfwith your LinkedIn export - Branding: Update images in the
assets/directory - Styling: Modify the
custom_cssvariable inapp.py
π‘οΈ Features Deep Dive
AI Chat System
The chat system uses OpenAI's GPT models with:
- System prompts that establish Daniel's professional persona
- Function calling for structured interactions (contact recording, question logging)
- Content guardrails to ensure appropriate conversations
- Context injection from professional documents
Contact Management
When visitors share contact information:
- Details are validated and recorded via Pushover notifications
- Privacy-conscious approach - only records when explicitly shared
- Structured data capture (email, name, context notes)
Question Tracking
Unknown or unanswerable questions are:
- Automatically detected and logged
- Sent via Pushover for manual review
- Used to continuously improve the knowledge base
π Monitoring & Analytics
- Application logs provide detailed interaction tracking
- Pushover notifications alert to new contacts and unknown questions
- Chat logs can be analyzed for common themes and improvements
π Deployment
Local Development
python app.py
Production Deployment
The application is designed for containerized deployment:
# Example Dockerfile approach
FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install -e .
CMD ["python", "app.py"]
Deployment Considerations
- Set
debug=Falsein production - Use environment variables for all secrets
- Configure appropriate server limits for Gradio
- Consider using a reverse proxy (nginx) for production traffic
π€ Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes and test thoroughly
- Update documentation as needed
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Development Guidelines
- Follow existing code style and patterns
- Test changes with different conversation flows
- Update
me/summary.txtif adding new professional information - Ensure all dependencies are properly documented
π License
This project is personal intellectual property of Daniel Halwell. Contact for usage permissions.
π Contact
- Email: [email protected] (personal) | [email protected] (business)
- GitHub: @CodeHalwell
- Portfolio: codehalwell.io
- LinkedIn: linkedin.com/in/danielhalwell
- Location: Northwich, UK
π¨ About the Project
This digital CV represents a modern approach to professional networking and self-presentation. Rather than static resumes, it offers an interactive experience that showcases both technical capabilities and communication skills. The project demonstrates expertise in:
- AI/LLM integration and prompt engineering
- Modern Python web development with Gradio
- User experience design for professional applications
- Privacy-conscious data handling
- Scalable application architecture
Made with β€οΈ β CoDHe Labs