Skip to content

XedaGmr/portfolio-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Portfolio Manager

⚠️ MVP Status: This is an early-stage MVP. Core features are functional but the system is under active development. APIs and project structure may change.

A terminal-based AI agent system that ingests, organizes, and synthesizes your project portfolio. Capture project knowledge through structured AI interviews, then generate tailored resumes, cover letters, and portfolio exports on demand.

Overview

  • Project Ingestion: Feed the system GitHub repos, local files, documentation, or demo links
  • AI-Powered Interviews: LLM agents conduct structured interviews to extract architectural decisions, challenges, and lessons learned
  • Semantic Search: All projects are embedded and searchable via ChromaDB (local, no cloud required)
  • Tailored Output: Generate resumes, cover letters, and portfolios matched to specific job descriptions

All project data is stored locally as Markdown with YAML frontmatter—fully version-control-friendly and manually editable.

Features

Project Ingestion & AI Interview

The system accepts multiple input types:

  • GitHub repository links
  • Local file paths
  • Website/documentation URLs
  • Basic project metadata

An LLM agent conducts a structured interview to extract:

  • Architectural decisions
  • Technical challenges and solutions
  • Project outcomes and impact
  • Key lessons learned

Projects are stored as Markdown with YAML frontmatter in data/projects/.

Vector Store & Retrieval

  • Projects are automatically embedded and stored in ChromaDB
  • Local storage—no external dependencies or cloud costs
  • Semantic search retrieves relevant projects before output generation
  • Ensures grounded, hallucination-free results

Project Discovery & Filtering

  • Filter by tags, status, technology stack, or date range
  • Save custom filter presets for quick access
  • Full-text and semantic search

Job Application Generation

Provide a job description, and the system will:

  1. Retrieve semantically relevant projects and technical skills
  2. Generate a tailored cover letter highlighting relevant experience
  3. Generate a resume with matched projects and accomplishments
  4. Export as Markdown or PDF

Tech Stack

Layer Technology
Interface Textual — Python TUI framework
AI / Agents LangChain — Agentic workflows
Vector Store ChromaDB — Local embeddings database
Embeddings Configurable (OpenAI, Ollama, local models)
Storage Local Markdown + YAML frontmatter
Language Python 3.12+

Installation

Prerequisites

  • Python 3.12 or higher
  • pip or uv package manager

Setup

  1. Clone the repository

    git clone https://github.com/XedaGmr/portfolio-manager.git
    cd portfolio-manager
  2. Create a virtual environment

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
  3. Install dependencies

    pip install -e .

    Or with dev dependencies:

    pip install -e ".[dev]"
  4. Configure environment variables

    Create a .env file in the project root:

    # LLM Configuration
    OPENAI_API_KEY=your_api_key_here
    
    # Optional: Use local embeddings instead
    # OLLAMA_MODEL=mistral
    # OLLAMA_BASE_URL=http://localhost:11434

    Supported LLM providers:

    • OpenAI (default)
    • Ollama (local, requires running Ollama server)
    • Other LangChain-compatible providers (configurable in src/processors/llm.py)

Usage

Launch the TUI

python main.py

This opens the interactive terminal interface where you can:

  • Add new projects via interview workflow
  • Browse and filter your project portfolio
  • Generate resumes and cover letters for job applications
  • View project details and manage metadata

Project Workflow

  1. Add Project: Provide a link, file, or directory
  2. AI Interview: Answer questions about the project
  3. Review & Edit: Confirm extracted information in Markdown
  4. Generate Outputs: Use for resume/cover letter generation

Project Structure

portfolio-manager/
├── main.py                 # Entry point
├── pyproject.toml          # Project metadata & dependencies
├── README.md               # This file
├── src/
│   ├── agents/             # LangChain agent definitions
│   ├── models/             # Pydantic models (Job, Project)
│   ├── processors/         # Core processors (LLM, matching, parsing)
│   ├── storage/            # Data persistence (ChromaDB, Markdown)
│   ├── templates/          # Jinja2 templates for output generation
│   ├── tui/                # Textual UI components
│   └── logging_config.py    # Logging configuration
├── data/
│   ├── projects/           # Project Markdown files
│   └── chroma/             # ChromaDB vector store
├── tests/                  # Unit tests
└── output/                 # Generated resumes, cover letters (gitignored)

Project Structure Standards

  • Models: Pydantic v2 in src/models/
  • Agents: LangChain graph workflows in src/agents/
  • Storage: Local Markdown + ChromaDB
  • Logging: Configured in src/logging_config.py

Contributing

This is an early-stage project. Contributions are welcome but please note the MVP status. Consider opening an issue first to discuss proposed changes.

Future Roadmap

  • Batch job application generation
  • Integration with job boards (LinkedIn, Indeed)
  • Multi-modal support (images, videos)
  • Better generation output

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors