explaingit

aditya-developer19/ai-personal-assistant-agent

1Audience · developerComplexity · 3/5ActiveLicenseSetup · moderate

TLDR

Python FastAPI and Gradio chat agent that reads your resume and LinkedIn PDFs to answer visitor questions about you, and pushes a phone alert when a visitor leaves contact info.

Mindmap

mindmap
  root((AlterEgo))
    Inputs
      Resume PDF
      LinkedIn export PDF
      Visitor messages
    Outputs
      Chat replies
      Push notifications
      Lead alerts
    Use Cases
      Chat-based portfolio
      Capture leads
      Answer recruiter questions
      Personal AI agent demo
    Tech Stack
      Python
      FastAPI
      Gradio
      OpenAI
      Gemini
      PyPDF2

Things people build with this

USE CASE 1

Replace a static personal portfolio with a chat agent that answers about your background

USE CASE 2

Capture lead contact info mid-conversation and get a phone push via Pushover or Ntfy

USE CASE 3

Self-host a personalized AI persona that speaks in your voice from your resume

USE CASE 4

Embed the FastAPI backend behind a custom HTML, CSS, and JavaScript front end

Tech stack

PythonFastAPIGradioOpenAIGeminiPyPDF2

Getting it running

Difficulty · moderate Time to first run · 30min

Needs Python 3.10+, the uv package manager, and API keys for both an LLM provider and a push notification service before first run.

MIT license, so you can copy, modify, and use it commercially as long as you keep the copyright notice.

In plain English

AlterEgo is a small project that turns a personal portfolio into a chat experience. Instead of a static page that visitors scroll through and forget, this project sets up a conversational AI agent that answers questions about a specific person's background, projects, skills, and experience. The agent reads that person's resume and an exported LinkedIn profile as its knowledge base, and tries to respond in the same voice. The headline feature, beyond the chat itself, is a push notification flow. When a visitor leaves their contact information in the conversation, the agent detects it and triggers an API call to a push notification service such as Pushover or Ntfy. The owner of the portfolio receives an alert on their phone right away, so a lead does not get missed. The stack is Python 3.10 or newer. The agent uses either the OpenAI API or the Gemini API to generate replies. The web side runs on FastAPI, with a Gradio interface available for local use, and a separate HTML, CSS, and JavaScript front end. PDF parsing is done with PyPDF2, and the project uses the uv tool as its package manager. The README claims the system prompt is carefully written to keep replies accurate and in character. Setup is short. You clone the repository, drop your resume PDF and your LinkedIn export PDF into a folder called myself, then create a .env file that holds your OpenAI or Gemini API key and your push notification key. The README shows where to find the LinkedIn export option inside the LinkedIn site. After that, you run uv sync followed by uv run app.py to start the application. The README includes a few example exchanges, where the agent answers questions about projects, tech stack, and freelance availability, then captures an email address that comes in mid-conversation. The roadmap lists items that are already done, including the core agent, the PDF context, both frontends, and push notifications. Items still pending include a full UI redesign, embedding into a real portfolio site, a chat history and analytics dashboard, and a voice mode. The project is MIT-licensed.

Copy-paste prompts

Prompt 1
Walk me through dropping my resume and LinkedIn export PDFs into the myself folder and starting AlterEgo
Prompt 2
Show me the .env keys I need for either OpenAI or Gemini plus Pushover or Ntfy
Prompt 3
Help me swap the default system prompt so the agent stays strictly in character
Prompt 4
Explain how the agent detects a contact info disclosure and triggers the push notification
Prompt 5
Tell me how to deploy AlterEgo with uv sync and uv run app.py behind a real domain
Open on GitHub → Explain another repo

Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.