Repository navigation
Expand file tree
/
Copy pathindex.html
More file actions
562 lines (525 loc) · 44.4 KB
/
Copy pathindex.html
File metadata and controls
562 lines (525 loc) · 44.4 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
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Marcos Oliveira — Director / VP AI/ML Engineering</title>
<meta name="description" content="Marcos Oliveira — Director / VP AI/ML Engineering. A hands-on AI/ML leader who turns AI strategy into production systems, measurable outcomes, and the confidence to act.">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;0,9..144,600;1,9..144,400;1,9..144,500&family=Inter:wght@400;450;500;600&display=swap" rel="stylesheet">
<style>
:root{
--bone:#F5F2EB;
--bone-2:#EDE9DF;
--card:#FBFAF5;
--navy:#14283C;
--navy-deep:#0E1E2E;
--text:#1E2C38;
--text-soft:#44535F;
--muted:#6C7882;
--gold:#9A7B3C;
--gold-soft:#B79656;
--line:rgba(20,40,60,.14);
--line-strong:rgba(20,40,60,.24);
--line-on-dark:rgba(245,242,235,.15);
--serif:"Fraunces",Georgia,"Times New Roman",serif;
--sans:"Inter",system-ui,sans-serif;
--maxw:1160px;
--pad:clamp(24px,5.5vw,84px);
}
*{box-sizing:border-box;margin:0;padding:0}
body{
font-family:var(--sans);background:var(--bone);color:var(--text);
line-height:1.6;font-weight:400;-webkit-font-smoothing:antialiased;
text-rendering:optimizeLegibility;overflow-x:hidden;
}
a{color:inherit;text-decoration:none}
::selection{background:var(--navy);color:var(--bone)}
.wrap{max-width:var(--maxw);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
section{padding-top:clamp(80px,11vw,156px);padding-bottom:clamp(80px,11vw,156px);position:relative}
/* labels */
.eyebrow{
font-family:var(--sans);font-size:.72rem;font-weight:500;letter-spacing:.24em;
text-transform:uppercase;color:var(--muted);display:block;
}
.eyebrow.gold{color:var(--gold)}
.rule{width:40px;height:1px;background:var(--gold);margin:18px 0 0;border:0}
.dark .eyebrow{color:var(--gold-soft)}
.section-head{max-width:760px;margin-bottom:clamp(48px,6vw,80px)}
.section-head h2{
font-family:var(--serif);font-weight:400;font-optical-sizing:auto;
font-size:clamp(2rem,4.6vw,3.3rem);line-height:1.08;letter-spacing:-.015em;
margin-top:.55em;color:var(--navy);
}
.dark .section-head h2{color:var(--bone)}
.section-head h2 em{font-style:italic;color:var(--gold)}
.dark .section-head h2 em{color:var(--gold-soft)}
.section-head .intro{margin-top:1.2em;font-size:1.12rem;color:var(--text-soft);max-width:60ch;line-height:1.68}
.dark .section-head .intro{color:#AEB9C2}
.dark{background:var(--navy);color:var(--bone)}
/* header */
header.bar{position:sticky;top:0;z-index:60;background:rgba(245,242,235,.82);backdrop-filter:blur(12px);border-bottom:1px solid transparent;transition:border-color .3s,background .3s}
header.bar.scrolled{border-bottom-color:var(--line)}
.bar .wrap{display:flex;align-items:center;justify-content:space-between;height:74px}
.brand{font-family:var(--serif);font-weight:500;font-size:1.2rem;letter-spacing:.01em;color:var(--navy);cursor:pointer;transition:color .2s}
.brand:hover,.brand:focus-visible{color:var(--gold)}
nav.links{display:flex;gap:34px;font-size:.86rem;color:var(--text-soft)}
nav.links a{position:relative;transition:color .25s}
nav.links a::after{content:"";position:absolute;left:0;bottom:-6px;width:0;height:1px;background:var(--gold);transition:width .3s}
nav.links a:hover,nav.links a:focus-visible{color:var(--navy)}
nav.links a:hover::after,nav.links a:focus-visible::after{width:100%}
.cta-mini{font-size:.82rem;color:var(--navy);border:1px solid var(--line-strong);padding:10px 20px;border-radius:2px;transition:all .25s}
.cta-mini:hover,.cta-mini:focus-visible{background:var(--navy);color:var(--bone);border-color:var(--navy)}
@media(max-width:860px){nav.links{display:none}}
/* buttons */
.btn{font-size:.9rem;font-weight:450;padding:15px 30px;border-radius:2px;border:1px solid transparent;transition:all .25s;display:inline-flex;align-items:center;gap:.7em;cursor:pointer}
.btn .ar{transition:transform .25s}
.btn:hover .ar{transform:translateX(4px)}
.btn-primary{background:var(--navy);color:var(--bone)}
.btn-primary:hover,.btn-primary:focus-visible{background:var(--navy-deep)}
.btn-line{border-color:var(--line-strong);color:var(--navy)}
.btn-line:hover,.btn-line:focus-visible{border-color:var(--navy)}
.dark .btn-primary{background:var(--bone);color:var(--navy)}
.dark .btn-primary:hover{background:#fff}
.dark .btn-line{border-color:var(--line-on-dark);color:var(--bone)}
.dark .btn-line:hover{border-color:var(--bone)}
/* hero */
.hero{padding-top:clamp(60px,9vw,120px);padding-bottom:clamp(72px,10vw,140px)}
.hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(40px,6vw,88px);align-items:center}
.hero h1{font-family:var(--serif);font-weight:400;font-size:clamp(2.6rem,6vw,4.4rem);line-height:1.02;letter-spacing:-.025em;color:var(--navy);margin:.5em 0 0}
.hero h1 em{font-style:italic;color:var(--gold)}
.hero .lede{margin-top:1.4em;font-size:1.18rem;line-height:1.7;color:var(--text-soft);max-width:46ch}
.hero .keywords{margin-top:1.5em;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:500}
.hero-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:38px}
.hero-award{margin-top:34px;display:inline-flex;align-items:center;gap:.85em;font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);font-weight:500}
.hero-award::before{content:"";width:26px;height:1px;background:var(--gold)}
.hero-award b{font-weight:500;color:var(--navy)}
.hero-award .org-link{color:var(--navy);border-bottom:1px solid var(--gold);transition:color .2s,border-color .2s}
.hero-award .org-link:hover,.hero-award .org-link:focus-visible{color:var(--gold)}
.hero-trust{margin-top:32px;padding-top:22px;border-top:1px solid var(--line);font-size:.86rem;line-height:1.65;color:var(--text-soft);max-width:48ch}
.hero-trust b{font-weight:600;color:var(--navy)}
.hero-org{margin-top:.5em;font-size:.82rem;line-height:1.55;color:var(--muted);max-width:46ch}
.portrait{width:100%;max-width:340px}
.hero-portrait{width:100%;max-width:340px;height:auto;aspect-ratio:1/1;object-fit:cover;display:block;border-radius:2px;box-shadow:0 30px 60px -30px rgba(14,30,46,.55);border:1px solid var(--line)}
.portrait-cap{margin-top:16px;font-size:.8rem;letter-spacing:.06em;color:var(--text-soft)}
.portrait-cap b{font-family:var(--serif);font-weight:500;font-size:1.02rem;letter-spacing:.01em;display:block;margin-bottom:.15em;color:var(--navy)}
@media(max-width:820px){
.hero-grid{grid-template-columns:1fr;gap:40px}
.portrait{margin:0 auto}
}
/* about */
#about{background:var(--bone-2)}
.about-grid{display:grid;grid-template-columns:300px 1fr;gap:clamp(24px,5vw,80px);align-items:start}
.about-grid .eyebrow{padding-top:.5em}
.about-body p{font-family:var(--serif);font-weight:400;font-size:clamp(1.3rem,2.6vw,1.7rem);line-height:1.5;letter-spacing:-.01em;color:var(--navy)}
.about-body p + p{margin-top:1em;font-size:1.06rem;font-family:var(--sans);color:var(--text-soft);line-height:1.75;letter-spacing:0}
.about-sign{margin-top:2.4em;font-size:.82rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
@media(max-width:760px){.about-grid{grid-template-columns:1fr;gap:24px}}
/* approach */
.golden{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(28px,4vw,60px)}
.gc{border-top:1px solid var(--line-strong);padding-top:26px}
.gc-k{font-family:var(--serif);font-style:italic;font-size:1.3rem;color:var(--gold);display:block;margin-bottom:.7em}
.gc p{font-size:1.04rem;color:var(--text-soft);line-height:1.66}
@media(max-width:760px){.golden{grid-template-columns:1fr;gap:30px}}
/* values */
.values{display:flex;flex-direction:column}
.val{display:grid;grid-template-columns:280px 1fr;gap:clamp(16px,3vw,56px);padding:clamp(28px,3.6vw,40px) 0;border-top:1px solid var(--line-on-dark);align-items:baseline}
.val:last-child{border-bottom:1px solid var(--line-on-dark)}
.val .name{display:flex;align-items:baseline;gap:.7em}
.val .num{font-family:var(--serif);font-style:italic;font-size:1.05rem;color:var(--gold-soft)}
.val h3{font-family:var(--serif);font-weight:500;font-size:1.75rem;color:var(--bone);letter-spacing:-.01em}
.val p{font-size:1.04rem;color:#AEB9C2;line-height:1.68;max-width:62ch}
@media(max-width:760px){.val{grid-template-columns:1fr;gap:10px}}
/* services */
.svcs{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(40px,6vw,90px)}
.svc{display:grid;grid-template-columns:auto 1fr;gap:22px;padding:30px 0;border-top:1px solid var(--line)}
.svc .ix{font-family:var(--serif);font-size:.95rem;color:var(--gold);padding-top:.35em}
.svc h3{font-family:var(--serif);font-weight:500;font-size:1.32rem;letter-spacing:-.01em;color:var(--navy);line-height:1.2}
.svc p{font-size:.98rem;color:var(--text-soft);margin-top:.5em;line-height:1.62}
@media(max-width:760px){.svcs{grid-template-columns:1fr}}
/* track record */
.figs{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,4vw,64px)}
.fig{border-top:1px solid var(--line-on-dark);padding-top:28px}
.fig .k{font-size:.74rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-soft)}
.fig .v{font-family:var(--serif);font-weight:400;font-size:clamp(2.6rem,6vw,3.9rem);line-height:1;letter-spacing:-.02em;color:var(--bone);margin-top:24px}
.fig .v .small{font-size:.42em;color:#9FB0BC;font-style:italic;font-family:var(--serif)}
.fig .v .ar{color:var(--gold-soft);font-style:normal;margin:0 .12em}
.fig .note{font-size:.9rem;color:#9FB0BC;margin-top:16px;line-height:1.5}
@media(max-width:760px){.figs{grid-template-columns:1fr;gap:34px}}
.sec-stats{margin-top:clamp(54px,7vw,88px);border-top:1px solid var(--line-on-dark);padding-top:36px;display:grid;grid-template-columns:repeat(3,1fr);gap:30px clamp(30px,4vw,60px)}
.sec-stats .s b{font-family:var(--serif);font-weight:500;font-size:1.5rem;color:var(--bone);display:block;letter-spacing:-.01em}
.sec-stats .s span{font-size:.86rem;color:#9FB0BC;line-height:1.5;display:block;margin-top:.35em}
@media(max-width:680px){.sec-stats{grid-template-columns:1fr 1fr;gap:26px}}
/* experience */
.career{display:flex;flex-direction:column}
.ce{display:grid;grid-template-columns:150px 1fr;gap:clamp(14px,3vw,56px);padding:clamp(26px,3.4vw,36px) 0;border-top:1px solid var(--line);align-items:baseline}
.ce:last-child{border-bottom:1px solid var(--line)}
.ce-when{font-size:.84rem;letter-spacing:.06em;color:var(--gold)}
.ce-main h3{font-family:var(--serif);font-weight:500;font-size:1.26rem;letter-spacing:-.01em;color:var(--navy);line-height:1.3}
.ce-org{font-family:var(--sans);color:var(--muted);font-weight:400;font-size:.92rem}
.ce-main p{font-size:.98rem;color:var(--text-soft);margin-top:.55em;line-height:1.64;max-width:64ch}
.ce-award{margin-top:1em;font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);display:inline-flex;align-items:center;gap:.7em;font-weight:500}
.ce-award::before{content:"";width:20px;height:1px;background:var(--gold)}
@media(max-width:680px){.ce{grid-template-columns:1fr;gap:8px}}
/* how I work */
.modes{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(28px,4vw,56px)}
.mode{border-top:1px solid var(--line);padding-top:28px}
.mode .tag{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold)}
.mode h3{font-family:var(--serif);font-weight:500;font-size:1.4rem;color:var(--navy);margin:.6em 0 .5em;letter-spacing:-.01em}
.mode p{font-size:.98rem;color:var(--text-soft);line-height:1.66}
@media(max-width:760px){.modes{grid-template-columns:1fr;gap:30px}}
/* credentials */
#credentials{background:var(--bone-2)}
.creds{display:grid;grid-template-columns:1fr 1fr;gap:clamp(40px,6vw,90px);align-items:start}
.cred-block h3{font-size:.76rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin-bottom:1.6em}
.qual .row{border-bottom:1px solid var(--line);padding-bottom:1.3em;margin-bottom:1.3em}
.qual .row:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}
.qual b{font-family:var(--serif);font-weight:500;font-size:1.18rem;color:var(--navy);display:block;letter-spacing:-.01em}
.qual span{color:var(--muted);font-size:.94rem}
.cred-wide{grid-column:1 / -1}
.caps{font-size:1.02rem;line-height:2;color:var(--text-soft)}
.cred-wide .caps{line-height:1.85;font-size:.98rem}
.caps b{color:var(--navy);font-weight:500}
@media(max-width:760px){.creds{grid-template-columns:1fr;gap:48px}}
/* projects */
.project-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,3vw,36px)}
@media(max-width:980px){.project-grid{grid-template-columns:1fr 1fr}}
@media(max-width:680px){.project-grid{grid-template-columns:1fr}}
.project-card{border:1px solid var(--line);border-radius:6px;padding:clamp(24px,2.6vw,30px);display:flex;flex-direction:column;gap:14px;background:#fff}
.project-card h3{font-family:var(--serif);font-weight:500;font-size:1.14rem;color:var(--navy);letter-spacing:-.01em;line-height:1.3}
.project-desc{font-size:.92rem;line-height:1.6;color:var(--text-soft)}
.tech-chips{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:0}
.tech-chips li{font-size:.72rem;letter-spacing:.04em;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:4px 11px}
.project-result{font-size:.86rem;line-height:1.6;color:var(--text-soft);margin-top:auto;padding-top:14px;border-top:1px solid var(--line)}
.project-link{font-size:.84rem;font-weight:500;color:var(--navy);border-bottom:1px solid var(--gold);align-self:flex-start;transition:color .2s,border-color .2s}
.project-link:hover,.project-link:focus-visible{color:var(--gold)}
.project-all{display:inline-block;margin-top:clamp(30px,4vw,44px);font-size:.9rem;font-weight:500;color:var(--navy);border-bottom:1px solid var(--gold)}
.project-all:hover,.project-all:focus-visible{color:var(--gold)}
/* contact */
.contact h2{font-family:var(--serif);font-weight:400;font-size:clamp(2.2rem,5.4vw,3.8rem);line-height:1.05;letter-spacing:-.02em;color:var(--bone);max-width:18ch}
.contact h2 em{font-style:italic;color:var(--gold-soft)}
.contact .intro{color:#AEB9C2;max-width:52ch;margin-top:1.2em;font-size:1.12rem;line-height:1.7}
.contact-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:42px}
.contact-rows{margin-top:64px;border-top:1px solid var(--line-on-dark);padding-top:32px;display:flex;flex-wrap:wrap;gap:24px 64px;font-size:.92rem}
.contact-rows span{display:block;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-soft);margin-bottom:.7em}
.contact-rows a{color:var(--bone);border-bottom:1px solid transparent;transition:border-color .2s;padding-bottom:2px}
.contact-rows a:hover,.contact-rows a:focus-visible{border-color:var(--gold-soft)}
footer.foot{background:var(--navy-deep);color:#7E8B96;padding:34px 0;font-size:.8rem}
footer.foot .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px}
footer.foot .brand-f{font-family:var(--serif);color:var(--bone);font-size:.95rem}
/* reveal */
.reveal{opacity:0;transform:translateY(16px);transition:opacity 1s cubic-bezier(.2,.7,.2,1),transform 1s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:none}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
@media(prefers-reduced-motion:reduce){
html{scroll-behavior:auto}
.reveal{opacity:1;transform:none;transition:none}
.btn .ar{transition:none}
}
html{scroll-behavior:smooth}
</style>
</head>
<body>
<header class="bar" id="bar">
<div class="wrap">
<a class="brand" href="#top">Marcos Oliveira</a>
<nav class="links" aria-label="Primary">
<a href="#about">About</a>
<a href="#values">Values</a>
<a href="#approach">Approach</a>
<a href="#services">Services</a>
<a href="#record">Track record</a>
<a href="#projects">Projects</a>
<a href="#credentials">Credentials</a>
</nav>
<a class="cta-mini" href="#contact">Get in touch</a>
</div>
</header>
<!-- HERO -->
<section class="hero" id="top">
<div class="wrap">
<div class="hero-grid">
<div>
<span class="eyebrow gold">Director / VP AI/ML Engineering · MBA · 20 years</span>
<hr class="rule">
<h1>I help teams move from AI ambition to <em>production.</em></h1>
<p class="lede">I give CTOs and founders the AI leadership of a hands-on VP — the strategy, the architecture, and the data to back it — turning agentic AI and MLOps into systems that ship and outcomes you can measure.</p>
<p class="keywords">Agentic AI · LLMOps · MLOps · Multi-Cloud (AWS + Azure) · FinTech · Team Leadership</p>
<div class="hero-actions">
<a class="btn btn-primary" href="#contact">Talk to me about your AI roadmap <span class="ar">→</span></a>
<a class="btn btn-line" href="#approach">See how I work <span class="ar">→</span></a>
</div>
<p class="hero-trust">Led AI/ML engineering and global delivery for <b>Canada's largest financial institutions</b> — driving <b>−65%</b> manual processing time with production AI.</p>
<p class="hero-award"><b>VP AI/ML Engineering</b> · <a class="org-link" href="https://www.block64.com/" target="_blank" rel="noopener">Block 64</a></p>
<p class="hero-org">A Canadian IT asset-intelligence platform — visibility across on-prem, cloud, SaaS & licensing.</p>
</div>
<figure class="portrait">
<img class="hero-portrait"
src="assets/marcos-portrait-800.jpg"
srcset="assets/marcos-portrait-400.jpg 400w,
assets/marcos-portrait-800.jpg 800w"
sizes="(max-width: 640px) 60vw, 340px"
alt="Marcos Oliveira, Director / VP AI/ML Engineering"
width="800" height="800">
<figcaption class="portrait-cap"><b>Marcos Oliveira</b>Director / VP AI/ML Engineering</figcaption>
</figure>
</div>
</div>
</section>
<!-- ABOUT -->
<section id="about">
<div class="wrap">
<div class="about-grid reveal">
<span class="eyebrow gold">About</span>
<div class="about-body">
<p>For more than twenty years I've worked where engineering meets the decision — leading software and AI/ML organizations across SaaS and enterprise. Today I lead a cross-functional AI/ML team at Block 64, building across security, modern work and infrastructure.</p>
<p>Before that I spent over a decade at Lexmark Canada and Hewlett-Packard Canada, directing global managed-services delivery and full-lifecycle software rollouts for Canada's largest financial institutions — work that ran under the governance and internal-control standards those environments demand. I hold a double-degree MBA from the Rotman School of Management & Business School São Paulo (BSP) and a B.Sc. in Computer Science from Universidade Ibirapuera in Brazil. I hire and grow the best talent, build agile teams organically, and stay close to the detail — deep-diving with teams to raise standards and ship. I'm driven by collective success, I champion innovation and simpler processes, and I believe in continuous learning. A believer in social equity, I support United Way in the Greater Toronto Area.</p>
<div class="about-sign">Marcos Oliveira · Director / VP AI/ML Engineering · MBA, Rotman</div>
</div>
</div>
</div>
</section>
<!-- VALUES -->
<section id="values" class="dark">
<div class="wrap">
<div class="section-head reveal">
<span class="eyebrow">What I stand by</span>
<h2>Five values that drive how I <em>lead and decide.</em></h2>
<p class="intro">Leadership done right isn't about control — it's about clarity, connection and consistency. These are the principles I live by, and they show up in every decision, conversation and engagement.</p>
</div>
<div class="values reveal">
<div class="val"><div class="name"><span class="num">I</span><h3>Trust</h3></div><p>A single source of truth — no filters, no spin. In an appraisal, a board meeting or a transaction, I give direct, honest feedback. Trust is built through consistency, not words.</p></div>
<div class="val"><div class="name"><span class="num">II</span><h3>Speed</h3></div><p>If you don't act, your competitor will. Not rushing — moving with context, confidence and focus. Standing still is falling behind.</p></div>
<div class="val"><div class="name"><span class="num">III</span><h3>Growth</h3></div><p>Education × innovation = growth — for a business and for a person. Learn by doing, stay curious, keep applying. The leaders who grow are the ones who never stop learning.</p></div>
<div class="val"><div class="name"><span class="num">IV</span><h3>Heart</h3></div><p>Empathy and emotional intelligence aren't soft skills; they're leadership skills. Care about people, their development and their wellbeing — and they give you their best because they want to.</p></div>
<div class="val"><div class="name"><span class="num">V</span><h3>Unity</h3></div><p>No goal is achieved alone. Whether building a team or deploying AI across a business, bring people with you, give them ownership, and make them part of the story.</p></div>
</div>
</div>
</section>
<!-- APPROACH -->
<section id="approach">
<div class="wrap">
<div class="section-head reveal">
<span class="eyebrow gold">Approach</span>
<h2>Start with <em>why.</em> Prove it with data.</h2>
<p class="intro">My leadership style follows Simon Sinek's "Start With Why" — leading with purpose, then making the impact with data, reporting and the evidence that influences the decision. Increasingly, that means leading the shift from the traditional SDLC to an <b>Agentic Development Lifecycle (ADLC)</b> — an AI-driven delivery model where agentic workflows speed execution without loosening governance.</p>
</div>
<div class="golden reveal">
<div class="gc"><span class="gc-k">The belief</span><p>A team should never have to guess. Good AI leadership replaces hype with evidence, and gives leaders the confidence to act on it.</p></div>
<div class="gc"><span class="gc-k">The method</span><p>Start with the outcome that matters. Then bring the architecture, the data and the reporting that drive the decision — made clear enough for non-technical leaders to own.</p></div>
<div class="gc"><span class="gc-k">The work</span><p>Director and VP-level AI leadership for CTOs and founders of mid-sized to large companies — across agentic AI, RAG, MLOps and responsible AI governance.</p></div>
</div>
</div>
</section>
<!-- SERVICES -->
<section id="services">
<div class="wrap">
<div class="section-head reveal">
<span class="eyebrow gold">What I do</span>
<h2>Six places I move the needle.</h2>
<p class="intro">Engagements are scoped to the problem in front of you — an AI strategy, a production platform, an agentic system, or ongoing leadership. Each is something I've owned end to end.</p>
</div>
<div class="svcs reveal">
<div class="svc"><span class="ix">I</span><div><h3>AI-First strategy & roadmaps</h3><p>Translating complex AI ambition into a technical roadmap aligned to business outcomes — revenue, retention and operational efficiency — with P&L ownership.</p></div></div>
<div class="svc"><span class="ix">II</span><div><h3>Agentic & generative AI</h3><p>LLM integration, RAG pipelines, multi-agent systems and LLMOps with LangChain / LangGraph — built with runtime guardrails, not demos.</p></div></div>
<div class="svc"><span class="ix">III</span><div><h3>MLOps & AI/ML platforms</h3><p>Feature stores, model serving and full CI/CD/CT pipelines with MLflow — cutting deployment cycles from weeks to days.</p></div></div>
<div class="svc"><span class="ix">IV</span><div><h3>Dual-cloud architecture</h3><p>Hands-on AI/ML platforms across AWS (SageMaker, Bedrock) and Azure (ML Studio, Microsoft Foundry, AI Search), built for production scale.</p></div></div>
<div class="svc"><span class="ix">V</span><div><h3>Responsible AI & governance</h3><p>Model observability, drift detection and SOC 2 Type II compliance across production AI — governance you can stand behind.</p></div></div>
<div class="svc"><span class="ix">VI</span><div><h3>Engineering leadership</h3><p>Building and scaling high-performing AI/ML organizations (20+) with low attrition, and instituting Scrum ceremonies and sprint cadence — cutting lead time 25% and reducing change failure rate 35%.</p></div></div>
</div>
</div>
</section>
<!-- TRACK RECORD -->
<section id="record" class="dark">
<div class="wrap">
<div class="section-head reveal">
<span class="eyebrow">Track record</span>
<h2>When purpose leads and the data backs it, the <em>numbers move.</em></h2>
<p class="intro">A few of the decisions I've helped shape leading AI engineering and global transformation — and what changed as a result.</p>
</div>
<div class="figs reveal">
<div class="fig"><div class="k">Manual processing time</div><div class="v"><span class="ar">−</span>65<span class="small">%</span></div><div class="note">LLM document intelligence, enabling 3× higher document volumes with no added headcount.</div></div>
<div class="fig"><div class="k">Model deployment cycles</div><div class="v"><span class="small">weeks</span> <span class="ar">→</span> days</div><div class="note">Dual-cloud platforms on AWS & Azure, with ML infrastructure costs cut by 30%.</div></div>
<div class="fig"><div class="k">Production AI incidents</div><div class="v"><span class="ar">−</span>45<span class="small">%</span></div><div class="note">Runtime guardrails and real-time observability; drift detection from days to hours.</div></div>
</div>
<div class="sec-stats reveal">
<div class="s"><b>+35% velocity</b><span>sprint velocity, with NPS up 18%</span></div>
<div class="s"><b>20+ team</b><span>cross-functional AI/ML org, <5% attrition</span></div>
<div class="s"><b>+10% revenue</b><span>new AI-powered subscription models</span></div>
<div class="s"><b>1,200 servers</b><span>migrated to Azure, TCO −25%, 99.9% uptime</span></div>
<div class="s"><b>SOC 2 Type II</b><span>compliance across production AI systems</span></div>
<div class="s"><b>−70% release cycles</b><span>AKS + CI/CD, 600+ engineering hours / yr saved</span></div>
</div>
</div>
</section>
<!-- EXPERIENCE -->
<section id="experience">
<div class="wrap">
<div class="section-head reveal">
<span class="eyebrow gold">Where I've done it</span>
<h2>Operating experience, not just advice.</h2>
</div>
<div class="career reveal">
<div class="ce"><div class="ce-when">2023 — Now</div><div class="ce-main"><h3>VP, AI/ML Engineering <span class="ce-org">· Block 64, Toronto, ON</span></h3><p>Defined and executed the AI-First transformation strategy while staying hands-on in architecture — building a 20+ member AI/ML organization with 4 senior leaders reporting in; and dual-cloud platforms on AWS and Azure, with revenue up 10% through new AI-powered subscription models.</p><p>Introduced GenAI-powered, agentic AI ecosystems and embedded Claude Code into delivery workflows, lifting delivery velocity 35% and NPS 18%.</p><p class="ce-award">AI-First Transformation · Block 64</p></div></div>
<div class="ce"><div class="ce-when">2022 — 2023</div><div class="ce-main"><h3>Director, Software Engineering <span class="ce-org">· Block 64, Toronto, ON</span></h3><p>Owned a $5M cloud and AI platform portfolio across AWS and Azure, grew the team from 12 to 20+ with under 5% attrition, and introduced AI-assisted delivery practices that improved predictability 35% and reduced defects per sprint 10%.</p><p>Rearchitected infrastructure from legacy AWS IaaS/on-premises to Azure PaaS/Serverless, cutting infrastructure costs 30% while introducing SOC 2 Type II compliance and outsourcing infra maintenance to a managed services partner — freeing engineering to focus fully on product and system-architecture improvements.</p></div></div>
<div class="ce"><div class="ce-when">2018 — 2021</div><div class="ce-main"><h3>Global Transformation Lead <span class="ce-org">· Lexmark Canada, Markham, ON</span></h3><p>Led delivery across a $100M+ global managed services portfolio, managing the Americas, EMEA, and APAC teams on a follow-the-sun model — with clear onshore/offshore handoff discipline and lifting client CSAT to 80% (5 to 9/10).</p><p>Implemented an IoT ML-driven predictive-maintenance service to a major Canadian bank from a phased pilot-to-mass-deployment rollout across a 15,000-device fleet — lifting SLA response time 35%, helping secure a multi-year global contract renewal.</p></div></div>
<div class="ce"><div class="ce-when">2015 — 2018</div><div class="ce-main"><h3>Global Delivery Manager <span class="ce-org">· Hewlett-Packard Canada, Toronto, ON</span></h3><p>Owned delivery across a $75M+ global managed-services contract serving a major Canadian bank, spanning the Americas, Europe and the Caribbean teams.</p><p>Directed enterprise IT transformation and cloud migration — reducing data-center costs 20% and increasing system availability 25% under enterprise governance, SLA/OLA, and control standards, while leading cross-functional teams across operations, procurement, and billing.</p></div></div>
<div class="ce"><div class="ce-when">2011 — 2015</div><div class="ce-main"><h3>Technology & Solutions Architect <span class="ce-org">· Hewlett-Packard Canada, Toronto, ON</span></h3><p>Delivered SOW-based digital workflow transformations for financial-services clients, operating within regulated financial-services governance and internal-control frameworks — compressing process cycle times from a day to 45 minutes and generating $500K in annual savings. Improved operational productivity by 20% through custom system redesign and automated data capture.</p><p>Advised enterprise clients on consultancy model architecture and digital transformation strategy — including embedded imaging/printing hardware and firmware for banking, insurance, legal, healthcare, and government workflows — building familiarity with regulated delivery models and internal control standards.</p></div></div>
<div class="ce"><div class="ce-when">2009 — 2010</div><div class="ce-main"><h3>Business Development Manager <span class="ce-org">· EcoCarrier Telecom, Markham, ON</span></h3><p>Created successful business development, sales, and marketing activities for the Telecom industry, offering a unique managed services portfolio focused on the international wholesale market for voice, text, and data roaming services — resulting in a 10% increase in market share YoY.</p></div></div>
<div class="ce"><div class="ce-when">2000 — 2008</div><div class="ce-main"><h3>Pre-Sales Engineer & Consultant <span class="ce-org">· Lexmark Brazil & HP Brazil, São Paulo, SP</span></h3><p>Drove both go-to-market motions: direct pre-sales consulting (RFP/RFQ responses, POCs, Sales Pursuit Teams) into banking, insurance, legal, healthcare, and government accounts; and partner-channel enablement focused on SMB — training the partner network on the solution portfolio and running channel-side pilots and POCs.</p></div></div>
</div>
</section>
<!-- PROJECTS -->
<section id="projects">
<div class="wrap">
<div class="section-head reveal">
<span class="eyebrow gold">Projects</span>
<h2>Things I've <em>built</em>, not just led.</h2>
<p class="intro">Hands-on builds — agentic systems, evaluation harnesses, cloud-native architecture. Code is public; each links straight to the repo.</p>
</div>
<div class="project-grid reveal">
<article class="project-card">
<h3>Real-Time Video Surveillance on Azure AI Vision</h3>
<p class="project-desc">A cost-aware, end-to-end video surveillance and alerting system — browser or IP camera capture, per-frame Vision analysis, live WebSocket alerts plus email/SMS. Built solo in two weeks, deployed via a single resumable CLI with zero portal clicks.</p>
<ul class="tech-chips">
<li>Azure AI Vision</li><li>Azure Functions</li><li>Container Apps</li><li>FastAPI</li><li>React/TypeScript</li><li>Bicep</li>
</ul>
<p class="project-result">Serverless-first architecture where only storage and the Vision resource run continuously — compute scales to zero. Pluggable analyzer interface allows a Custom Vision or YOLO detector swap without touching capture, alerting, or deployment. Root-caused a Google SDM API limitation on WebRTC video against real multi-camera hardware.</p>
<a class="project-link" href="https://github.com/MAOFILHO/Portfolio-Projects/tree/main/Azure-RealTime-Video-Surveillance" target="_blank" rel="noopener">View on GitHub →</a>
</article>
<article class="project-card">
<h3>Monolith → Microservices: A Live Strangler Fig Cutover</h3>
<p class="project-desc">The same e-commerce application running two ways — one Flask monolith on a shared database, and three independently deployable services each owning its own. Trigger the migration and watch a real cutover happen, not an animation.</p>
<ul class="tech-chips">
<li>Python</li><li>Flask</li><li>FastAPI</li><li>React/TypeScript</li><li>Azure Container Apps</li><li>BFF proxy routing</li><li>Anti-Corruption Layer</li>
</ul>
<p class="project-result">Proxy-based traffic shifting with shadow testing and staged live-percentage cutover. Identical behaviour verified on both architectures by an automated smoke suite. Cross-service auth implemented as a real HTTP boundary rather than a shared database read.</p>
<a class="project-link" href="https://github.com/MAOFILHO/Portfolio-Projects/tree/main/Azure-Ecommerce-Monolith-Microservices-Migration" target="_blank" rel="noopener">View on GitHub →</a>
</article>
<article class="project-card">
<h3>Agent Orchestration: 10-Protocol Benchmark</h3>
<p class="project-desc">A production-grade multi-agent customer support system, then a head-to-head benchmark of ten inter-service communication protocols — each wired into a real specialist agent's tool-calling loop rather than a synthetic microbenchmark.</p>
<ul class="tech-chips">
<li>LangGraph</li><li>MCP</li><li>Google A2A</li><li>REST</li><li>GraphQL</li><li>gRPC</li><li>WebSocket</li><li>MQTT</li><li>AMQP</li><li>SOAP</li><li>Webhook</li><li>FAISS</li><li>LangSmith</li><li>Langfuse</li>
</ul>
<p class="project-result">Supervisor routing with deterministic quick-answer bypass for roughly a third of tickets — no LLM call where none is warranted. Human-in-the-loop escalation via graph interrupts, PII redaction before model exposure, cross-session memory. Shared fault-injection and timing seam makes all ten protocols directly comparable.</p>
<a class="project-link" href="https://github.com/MAOFILHO/AgenticAI-Projects/tree/main/LangGraph-ShopSmart-10-Protocols-Benchmark" target="_blank" rel="noopener">View on GitHub →</a>
</article>
<article class="project-card">
<h3>Eval Harness: 7 RAG Patterns, One Scoring Framework</h3>
<p class="project-desc">Seven RAG architectures benchmarked against the same 40-question dataset and corpus, scored by a common harness — then wired into CI so quality regressions fail the build automatically.</p>
<ul class="tech-chips">
<li>LangChain/LangGraph</li><li>FAISS</li><li>ChromaDB</li><li>RAGAS</li><li>LLM-as-judge</li><li>GitHub Actions</li>
</ul>
<p class="project-result">Retrieval metrics (Hit Rate, MRR, nDCG) plus generation metrics (groundedness, hallucination rate) and RAGAS scores across every pattern. Regression check exits non-zero when any metric drops beyond threshold or hallucination rate climbs — the guardrail that lets a fast-moving team ship without silently degrading.</p>
<a class="project-link" href="https://github.com/MAOFILHO/AgenticAI-Projects/tree/main/LangChain-RAG-Patterns-Benchmark" target="_blank" rel="noopener">View on GitHub →</a>
</article>
<article class="project-card">
<h3>Five Agent Frameworks, One Compliance Pipeline</h3>
<p class="project-desc">The same regulatory reporting pipeline implemented five times — LangGraph, OpenAI Agents SDK, CrewAI, AutoGen, and Google ADK — then compared on architecture, timing, and orchestration model.</p>
<ul class="tech-chips">
<li>LangGraph</li><li>OpenAI Agents SDK</li><li>CrewAI</li><li>AutoGen</li><li>Google ADK</li><li>LangSmith</li>
</ul>
<p class="project-result">Parallel specialist fan-out with an evaluator loop that iterates each section until numerical accuracy, terminology, and cross-reference checks pass. Human review gate before final output. Side-by-side runtime and LLM-call comparison across all five — a framework-selection decision grounded in measurement rather than preference.</p>
<a class="project-link" href="https://github.com/MAOFILHO/AgenticAI-Projects/tree/main/Compare-ADK-Frameworks-Bank-Compliance" target="_blank" rel="noopener">View on GitHub →</a>
</article>
<article class="project-card">
<h3>AWS Bedrock AgentCore: Memory, RAG and a Secured Gateway</h3>
<p class="project-desc">An autonomous support agent on Bedrock AgentCore with cross-session memory retention, contextual retrieval, and a JWT-secured tool gateway — fully provisioned as code.</p>
<ul class="tech-chips">
<li>AWS Bedrock AgentCore</li><li>Bedrock Knowledge Bases</li><li>MCP</li><li>OpenTelemetry</li><li>CloudFormation</li>
</ul>
<p class="project-result">Full telemetry instrumentation across the agent lifecycle. Architecture projects a 30–50% structural compute cost reduction versus always-on inference hosting.</p>
<a class="project-link" href="https://github.com/MAOFILHO/Portfolio-Projects/tree/main/AWS-Agentcore-Customer-Support-Agent" target="_blank" rel="noopener">View on GitHub →</a>
</article>
</div>
<a class="project-all" href="https://github.com/MAOFILHO" target="_blank" rel="noopener">All repositories →</a>
</div>
</section>
<!-- CREDENTIALS -->
<section id="credentials">
<div class="wrap">
<div class="section-head reveal">
<span class="eyebrow gold">Credentials</span>
<h2>Qualified, and current.</h2>
</div>
<div class="creds reveal">
<div class="cred-block">
<h3>Qualifications</h3>
<div class="qual">
<div class="row"><b>MBA, International Business</b><span>Rotman School of Management & Business School São Paulo (BSP)</span></div>
<div class="row"><b>B.Sc. Computer Science</b><span>Universidade Ibirapuera, Brazil</span></div>
</div>
</div>
<div class="cred-block">
<h3>Certifications & Executive Education</h3>
<div class="qual">
<div class="row"><b>PMP & SAFe Agilist</b><span>CSP-ScrumMaster</span></div>
<div class="row"><b>ITIL v4 Foundation & Prosci/ADKAR</b><span>Service management & change management</span></div>
<div class="row"><b>MIT Executive Education</b><span>No-Code AI and ML · Digital Transformation</span></div>
</div>
</div>
<div class="cred-block">
<h3>Cloud & AI/ML Certifications</h3>
<div class="qual">
<div class="row"><b>AWS Solutions Architect Associate</b><span>SAA-C02</span></div>
<div class="row"><b>Microsoft Azure AI Engineer Associate</b><span>AI-102</span></div>
<div class="row"><b>Microsoft Azure AI Fundamentals</b><span>AI-901</span></div>
<div class="row"><b>Microsoft Azure Fundamentals</b><span>AZ-900</span></div>
<div class="row"><b>Microsoft AI Transformational Leader</b><span>AB-731</span></div>
</div>
</div>
<div class="cred-block cred-wide">
<h3>Tools & systems</h3>
<p class="caps"><b>Cloud Platforms</b> — AWS (Bedrock, SageMaker, Lambda, EventBridge, Step Functions, CloudWatch), Azure (Microsoft Foundry, Azure AI Search, AKS, Container Apps, Functions, Logic Apps).<br><b>GenAI & LLM Engineering</b> — LangChain, LangGraph, MCP, Google A2A, CrewAI, AutoGen, RAG, Multi-Agent Orchestration, Claude Code CLI, OpenAI Codex API (Automated PR Reviews), Pydantic (Structured Outputs), Anthropic Claude, OpenAI GPT, Azure OpenAI.<br><b>Data Science & ML</b> — Python (Pandas, NumPy, Scikit-learn, TensorFlow, PyTorch), Statistical Modelling, A/B Testing, Feature Stores.<br><b>Data & Integration</b> — PostgreSQL, SQL & NoSQL (DynamoDB), Vector Databases (Pinecone, ChromaDB, FAISS), ETL/ELT Pipelines, REST, GraphQL, gRPC.<br><b>CI/CD & Pipeline Infrastructure</b> — GitHub Actions, Azure DevOps, Jenkins, Octopus Deploy, Docker, Kubernetes (AKS), Terraform, Bicep, CloudFormation, DORA Metrics Alignment.<br><b>Progressive Delivery & Feature Control</b> — OpenFeature Architecture, Octopus Deploy Flags SDK, Runtime Targeting Gates & Circuit Breakers.<br><b>Observability & Reliability</b> — OpenTelemetry, LangSmith, Langfuse, Elasticsearch, Application Insights, Azure Monitor, CloudWatch, SLO/SLA Instrumentation.<br><b>Testing & Quality Automation</b> — pytest, Vitest, LLM Evals (RAGAS, LLM-as-Judge), CI Regression Gates.<br><b>AI/ML Platform & MLOps</b> — MLflow (Tracking, Model Registry), SageMaker Endpoints, Azure ML Endpoints, Model & Data Drift Detection, Experiment Tracking & Model Versioning.<br><b>Governance & Compliance Frameworks</b> — SOC 2 Type II (Drata), NIST AI RMF, Credo AI, ISO 27001 & ISO 42001 (in progress, target 2028), Responsible AI Governance, SLA/OLA Management, ITIL v4.</p>
</div>
</div>
</div>
</section>
<!-- CONTACT -->
<section id="contact" class="dark contact">
<div class="wrap">
<div class="reveal">
<span class="eyebrow">Get in touch</span>
<h2>Tell me the <em>outcome</em> you need AI to deliver.</h2>
<p class="intro">An AI strategy, a production platform, an agentic system, or an AI/ML team that needs leadership — start with a short call and we'll work out whether I'm the right fit.</p>
<div class="contact-actions">
<a class="btn btn-primary" href="mailto:marcosoliveira.connect@gmail.com?subject=Director%2FVP%20of%20AI%20enquiry">Email me <span class="ar">→</span></a>
<a class="btn btn-line" href="https://www.linkedin.com/in/mfilho1/" target="_blank" rel="noopener">Connect on LinkedIn</a>
</div>
<div class="contact-rows">
<div><span>Email</span><a href="mailto:marcosoliveira.connect@gmail.com">marcosoliveira.connect@gmail.com</a></div>
<div><span>LinkedIn</span><a href="https://www.linkedin.com/in/mfilho1/" target="_blank" rel="noopener">linkedin.com/in/mfilho1</a></div>
<div><span>GitHub</span><a href="https://github.com/MAOFILHO" target="_blank" rel="noopener">github.com/MAOFILHO</a></div>
<div><span>Based in</span>Greater Toronto Area</div>
</div>
</div>
</div>
</section>
<footer class="foot">
<div class="wrap">
<span class="brand-f">Marcos Oliveira</span>
<span>Director / VP AI/ML Engineering · MLOps & Agentic AI · MBA</span>
</div>
</footer>
<script>
(function(){
var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
var bar = document.getElementById('bar');
window.addEventListener('scroll', function(){
if(window.scrollY > 8) bar.classList.add('scrolled'); else bar.classList.remove('scrolled');
}, {passive:true});
var reveals = document.querySelectorAll('.reveal');
if(reduce || !('IntersectionObserver' in window)){
reveals.forEach(function(el){el.classList.add('in');});
} else {
var ro = new IntersectionObserver(function(entries){
entries.forEach(function(e){ if(e.isIntersecting){ e.target.classList.add('in'); ro.unobserve(e.target); } });
},{threshold:.14});
reveals.forEach(function(el){ro.observe(el);});
}
})();
</script>
</body>
</html>