Skip to content

Commit 17dd5a2

Browse files
committed
update narrative cards
1 parent b7f0815 commit 17dd5a2

File tree

2 files changed

+56
-5
lines changed

2 files changed

+56
-5
lines changed

src/pages/narrative/projects.html

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@
2727
</p>
2828

2929
<header class="narrative-header">
30-
<h1 class="narrative-title">Projects — ML + Software</h1>
30+
<h1 class="narrative-title">Projects — Data, ML & Software</h1>
3131
<p class="narrative-desc">Pipelines, evaluation, and product thinking in practice. Building artifacts informed by real-world constraints.</p>
3232
</header>
3333

3434
<section class="narrative-intro">
35-
<p class="narrative-intro-text">After Synkron, I wanted to go beyond using machine learning as a black box. I started building systems myself from data pipelines and model training to full-stack apps that put AI in users' hands. My focus: <strong>data</strong>, <strong>machine learning</strong>, and <strong>software</strong> that solve real problems.</p>
36-
<p class="narrative-intro-text">These projects are where theory meets practice. Each one pushes on a different part of the stack: data wrangling and feature engineering, model evaluation and iteration, or end-to-end product design. The goal is not perfection it's learning how systems fail, scale, and ship.</p>
35+
<p class="narrative-intro-text">After Synkron, I wanted to go beyond using machine learning as a black box. I started building systems myself, from data pipelines and model training to full-stack apps that put AI in users' hands. My focus: <strong>data</strong>, <strong>machine learning</strong>, and <strong>software</strong> that solve real problems.</p>
36+
<p class="narrative-intro-text">These projects are where theory meets practice. Each one pushes on a different part of the stack: data wrangling and feature engineering, model evaluation and iteration, or end-to-end product design. The goal is not perfection, it's learning how systems fail, scale, and ship.</p>
3737
</section>
3838

3939
<div class="narrative-content">
@@ -48,11 +48,31 @@ <h2>What I built</h2>
4848
</section>
4949
<section class="narrative-section">
5050
<h2>Tools</h2>
51-
<p>Python (scikit-learn, Pandas, NumPy, PyTorch) for data and ML. React, Node.js, and Flask for web. Git, Linux, and structured workflows for shipping. The stack evolves with each project — the constant is thinking in terms of pipelines, evaluation metrics, and user value.</p>
51+
<p>Python, SQL, and JavaScript for data and ML. scikit-learn, CatBoost, pandas, NumPy, and Jupyter for modeling and analysis. React, Flask, Leaflet, and Tableau on the product side, plus Git, GitHub Actions, and GitHub Pages to actually ship things. The stack evolves with each project — the constant is thinking in terms of pipelines, evaluation metrics, and user value.</p>
5252
</section>
5353
<section class="narrative-section">
5454
<h2>Proof / demos</h2>
55-
<p>See the full project catalog with live demos, reports, and write-ups: <a href="../projects.html">Projects</a>. Highlights include <a href="../projects/gym-whisper.html">GymWhisper</a> (demo + report), <a href="../projects/house-price-ml.html">House-Price-ML</a> (report), and <a href="../projects/network-impact-analyzer.html">TelusGuardAI</a> (demo + report).</p>
55+
<p>See the full project catalog with live demos, reports, and write-ups: <a href="../projects.html">See all projects →</a>. Highlights include <a href="../projects/gym-whisper.html">GymWhisper</a> (demo + report), <a href="../projects/house-price-ml.html">House-Price-ML</a> (report), and <a href="../projects/network-impact-analyzer.html">TelusGuardAI</a> (demo + report).</p>
56+
<div class="narrative-projects-grid">
57+
<a class="narrative-project-card" href="../projects/network-impact-analyzer.html">
58+
<figure>
59+
<img src="../../assets/projects/TelusGuardAI.png" alt="TelusGuardAI dashboard showing map with impact zones and tower locations">
60+
<figcaption>TelusGuardAI — network impact analyzer (full-stack + multi-agent AI)</figcaption>
61+
</figure>
62+
</a>
63+
<a class="narrative-project-card" href="../projects/gym-whisper.html">
64+
<figure>
65+
<img src="../../assets/projects/GymWhisper.png" alt="GymWhisper app: voice input and workout panel">
66+
<figcaption>GymWhisper — voice-powered workout tracking (React + Gemini API)</figcaption>
67+
</figure>
68+
</a>
69+
<a class="narrative-project-card" href="../projects/customer-churn-dashboard.html">
70+
<figure>
71+
<img src="../../assets/projects/customer-churn-dashboard.png" alt="Customer Churn Tableau dashboard with KPIs and segment views">
72+
<figcaption>Customer Churn Dashboard — SQL → R → Tableau analytics demo</figcaption>
73+
</figure>
74+
</a>
75+
</div>
5676
</section>
5777
</div>
5878

src/styles/main.css

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1277,6 +1277,37 @@ body[data-narrative] .narrative-dated-label {
12771277
margin-bottom: 1.5rem;
12781278
}
12791279

1280+
/* Narrative projects section: small gallery of demo cards */
1281+
.narrative-projects-grid {
1282+
margin-top: 1.1rem;
1283+
display: grid;
1284+
grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
1285+
gap: 1.25rem;
1286+
}
1287+
1288+
.narrative-project-card {
1289+
display: block;
1290+
text-decoration: none;
1291+
color: inherit;
1292+
}
1293+
1294+
.narrative-project-card figure {
1295+
margin: 0;
1296+
}
1297+
1298+
.narrative-project-card img {
1299+
display: block;
1300+
width: 100%;
1301+
border-radius: 8px;
1302+
border: 1px solid rgba(255, 255, 255, 0.08);
1303+
}
1304+
1305+
.narrative-project-card figcaption {
1306+
margin-top: 0.5rem;
1307+
font-size: 0.9rem;
1308+
color: #b8b4ae;
1309+
}
1310+
12801311
.narrative-section h2 {
12811312
font-size: 1rem;
12821313
font-weight: 600;

0 commit comments

Comments
 (0)