git-resume-agent 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- git_resume_agent-0.1.0/LICENSE +21 -0
- git_resume_agent-0.1.0/PKG-INFO +291 -0
- git_resume_agent-0.1.0/README.md +259 -0
- git_resume_agent-0.1.0/git_resume/__init__.py +0 -0
- git_resume_agent-0.1.0/git_resume/agents/__init__.py +0 -0
- git_resume_agent-0.1.0/git_resume/agents/inspector.py +48 -0
- git_resume_agent-0.1.0/git_resume/agents/schema_discoverer.py +197 -0
- git_resume_agent-0.1.0/git_resume/agents/synthesizer.py +60 -0
- git_resume_agent-0.1.0/git_resume/agents/verifier.py +18 -0
- git_resume_agent-0.1.0/git_resume/cli.py +192 -0
- git_resume_agent-0.1.0/git_resume/compilers/__init__.py +0 -0
- git_resume_agent-0.1.0/git_resume/compilers/docx_compiler.py +68 -0
- git_resume_agent-0.1.0/git_resume/compilers/pdf_compiler.py +26 -0
- git_resume_agent-0.1.0/git_resume/config.py +50 -0
- git_resume_agent-0.1.0/git_resume/utils/__init__.py +0 -0
- git_resume_agent-0.1.0/git_resume/utils/git_utils.py +85 -0
- git_resume_agent-0.1.0/git_resume/utils/llm_client.py +119 -0
- git_resume_agent-0.1.0/git_resume_agent.egg-info/PKG-INFO +291 -0
- git_resume_agent-0.1.0/git_resume_agent.egg-info/SOURCES.txt +24 -0
- git_resume_agent-0.1.0/git_resume_agent.egg-info/dependency_links.txt +1 -0
- git_resume_agent-0.1.0/git_resume_agent.egg-info/entry_points.txt +2 -0
- git_resume_agent-0.1.0/git_resume_agent.egg-info/requires.txt +8 -0
- git_resume_agent-0.1.0/git_resume_agent.egg-info/top_level.txt +1 -0
- git_resume_agent-0.1.0/pyproject.toml +46 -0
- git_resume_agent-0.1.0/setup.cfg +4 -0
- git_resume_agent-0.1.0/tests/test_git_resume.py +42 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Naman Manocha
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: git-resume-agent
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Autonomous Git-Driven Resume & Portfolio Agent
|
|
5
|
+
Author-email: Naman Manocha <namanmanocha6019@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/Naman6019/git-resume-agent
|
|
8
|
+
Project-URL: Repository, https://github.com/Naman6019/git-resume-agent
|
|
9
|
+
Project-URL: Issues, https://github.com/Naman6019/git-resume-agent/issues
|
|
10
|
+
Keywords: resume,portfolio,git,ai-agents,ollama,multi-agent,automation
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
19
|
+
Classifier: Topic :: Utilities
|
|
20
|
+
Requires-Python: >=3.10
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
Requires-Dist: typer>=0.12.0
|
|
24
|
+
Requires-Dist: rich>=13.7.0
|
|
25
|
+
Requires-Dist: pydantic>=2.7.0
|
|
26
|
+
Requires-Dist: pyyaml>=6.0.1
|
|
27
|
+
Requires-Dist: python-docx>=1.1.0
|
|
28
|
+
Requires-Dist: gitpython>=3.1.43
|
|
29
|
+
Requires-Dist: httpx>=0.27.0
|
|
30
|
+
Requires-Dist: openai>=1.30.0
|
|
31
|
+
Dynamic: license-file
|
|
32
|
+
|
|
33
|
+
# GitResume Agent ๐
|
|
34
|
+
|
|
35
|
+
[](https://www.python.org/)
|
|
36
|
+
[](https://typer.tiangolo.com/)
|
|
37
|
+
[](https://github.com/Naman6019/git-resume-agent)
|
|
38
|
+
[](https://ollama.com)
|
|
39
|
+
[](tests/)
|
|
40
|
+
[](LICENSE)
|
|
41
|
+
|
|
42
|
+
> **Autonomous Git-Driven Resume & Portfolio Agent**
|
|
43
|
+
> *A zero-touch agentic pipeline that perceives git diffs and codebase ASTs upon commit, synthesizes grounded Google XYZ accomplishment bullets with adversarial critique, and autonomously compiles role-tailored resumes directly to production portfolio endpoints.*
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## ๐ก Why GitResume Agent?
|
|
48
|
+
|
|
49
|
+
As software and AI engineers, our codebases evolve every day โ we ship features, refactor parsers, optimize vector retrieval latencies, and increase test coverage. Yet, our resumes remain static, outdated, and ungrounded.
|
|
50
|
+
|
|
51
|
+
**GitResume Agent** automates the entire lifecycle of engineering credentials as an event-driven CI/CD system:
|
|
52
|
+
1. **Perception**: Interrogates active Git repositories (commits, lines of code, test suites, and AST diffs) in < 5ms.
|
|
53
|
+
2. **Schema Discovery**: Dynamically detects tech stack additions and hackathon track changes from `README.md` files and package manifests, updating configuration in-place.
|
|
54
|
+
3. **Reasoned Synthesis**: Synthesizes quantified achievement bullets following the **Google XYZ formula** (*"Accomplished X, measured by Y, by doing Z"*).
|
|
55
|
+
4. **Adversarial Critique**: Validates every cited metric and library against the commit AST to mathematically eliminate hallucinations.
|
|
56
|
+
5. **Multi-Format Execution & Sync**: Injects fresh bullets into Word (`.docx`) runs preserving exact styling, exports headless PDFs via COM automation, and syncs directly to your live portfolio website.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## ๐ค Truly Autonomous: How It Works
|
|
61
|
+
|
|
62
|
+
GitResume Agent operates on an **event-driven, zero-touch autonomy loop**:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
66
|
+
โ DEVELOPER ACTION โ
|
|
67
|
+
โ `git commit -m "..."` โ
|
|
68
|
+
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโ
|
|
69
|
+
โ
|
|
70
|
+
โผ (Post-Commit Hook Trigger)
|
|
71
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
72
|
+
โ AUTONOMOUS AGENT PIPELINE โ
|
|
73
|
+
โ โ
|
|
74
|
+
โ 1. PERCEPTION 2. SCHEMA DISCOVERY 3. REASONING & SYNTHESIS โ
|
|
75
|
+
โ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
|
|
76
|
+
โ โ InspectorAgent โโโโโถโ SchemaDiscoverer โโโโโถโ SynthesizerAgent โ โ
|
|
77
|
+
โ โ Git Log / AST โ โ README & Badges โ โ Flagship Ollama Cloud LLM โ โ
|
|
78
|
+
โ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ โ
|
|
79
|
+
โ โ โ
|
|
80
|
+
โ โผ โ
|
|
81
|
+
โ 5. DUAL-TIER SYNC 4. COMPILATION 4. ADVERSARIAL CRITIQUE โ
|
|
82
|
+
โ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
|
|
83
|
+
โ โ Portfolio / Web โโโโโโ Docx & PDF Engineโโโโโโ GroundingVerifierAgent โ โ
|
|
84
|
+
โ โ Public Mirroring โ โ Headless Word COMโ โ AST / Metric Verification โ โ
|
|
85
|
+
โ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
|
|
86
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
* **Zero-Touch Git Hooks**: Once installed, you never need to manually trigger compilation. Committing to any project repository automatically initiates background resume updates.
|
|
90
|
+
* **In-Place Schema Auto-Sync**: Adding a new framework to `package.json` or a hackathon badge to `README.md` automatically mutates `gitresume.yaml` idempotently.
|
|
91
|
+
* **Deterministic Guardrails**: Human governance controls initial role personas and target paths, while multi-agent execution handles perception, critique, and artifact compilation.
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## ๐๏ธ Multi-Agent Architecture
|
|
96
|
+
|
|
97
|
+
### Agent Roles:
|
|
98
|
+
* **SchemaDiscoverer Agent**: Parses project `README.md` files, badges, and manifests (`package.json`, `pyproject.toml`, `requirements.txt`). When you add a tool or win a hackathon track, it updates `gitresume.yaml` in-place.
|
|
99
|
+
* **Inspector Agent**: Interrogates `git ls-files`, `git log`, and test directories across 100K+ lines of code in < 5ms without traversal bottlenecks.
|
|
100
|
+
* **Synthesizer Agent**: Employs flagship coding LLMs (e.g. `kimi-k2.7-code`, `deepseek-v4-pro`, `qwen2.5-coder`) via Ollama Cloud or local Ollama to craft high-impact accomplishment bullets.
|
|
101
|
+
* **Grounding Verifier Agent**: Acts as an adversarial critic, verifying that cited frameworks and performance metrics are mathematically grounded in the git history.
|
|
102
|
+
* **Persona Dispatcher & Compilers**: Modifies specific paragraph runs in Word `.docx` documents preserving exact typography, triggers MS Word COM automation for pixel-perfect PDF export, and syncs directly to public portfolio directories.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## ๐ Where Generated Resumes Are Stored & Synced
|
|
107
|
+
|
|
108
|
+
GitResume Agent manages a dual-tier storage system defined in your `gitresume.yaml`:
|
|
109
|
+
|
|
110
|
+
### 1. Primary Master Directory (`output.resume_dir`)
|
|
111
|
+
* The primary folder where your master `.docx` templates and compiled `.pdf` files are stored.
|
|
112
|
+
* Keeps all role-specific persona documents organized (e.g. `Forward_Deployed_Engineer.docx`, `GenAI_Engineer.docx`, `AI_Engineer.docx`, `Master_Resume.docx`).
|
|
113
|
+
|
|
114
|
+
### 2. Public Web / Portfolio Sync (`output.sync_paths`)
|
|
115
|
+
* Mirrors compiled `.docx` and `.pdf` files directly to your live portfolio website (e.g. `./portfolio_site/public/resume`), static site generator public folders, or CDN buckets.
|
|
116
|
+
* Every time you run `git-resume sync` (or make a git commit), your live portfolio immediately serves the freshest resumes.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## โก Quickstart & Installation
|
|
121
|
+
|
|
122
|
+
### 1. Clone & Install
|
|
123
|
+
```bash
|
|
124
|
+
git clone https://github.com/Naman6019/git-resume-agent.git
|
|
125
|
+
cd git-resume-agent
|
|
126
|
+
|
|
127
|
+
# Create virtual environment
|
|
128
|
+
python -m venv .venv
|
|
129
|
+
.venv\Scripts\activate # Windows (or `source .venv/bin/activate` on Linux/macOS)
|
|
130
|
+
|
|
131
|
+
# Install editable package
|
|
132
|
+
pip install -e .
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 2. Configure Environment (Optional LLM Keys)
|
|
136
|
+
Copy `.env.example` to `.env`:
|
|
137
|
+
```env
|
|
138
|
+
# Option A: Ollama Cloud (Uses flagship cloud models without local download)
|
|
139
|
+
OLLAMA_BASE_URL=https://ollama.com
|
|
140
|
+
OLLAMA_API_KEY=your_ollama_api_key
|
|
141
|
+
|
|
142
|
+
# Option B: Local Ollama (100% Free, Offline)
|
|
143
|
+
OLLAMA_BASE_URL=http://127.0.0.1:11434
|
|
144
|
+
|
|
145
|
+
# Option C: Google Gemini Free Endpoint
|
|
146
|
+
GEMINI_API_KEY=your_gemini_api_key
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## ๐น๏ธ CLI Usage
|
|
152
|
+
|
|
153
|
+
### 1. Auto-Discover Schema from READMEs
|
|
154
|
+
Inspects configured repositories and syncs newly added tech tools or hackathon tags into `gitresume.yaml`:
|
|
155
|
+
```bash
|
|
156
|
+
git-resume auto-config
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### 2. Install Zero-Touch Git Post-Commit Hooks
|
|
160
|
+
Automatically wires up post-commit hooks across all repositories listed in `gitresume.yaml`:
|
|
161
|
+
```bash
|
|
162
|
+
git-resume install-hooks
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### 3. Live Codebase Intelligence Dashboard
|
|
166
|
+
Displays real-time commit counts, file statistics, total lines of code, and test suites across all tracked repositories:
|
|
167
|
+
```bash
|
|
168
|
+
git-resume scan
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### 4. Synthesize Grounded Achievement Bullets
|
|
172
|
+
Uses multi-agent reasoning over recent git commits to generate role-specific Google XYZ bullets:
|
|
173
|
+
```bash
|
|
174
|
+
# Generate bullet for Forward-Deployed Engineer role
|
|
175
|
+
git-resume generate --repo MyProject --persona fde
|
|
176
|
+
|
|
177
|
+
# Generate bullet for Generative AI Engineer role
|
|
178
|
+
git-resume generate --repo MyProject --persona genai
|
|
179
|
+
|
|
180
|
+
# Generate bullet for AI/ML Engineer role
|
|
181
|
+
git-resume generate --repo MyProject --persona ai_engineer
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### 5. Full End-to-End Multi-Agent Sync
|
|
185
|
+
Runs the entire pipeline (Inspect $\rightarrow$ Synthesize $\rightarrow$ Verify $\rightarrow$ Compile `.docx` $\rightarrow$ Export `.pdf` $\rightarrow$ Sync to Portfolio):
|
|
186
|
+
```bash
|
|
187
|
+
git-resume sync
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## โ๏ธ Configuration (`gitresume.yaml`)
|
|
193
|
+
|
|
194
|
+
```yaml
|
|
195
|
+
version: "1.0"
|
|
196
|
+
|
|
197
|
+
developer:
|
|
198
|
+
name: "Your Name"
|
|
199
|
+
email: "your.email@example.com"
|
|
200
|
+
github: "https://github.com/yourusername"
|
|
201
|
+
linkedin: "https://linkedin.com/in/yourprofile"
|
|
202
|
+
location: "City, Country"
|
|
203
|
+
|
|
204
|
+
# Repositories to inspect & ground
|
|
205
|
+
repositories:
|
|
206
|
+
- name: "EnterpriseAI"
|
|
207
|
+
path: "./projects/EnterpriseAI"
|
|
208
|
+
tag: "OpenAI Build Week Submission"
|
|
209
|
+
primary_stack: ["Python", "FastAPI", "React", "TypeScript", "Qdrant", "PostgreSQL"]
|
|
210
|
+
|
|
211
|
+
- name: "AgentOS"
|
|
212
|
+
path: "./projects/AgentOS"
|
|
213
|
+
tag: "Hackathon Track Submission"
|
|
214
|
+
primary_stack: ["Python", "Google ADK", "LangGraph", "Next.js", "Firestore", "Google Cloud Run"]
|
|
215
|
+
|
|
216
|
+
# Resume Personas & Target Documents
|
|
217
|
+
personas:
|
|
218
|
+
- id: "fde"
|
|
219
|
+
title: "Agentic AI / Forward-Deployed Engineer"
|
|
220
|
+
resume_file: "Your_Name_Agentic_AI_FDE_Resume.docx"
|
|
221
|
+
emphasis: ["evals", "hybrid-search", "strict-abstention", "production-agents", "forward-deployed"]
|
|
222
|
+
|
|
223
|
+
- id: "genai"
|
|
224
|
+
title: "Generative AI Engineer"
|
|
225
|
+
resume_file: "Your_Name_GenAI_Engineer_Resume.docx"
|
|
226
|
+
emphasis: ["rag", "vector-embeddings", "langgraph", "llm-pipelines", "tool-calling"]
|
|
227
|
+
|
|
228
|
+
# Dual-Tier Storage & Compilation Targets
|
|
229
|
+
output:
|
|
230
|
+
formats: ["docx", "pdf"]
|
|
231
|
+
resume_dir: "./resumes" # Master storage directory
|
|
232
|
+
sync_paths:
|
|
233
|
+
- "./portfolio_site/public/resume" # Public portfolio sync destination
|
|
234
|
+
|
|
235
|
+
# LLM Intelligence Engine
|
|
236
|
+
llm:
|
|
237
|
+
provider: "ollama"
|
|
238
|
+
model: "kimi-k2.7-code"
|
|
239
|
+
fallback_model: "gpt-4o-mini"
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## ๐ช Zero-Touch Git Hook Integration
|
|
245
|
+
|
|
246
|
+
How does the automation work on every commit?
|
|
247
|
+
When you run `git-resume install-hooks` (or `python scripts/install_hooks.py`):
|
|
248
|
+
1. It reads your configured repository paths in `gitresume.yaml`.
|
|
249
|
+
2. Locates each repository's `.git/hooks/` folder.
|
|
250
|
+
3. Installs an executable `post-commit` script that triggers `git-resume sync` in the background upon every commit.
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
git-resume install-hooks
|
|
254
|
+
```
|
|
255
|
+
*Output:*
|
|
256
|
+
```
|
|
257
|
+
๐ง Installing Git post-commit hooks...
|
|
258
|
+
* โ Installed hook for [EnterpriseAI]: ./projects/EnterpriseAI
|
|
259
|
+
* โ Installed hook for [AgentOS]: ./projects/AgentOS
|
|
260
|
+
โ
Successfully installed hooks across 2 repositories!
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## ๐งช Testing
|
|
266
|
+
|
|
267
|
+
Run the automated unit test suite:
|
|
268
|
+
```bash
|
|
269
|
+
pytest tests/ -v
|
|
270
|
+
```
|
|
271
|
+
```
|
|
272
|
+
collected 5 items
|
|
273
|
+
tests/test_git_resume.py::test_load_config PASSED [ 20%]
|
|
274
|
+
tests/test_git_resume.py::test_inspector_agent PASSED [ 40%]
|
|
275
|
+
tests/test_git_resume.py::test_grounding_verifier PASSED [ 60%]
|
|
276
|
+
tests/test_git_resume.py::test_synthesizer_agent PASSED [ 80%]
|
|
277
|
+
tests/test_git_resume.py::test_schema_discoverer PASSED [100%]
|
|
278
|
+
====================== 5 passed in 0.62s ======================
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## ๐ License
|
|
284
|
+
|
|
285
|
+
Distributed under the **MIT License**. See `LICENSE` for more information.
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## ๐ค Author
|
|
290
|
+
|
|
291
|
+
**Naman Manocha** โ [@Naman6019](https://github.com/Naman6019)
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
# GitResume Agent ๐
|
|
2
|
+
|
|
3
|
+
[](https://www.python.org/)
|
|
4
|
+
[](https://typer.tiangolo.com/)
|
|
5
|
+
[](https://github.com/Naman6019/git-resume-agent)
|
|
6
|
+
[](https://ollama.com)
|
|
7
|
+
[](tests/)
|
|
8
|
+
[](LICENSE)
|
|
9
|
+
|
|
10
|
+
> **Autonomous Git-Driven Resume & Portfolio Agent**
|
|
11
|
+
> *A zero-touch agentic pipeline that perceives git diffs and codebase ASTs upon commit, synthesizes grounded Google XYZ accomplishment bullets with adversarial critique, and autonomously compiles role-tailored resumes directly to production portfolio endpoints.*
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## ๐ก Why GitResume Agent?
|
|
16
|
+
|
|
17
|
+
As software and AI engineers, our codebases evolve every day โ we ship features, refactor parsers, optimize vector retrieval latencies, and increase test coverage. Yet, our resumes remain static, outdated, and ungrounded.
|
|
18
|
+
|
|
19
|
+
**GitResume Agent** automates the entire lifecycle of engineering credentials as an event-driven CI/CD system:
|
|
20
|
+
1. **Perception**: Interrogates active Git repositories (commits, lines of code, test suites, and AST diffs) in < 5ms.
|
|
21
|
+
2. **Schema Discovery**: Dynamically detects tech stack additions and hackathon track changes from `README.md` files and package manifests, updating configuration in-place.
|
|
22
|
+
3. **Reasoned Synthesis**: Synthesizes quantified achievement bullets following the **Google XYZ formula** (*"Accomplished X, measured by Y, by doing Z"*).
|
|
23
|
+
4. **Adversarial Critique**: Validates every cited metric and library against the commit AST to mathematically eliminate hallucinations.
|
|
24
|
+
5. **Multi-Format Execution & Sync**: Injects fresh bullets into Word (`.docx`) runs preserving exact styling, exports headless PDFs via COM automation, and syncs directly to your live portfolio website.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## ๐ค Truly Autonomous: How It Works
|
|
29
|
+
|
|
30
|
+
GitResume Agent operates on an **event-driven, zero-touch autonomy loop**:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
34
|
+
โ DEVELOPER ACTION โ
|
|
35
|
+
โ `git commit -m "..."` โ
|
|
36
|
+
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโ
|
|
37
|
+
โ
|
|
38
|
+
โผ (Post-Commit Hook Trigger)
|
|
39
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
40
|
+
โ AUTONOMOUS AGENT PIPELINE โ
|
|
41
|
+
โ โ
|
|
42
|
+
โ 1. PERCEPTION 2. SCHEMA DISCOVERY 3. REASONING & SYNTHESIS โ
|
|
43
|
+
โ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
|
|
44
|
+
โ โ InspectorAgent โโโโโถโ SchemaDiscoverer โโโโโถโ SynthesizerAgent โ โ
|
|
45
|
+
โ โ Git Log / AST โ โ README & Badges โ โ Flagship Ollama Cloud LLM โ โ
|
|
46
|
+
โ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ โ
|
|
47
|
+
โ โ โ
|
|
48
|
+
โ โผ โ
|
|
49
|
+
โ 5. DUAL-TIER SYNC 4. COMPILATION 4. ADVERSARIAL CRITIQUE โ
|
|
50
|
+
โ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
|
|
51
|
+
โ โ Portfolio / Web โโโโโโ Docx & PDF Engineโโโโโโ GroundingVerifierAgent โ โ
|
|
52
|
+
โ โ Public Mirroring โ โ Headless Word COMโ โ AST / Metric Verification โ โ
|
|
53
|
+
โ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
|
|
54
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
* **Zero-Touch Git Hooks**: Once installed, you never need to manually trigger compilation. Committing to any project repository automatically initiates background resume updates.
|
|
58
|
+
* **In-Place Schema Auto-Sync**: Adding a new framework to `package.json` or a hackathon badge to `README.md` automatically mutates `gitresume.yaml` idempotently.
|
|
59
|
+
* **Deterministic Guardrails**: Human governance controls initial role personas and target paths, while multi-agent execution handles perception, critique, and artifact compilation.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## ๐๏ธ Multi-Agent Architecture
|
|
64
|
+
|
|
65
|
+
### Agent Roles:
|
|
66
|
+
* **SchemaDiscoverer Agent**: Parses project `README.md` files, badges, and manifests (`package.json`, `pyproject.toml`, `requirements.txt`). When you add a tool or win a hackathon track, it updates `gitresume.yaml` in-place.
|
|
67
|
+
* **Inspector Agent**: Interrogates `git ls-files`, `git log`, and test directories across 100K+ lines of code in < 5ms without traversal bottlenecks.
|
|
68
|
+
* **Synthesizer Agent**: Employs flagship coding LLMs (e.g. `kimi-k2.7-code`, `deepseek-v4-pro`, `qwen2.5-coder`) via Ollama Cloud or local Ollama to craft high-impact accomplishment bullets.
|
|
69
|
+
* **Grounding Verifier Agent**: Acts as an adversarial critic, verifying that cited frameworks and performance metrics are mathematically grounded in the git history.
|
|
70
|
+
* **Persona Dispatcher & Compilers**: Modifies specific paragraph runs in Word `.docx` documents preserving exact typography, triggers MS Word COM automation for pixel-perfect PDF export, and syncs directly to public portfolio directories.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## ๐ Where Generated Resumes Are Stored & Synced
|
|
75
|
+
|
|
76
|
+
GitResume Agent manages a dual-tier storage system defined in your `gitresume.yaml`:
|
|
77
|
+
|
|
78
|
+
### 1. Primary Master Directory (`output.resume_dir`)
|
|
79
|
+
* The primary folder where your master `.docx` templates and compiled `.pdf` files are stored.
|
|
80
|
+
* Keeps all role-specific persona documents organized (e.g. `Forward_Deployed_Engineer.docx`, `GenAI_Engineer.docx`, `AI_Engineer.docx`, `Master_Resume.docx`).
|
|
81
|
+
|
|
82
|
+
### 2. Public Web / Portfolio Sync (`output.sync_paths`)
|
|
83
|
+
* Mirrors compiled `.docx` and `.pdf` files directly to your live portfolio website (e.g. `./portfolio_site/public/resume`), static site generator public folders, or CDN buckets.
|
|
84
|
+
* Every time you run `git-resume sync` (or make a git commit), your live portfolio immediately serves the freshest resumes.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## โก Quickstart & Installation
|
|
89
|
+
|
|
90
|
+
### 1. Clone & Install
|
|
91
|
+
```bash
|
|
92
|
+
git clone https://github.com/Naman6019/git-resume-agent.git
|
|
93
|
+
cd git-resume-agent
|
|
94
|
+
|
|
95
|
+
# Create virtual environment
|
|
96
|
+
python -m venv .venv
|
|
97
|
+
.venv\Scripts\activate # Windows (or `source .venv/bin/activate` on Linux/macOS)
|
|
98
|
+
|
|
99
|
+
# Install editable package
|
|
100
|
+
pip install -e .
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 2. Configure Environment (Optional LLM Keys)
|
|
104
|
+
Copy `.env.example` to `.env`:
|
|
105
|
+
```env
|
|
106
|
+
# Option A: Ollama Cloud (Uses flagship cloud models without local download)
|
|
107
|
+
OLLAMA_BASE_URL=https://ollama.com
|
|
108
|
+
OLLAMA_API_KEY=your_ollama_api_key
|
|
109
|
+
|
|
110
|
+
# Option B: Local Ollama (100% Free, Offline)
|
|
111
|
+
OLLAMA_BASE_URL=http://127.0.0.1:11434
|
|
112
|
+
|
|
113
|
+
# Option C: Google Gemini Free Endpoint
|
|
114
|
+
GEMINI_API_KEY=your_gemini_api_key
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## ๐น๏ธ CLI Usage
|
|
120
|
+
|
|
121
|
+
### 1. Auto-Discover Schema from READMEs
|
|
122
|
+
Inspects configured repositories and syncs newly added tech tools or hackathon tags into `gitresume.yaml`:
|
|
123
|
+
```bash
|
|
124
|
+
git-resume auto-config
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### 2. Install Zero-Touch Git Post-Commit Hooks
|
|
128
|
+
Automatically wires up post-commit hooks across all repositories listed in `gitresume.yaml`:
|
|
129
|
+
```bash
|
|
130
|
+
git-resume install-hooks
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### 3. Live Codebase Intelligence Dashboard
|
|
134
|
+
Displays real-time commit counts, file statistics, total lines of code, and test suites across all tracked repositories:
|
|
135
|
+
```bash
|
|
136
|
+
git-resume scan
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### 4. Synthesize Grounded Achievement Bullets
|
|
140
|
+
Uses multi-agent reasoning over recent git commits to generate role-specific Google XYZ bullets:
|
|
141
|
+
```bash
|
|
142
|
+
# Generate bullet for Forward-Deployed Engineer role
|
|
143
|
+
git-resume generate --repo MyProject --persona fde
|
|
144
|
+
|
|
145
|
+
# Generate bullet for Generative AI Engineer role
|
|
146
|
+
git-resume generate --repo MyProject --persona genai
|
|
147
|
+
|
|
148
|
+
# Generate bullet for AI/ML Engineer role
|
|
149
|
+
git-resume generate --repo MyProject --persona ai_engineer
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### 5. Full End-to-End Multi-Agent Sync
|
|
153
|
+
Runs the entire pipeline (Inspect $\rightarrow$ Synthesize $\rightarrow$ Verify $\rightarrow$ Compile `.docx` $\rightarrow$ Export `.pdf` $\rightarrow$ Sync to Portfolio):
|
|
154
|
+
```bash
|
|
155
|
+
git-resume sync
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## โ๏ธ Configuration (`gitresume.yaml`)
|
|
161
|
+
|
|
162
|
+
```yaml
|
|
163
|
+
version: "1.0"
|
|
164
|
+
|
|
165
|
+
developer:
|
|
166
|
+
name: "Your Name"
|
|
167
|
+
email: "your.email@example.com"
|
|
168
|
+
github: "https://github.com/yourusername"
|
|
169
|
+
linkedin: "https://linkedin.com/in/yourprofile"
|
|
170
|
+
location: "City, Country"
|
|
171
|
+
|
|
172
|
+
# Repositories to inspect & ground
|
|
173
|
+
repositories:
|
|
174
|
+
- name: "EnterpriseAI"
|
|
175
|
+
path: "./projects/EnterpriseAI"
|
|
176
|
+
tag: "OpenAI Build Week Submission"
|
|
177
|
+
primary_stack: ["Python", "FastAPI", "React", "TypeScript", "Qdrant", "PostgreSQL"]
|
|
178
|
+
|
|
179
|
+
- name: "AgentOS"
|
|
180
|
+
path: "./projects/AgentOS"
|
|
181
|
+
tag: "Hackathon Track Submission"
|
|
182
|
+
primary_stack: ["Python", "Google ADK", "LangGraph", "Next.js", "Firestore", "Google Cloud Run"]
|
|
183
|
+
|
|
184
|
+
# Resume Personas & Target Documents
|
|
185
|
+
personas:
|
|
186
|
+
- id: "fde"
|
|
187
|
+
title: "Agentic AI / Forward-Deployed Engineer"
|
|
188
|
+
resume_file: "Your_Name_Agentic_AI_FDE_Resume.docx"
|
|
189
|
+
emphasis: ["evals", "hybrid-search", "strict-abstention", "production-agents", "forward-deployed"]
|
|
190
|
+
|
|
191
|
+
- id: "genai"
|
|
192
|
+
title: "Generative AI Engineer"
|
|
193
|
+
resume_file: "Your_Name_GenAI_Engineer_Resume.docx"
|
|
194
|
+
emphasis: ["rag", "vector-embeddings", "langgraph", "llm-pipelines", "tool-calling"]
|
|
195
|
+
|
|
196
|
+
# Dual-Tier Storage & Compilation Targets
|
|
197
|
+
output:
|
|
198
|
+
formats: ["docx", "pdf"]
|
|
199
|
+
resume_dir: "./resumes" # Master storage directory
|
|
200
|
+
sync_paths:
|
|
201
|
+
- "./portfolio_site/public/resume" # Public portfolio sync destination
|
|
202
|
+
|
|
203
|
+
# LLM Intelligence Engine
|
|
204
|
+
llm:
|
|
205
|
+
provider: "ollama"
|
|
206
|
+
model: "kimi-k2.7-code"
|
|
207
|
+
fallback_model: "gpt-4o-mini"
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## ๐ช Zero-Touch Git Hook Integration
|
|
213
|
+
|
|
214
|
+
How does the automation work on every commit?
|
|
215
|
+
When you run `git-resume install-hooks` (or `python scripts/install_hooks.py`):
|
|
216
|
+
1. It reads your configured repository paths in `gitresume.yaml`.
|
|
217
|
+
2. Locates each repository's `.git/hooks/` folder.
|
|
218
|
+
3. Installs an executable `post-commit` script that triggers `git-resume sync` in the background upon every commit.
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
git-resume install-hooks
|
|
222
|
+
```
|
|
223
|
+
*Output:*
|
|
224
|
+
```
|
|
225
|
+
๐ง Installing Git post-commit hooks...
|
|
226
|
+
* โ Installed hook for [EnterpriseAI]: ./projects/EnterpriseAI
|
|
227
|
+
* โ Installed hook for [AgentOS]: ./projects/AgentOS
|
|
228
|
+
โ
Successfully installed hooks across 2 repositories!
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## ๐งช Testing
|
|
234
|
+
|
|
235
|
+
Run the automated unit test suite:
|
|
236
|
+
```bash
|
|
237
|
+
pytest tests/ -v
|
|
238
|
+
```
|
|
239
|
+
```
|
|
240
|
+
collected 5 items
|
|
241
|
+
tests/test_git_resume.py::test_load_config PASSED [ 20%]
|
|
242
|
+
tests/test_git_resume.py::test_inspector_agent PASSED [ 40%]
|
|
243
|
+
tests/test_git_resume.py::test_grounding_verifier PASSED [ 60%]
|
|
244
|
+
tests/test_git_resume.py::test_synthesizer_agent PASSED [ 80%]
|
|
245
|
+
tests/test_git_resume.py::test_schema_discoverer PASSED [100%]
|
|
246
|
+
====================== 5 passed in 0.62s ======================
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## ๐ License
|
|
252
|
+
|
|
253
|
+
Distributed under the **MIT License**. See `LICENSE` for more information.
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## ๐ค Author
|
|
258
|
+
|
|
259
|
+
**Naman Manocha** โ [@Naman6019](https://github.com/Naman6019)
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import subprocess
|
|
3
|
+
from typing import Dict, Any, List
|
|
4
|
+
from git_resume.config import RepoConfig
|
|
5
|
+
from git_resume.utils.git_utils import get_git_stats, get_recent_commits
|
|
6
|
+
|
|
7
|
+
class InspectorAgent:
|
|
8
|
+
"""Scans Git repositories to extract active codebase metrics, diffs, and commit contexts."""
|
|
9
|
+
|
|
10
|
+
def inspect_repo(self, repo: RepoConfig) -> Dict[str, Any]:
|
|
11
|
+
stats = get_git_stats(repo.path)
|
|
12
|
+
recent_commits = get_recent_commits(repo.path, count=10)
|
|
13
|
+
diff_summary = self.get_diff_summary(repo.path, count=5)
|
|
14
|
+
|
|
15
|
+
return {
|
|
16
|
+
"name": repo.name,
|
|
17
|
+
"path": repo.path,
|
|
18
|
+
"tag": repo.tag,
|
|
19
|
+
"stack": repo.primary_stack,
|
|
20
|
+
"commits": stats.get("commits", 0),
|
|
21
|
+
"files": stats.get("files", 0),
|
|
22
|
+
"loc": stats.get("loc", 0),
|
|
23
|
+
"loc_k": f"{round(stats.get('loc', 0) / 1000)}K" if stats.get("loc", 0) >= 1000 else str(stats.get("loc", 0)),
|
|
24
|
+
"test_suites": stats.get("test_suites", 0),
|
|
25
|
+
"recent_commits": recent_commits,
|
|
26
|
+
"diff_summary": diff_summary
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
def get_diff_summary(self, repo_path: str, count: int = 5) -> str:
|
|
30
|
+
if not os.path.exists(repo_path):
|
|
31
|
+
return "No git repository found."
|
|
32
|
+
try:
|
|
33
|
+
# Get stat summary of recent commits
|
|
34
|
+
output = subprocess.check_output(
|
|
35
|
+
["git", "diff", f"HEAD~{count}", "HEAD", "--stat"],
|
|
36
|
+
cwd=repo_path,
|
|
37
|
+
text=True,
|
|
38
|
+
stderr=subprocess.DEVNULL
|
|
39
|
+
).strip()
|
|
40
|
+
return output if output else "Recent commits contain modular refactors and optimizations."
|
|
41
|
+
except Exception:
|
|
42
|
+
return "Modular codebase additions and schema updates."
|
|
43
|
+
|
|
44
|
+
def inspect_all(self, repos: List[RepoConfig]) -> Dict[str, Dict[str, Any]]:
|
|
45
|
+
results = {}
|
|
46
|
+
for r in repos:
|
|
47
|
+
results[r.name] = self.inspect_repo(r)
|
|
48
|
+
return results
|