⚠️ 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.
- 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.
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/.
- 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
- Filter by tags, status, technology stack, or date range
- Save custom filter presets for quick access
- Full-text and semantic search
Provide a job description, and the system will:
- Retrieve semantically relevant projects and technical skills
- Generate a tailored cover letter highlighting relevant experience
- Generate a resume with matched projects and accomplishments
- Export as Markdown or PDF
| 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+ |
- Python 3.12 or higher
- pip or uv package manager
-
Clone the repository
git clone https://github.com/XedaGmr/portfolio-manager.git cd portfolio-manager -
Create a virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -e .Or with dev dependencies:
pip install -e ".[dev]" -
Configure environment variables
Create a
.envfile 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)
python main.pyThis 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
- Add Project: Provide a link, file, or directory
- AI Interview: Answer questions about the project
- Review & Edit: Confirm extracted information in Markdown
- Generate Outputs: Use for resume/cover letter generation
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)
- Models: Pydantic v2 in
src/models/ - Agents: LangChain graph workflows in
src/agents/ - Storage: Local Markdown + ChromaDB
- Logging: Configured in
src/logging_config.py
This is an early-stage project. Contributions are welcome but please note the MVP status. Consider opening an issue first to discuss proposed changes.
- Batch job application generation
- Integration with job boards (LinkedIn, Indeed)
- Multi-modal support (images, videos)
- Better generation output