Repository navigation
Expand file tree
/
Copy pathwork.html
More file actions
225 lines (213 loc) · 12.5 KB
/
Copy pathwork.html
File metadata and controls
225 lines (213 loc) · 12.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Work | David Gusmao</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Every project, newest first: an enterprise AI retrieval agent, a build-inference study, a MERN collectible app, a PHP enrollment system, a contact manager, and this site.">
<link rel="canonical" href="https://d4davidg.github.io/work.html">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400..800&display=swap">
<link rel="stylesheet" href="styles.css">
<meta name="theme-color" content="#00ff00">
<link rel="icon" href="/images/favicon.ico" sizes="32x32">
<link rel="icon" type="image/png" href="/images/favicon-192.png" sizes="192x192">
<link rel="apple-touch-icon" href="/images/favicon-180.png">
<script>/* Set the colour mode before first paint, or the page flashes.
A saved choice wins; otherwise the browser's own preference decides, and
light is the default when the browser states no preference either way. */
(function(){try{var m=localStorage.getItem('mode')||
(matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light');
document.documentElement.dataset.mode=m;}catch(e){}})();</script>
<script src="main.js" defer></script>
</head>
<body class="theme-green">
<a class="skip-link" href="#main">Skip to main content</a>
<nav class="navbar" aria-label="Primary">
<a class="navbar-item navbar-home" href="index.html">
<img class="mark-dark" src="images/DGsqarecircle.png" alt="" aria-hidden="true"
width="1181" height="1181" decoding="async">
<img class="mark-light" src="images/DGsquarecirclelightmode.png" alt="" aria-hidden="true"
width="1181" height="1181" decoding="async">
<span class="navbar-label">David Gusmao</span>
</a>
<div class="navbar-scroll">
<a class="navbar-item" href="work.html">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2.3 9.2V6.8a2.1 2.1 0 0 1 2.1-2.1h3.8l2.2 2h6.2a2.1 2.1 0 0 1 2.1 2.1v8.6a2.1 2.1 0 0 1-2.1 2.1H4.4a2.1 2.1 0 0 1-2.1-2.1V9.2Z"/><path d="m8.2 12.7 2.1 2.1 4.1-4.1"/></svg>
<span class="navbar-label">Work</span>
</a>
<a class="navbar-item" href="writing.html">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6.2 2.4h7L18.6 7.6v12.2a1.8 1.8 0 0 1-1.8 1.8H6.2a1.8 1.8 0 0 1-1.8-1.8V4.2a1.8 1.8 0 0 1 1.8-1.8Z"/><path d="M12.9 2.6v5.2h5.5"/><path d="M7.6 12.4h7.8M7.6 15.4h7.8M7.6 18.4h4.8"/></svg>
<span class="navbar-label">Writing</span>
</a>
<a class="navbar-item" href="resume.html">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14.2 2.6H6.6a1.9 1.9 0 0 0-1.9 1.9v15a1.9 1.9 0 0 0 1.9 1.9h10.8a1.9 1.9 0 0 0 1.9-1.9V7.8Z"/><path d="M14.2 2.6v5.2h5.1"/><path d="M8.6 12.6h6.8M8.6 16h4.6"/></svg>
<span class="navbar-label">Resume</span>
</a>
<a class="navbar-item" href="index.html#about">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="8" r="3.6"/><path d="M4.6 20.4a7.4 7.4 0 0 1 14.8 0"/></svg>
<span class="navbar-label">About</span>
</a>
</div>
<button class="navbar-item navbar-toggle" type="button" aria-pressed="false"
aria-label="Switch to light mode">
<span class="icon-light"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="4.3"/><path d="M12 1.8v2.6M12 19.6v2.6M22.2 12h-2.6M4.4 12H1.8M19.2 4.8l-1.85 1.85M6.65 17.35 4.8 19.2M19.2 19.2l-1.85-1.85M6.65 6.65 4.8 4.8"/></svg></span>
<span class="icon-dark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.6 14.4A8.6 8.6 0 0 1 9.6 3.4 8.6 8.6 0 1 0 20.6 14.4Z"/></svg></span>
<span class="navbar-label">Light</span>
</button>
</nav>
<header class="simple glass">
<h1 class="neon">Work</h1>
<p class="subtitle">Everything, newest first. The top two are where the reasoning is.</p>
</header>
<main id="main">
<section aria-labelledby="h-all">
<h2 id="h-all">Projects</h2>
<div class="work-grid">
<div class="work-card accent-amber">
<h3><a href="project-knights-counsel.html">Knights Counsel</a></h3>
<p class="card-meta">Project manager & technical lead · 5-person team · Jun 2026 – Present</p>
<div class="card-reveal"><div>
<p class="card-body">
A permission-aware artificial intelligence (AI) retrieval agent for a university legal office, deployed inside
the client's enterprise Microsoft 365 tenant. Answers from the office's own documents,
cites its sources, and declines rather than speculating.
</p>
</div></div>
<ul class="stack">
<li>Copilot Studio</li>
<li>SharePoint Online</li>
<li>Entra ID</li>
<li>Power Automate</li>
<li>React</li>
<li>TypeScript</li>
</ul>
<a class="card-more" href="project-knights-counsel.html">MORE <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 12h15"/><path d="m13 6 6 6-6 6"/></svg></a>
</div>
<div class="work-card accent-sky">
<h3><a href="project-build-recipe.html">Mapping How LLMs Build Software</a></h3>
<p class="card-meta">Independent research project · May 2026 – Present</p>
<div class="card-reveal"><div>
<p class="card-body">
A containerized large language model (LLM) agent that infers and executes build recipes for unfamiliar source
archives, measuring whether inference difficulty tracks how much each ecosystem
declares about its own dependencies.
</p>
</div></div>
<ul class="stack">
<li>Python</li>
<li>Docker</li>
<li>Anthropic API</li>
<li>Linux</li>
</ul>
<p class="card-status">Study design settled; harness in progress, results pending.</p>
<a class="card-more" href="project-build-recipe.html">MORE <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 12h15"/><path d="m13 6 6 6-6 6"/></svg></a>
</div>
<div class="work-card accent-red">
<h3><a href="project-simplebank.html">SimpleBank: AWS banking app</a></h3>
<p class="card-meta">Project manager & front-end lead · 4-person team · Sep 2026</p>
<div class="card-reveal"><div>
<p class="card-body">
A full banking application (REST API, immutable ledger, admin console)
deployed on AWS. I ran the project and owned the design system: the
contrast model, the theming tokens and a dark mode that follows the
operating system rather than fighting it.
</p>
</div></div>
<ul class="stack">
<li>Python</li>
<li>React</li>
<li>Vite</li>
<li>MongoDB</li>
<li>AWS</li>
<li>CloudFront</li>
<li>DocumentDB</li>
</ul>
<p class="card-status">Live on CloudFront.</p>
<a class="card-more" href="project-simplebank.html">MORE <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 12h15"/><path d="m13 6 6 6-6 6"/></svg></a>
</div>
<div class="work-card accent-aqua">
<h3><a href="project-fitnessfunctions.html">FitnessFunctions</a></h3>
<p class="card-meta">Solo build · Nov 2025</p>
<div class="card-reveal"><div>
<p class="card-body">
A role-based class enrollment system with separate admin and member dashboards,
instructor and class create, read, update, delete (CRUD), and capacity-aware enrollment backed by MySQL.
</p>
</div></div>
<ul class="stack">
<li>PHP</li>
<li>MySQL</li>
<li>JavaScript</li>
<li>HTML/CSS</li>
</ul>
<a class="card-more" href="project-fitnessfunctions.html">MORE <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 12h15"/><path d="m13 6 6 6-6 6"/></svg></a>
</div>
<div class="work-card accent-gold">
<h3><a href="project-pocketprofessors.html">PocketProfessors</a></h3>
<p class="card-meta">Project manager & front-end developer · Jul 2025</p>
<div class="card-reveal"><div>
<p class="card-body">
A full-stack MongoDB, Express, React, Node.js (MERN) collectible app where users open packs and collect hand-drawn cards.
I owned the pack-opening and collection views, the branding and card art, and the
delivery plan.
</p>
</div></div>
<ul class="stack">
<li>React</li>
<li>TypeScript</li>
<li>Node.js</li>
<li>Express</li>
<li>MongoDB</li>
<li>JWT</li>
</ul>
<p class="card-status">Live at pocketprofessors.com</p>
<a class="card-more" href="project-pocketprofessors.html">MORE <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 12h15"/><path d="m13 6 6 6-6 6"/></svg></a>
</div>
<div class="work-card accent-lime">
<h3><a href="project-contact-manager.html">CS Majors vs Gorilla: Contact Manager</a></h3>
<p class="card-meta">Project manager · Jun 2025</p>
<div class="card-reveal"><div>
<p class="card-body">
A small team build: contact CRUD with search and form validation over PHP endpoints
via XMLHttpRequest. My first project-management role, and the reason the Knights
Counsel one was not a first attempt.
</p>
</div></div>
<ul class="stack">
<li>JavaScript</li>
<li>PHP</li>
<li>AJAX/XHR</li>
<li>HTML/CSS</li>
</ul>
<a class="card-more" href="project-contact-manager.html">MORE <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 12h15"/><path d="m13 6 6 6-6 6"/></svg></a>
</div>
<div class="work-card accent-green">
<h3><a href="project-this-site.html">This site</a></h3>
<p class="card-meta">Solo build · 2025 – Present</p>
<div class="card-reveal"><div>
<p class="card-body">
Hand-written HTML and CSS with no framework and no build step. A colophon covering the
accessibility decisions, the per-project accent theming system, and the point at which
a build step would start to earn its keep.
</p>
</div></div>
<ul class="stack">
<li>HTML</li>
<li>CSS</li>
<li>JavaScript</li>
</ul>
<a class="card-more" href="project-this-site.html">MORE <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 12h15"/><path d="m13 6 6 6-6 6"/></svg></a>
</div>
</div>
</section>
</main>
<footer>
<p><span id="year"></span> David Gusmao ·
<a href="https://github.com/D4DavidG" target="_blank" rel="noopener">GitHub</a> ·
<a href="https://www.linkedin.com/in/david-e-gusmao/" target="_blank" rel="noopener">LinkedIn</a>
</p>
</footer>
</body>
</html>