814 lines
33 KiB
HTML
814 lines
33 KiB
HTML
---
|
||
title: "Resume"
|
||
layout: "single"
|
||
url: /about/resume/
|
||
---
|
||
|
||
<style>
|
||
/* resume.css — Classicthesis-inspired résumé stylesheet
|
||
*
|
||
* Web-native translation of the LaTeX classicthesis aesthetic:
|
||
* Palatino serif, maroon accents, spaced small caps headings,
|
||
* margin-note grid layout for employer/institution names.
|
||
*
|
||
* Aligned with resume.sty — geometry, spacing constants, and
|
||
* typographic commands mirror the LaTeX counterparts.
|
||
*/
|
||
|
||
/* Font Awesome — loaded for contact service icons (fa-envelope, fa-github, etc.)
|
||
Mirrors \RequirePackage{fontawesome5} in resume.sty */
|
||
@import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css");
|
||
|
||
/* ====================================================================
|
||
Custom properties
|
||
(mirrors \resumeSectionSkip, \resumeEntrySkip, \resumeBlockSkip,
|
||
\resumeDescriptionSkip, \resumePositionSkip, \datebox widths, and
|
||
the geometry: marginparwidth=4cm, marginparsep=0.75cm → ~15em / 1.4em
|
||
at 10pt base. Numbers scaled to a 16px/1rem web base.)
|
||
==================================================================== */
|
||
|
||
:root {
|
||
/* Colors — aligned with PaperMod theme-vars.css for light mode */
|
||
--resume-accent: var(--primary, rgb(30, 30, 30));
|
||
--resume-halfgray: var(--secondary, rgb(108, 108, 108));
|
||
--resume-text: var(--content, rgb(31, 31, 31));
|
||
--resume-text-heading: var(--primary, rgb(30, 30, 30));
|
||
--resume-bg: var(--theme, rgb(255, 255, 255));
|
||
--resume-border: var(--border, rgb(238, 238, 238));
|
||
--resume-muted: var(--secondary, rgb(108, 108, 108));
|
||
|
||
/* Font stack — TeX Gyre Pagella / Palatino family */
|
||
--resume-font: "TeX Gyre Pagella", "Palatino Linotype", Palatino,
|
||
"Book Antiqua", Georgia, serif;
|
||
|
||
/* Layout — mirrors LaTeX geometry left=5.5cm, marginparwidth=4cm,
|
||
marginparsep=0.75cm at ~10pt. Converted to em at 16px base. */
|
||
--resume-margin-width: 10em; /* ~4 cm at 10pt */
|
||
--resume-margin-gap: 1.2em; /* ~0.75 cm */
|
||
/* Left page margin — body text indented this far from the content edge.
|
||
Margin note + gap live within this space (mirrors left=5.5cm in LaTeX). */
|
||
--resume-left-margin: calc(var(--resume-margin-width) + var(--resume-margin-gap));
|
||
|
||
/* \datebox: wide enough for "Sep 2049–May 2049" at \small */
|
||
--resume-date-width: 8.5em;
|
||
|
||
/* Vertical rhythm — mirrors spacing options (normal, not compact) */
|
||
--resume-section-skip: 1.0em; /* \resumeSectionSkip */
|
||
--resume-entry-skip: 0.5em; /* \resumeEntrySkip */
|
||
--resume-block-skip: 1.0em; /* \resumeBlockSkip */
|
||
--resume-description-skip: 0.8em; /* \resumeDescriptionSkip */
|
||
--resume-position-skip: 0.35em;/* \resumePositionSkip */
|
||
|
||
/* Body */
|
||
--resume-line-height: 1.05; /* \linespread{1.05} */
|
||
--resume-max-width: 860px;
|
||
}
|
||
|
||
/* ====================================================================
|
||
Base
|
||
==================================================================== */
|
||
|
||
html { font-size: 100%; }
|
||
|
||
body {
|
||
font-family: var(--resume-font);
|
||
line-height: var(--resume-line-height);
|
||
color: var(--resume-text);
|
||
background: var(--resume-bg);
|
||
max-width: var(--resume-max-width);
|
||
margin: 2em auto;
|
||
padding: 0 1.5em;
|
||
}
|
||
|
||
/* ====================================================================
|
||
Title — \spacedallcaps → uppercase + letter-spacing, Maroon, LARGE
|
||
(\resumeTitle uses \LARGE\color{Maroon}\spacedallcaps)
|
||
==================================================================== */
|
||
|
||
header h1,
|
||
h1.title {
|
||
text-align: center;
|
||
color: var(--resume-accent);
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.16em; /* \textls[160] ≈ 0.16 em */
|
||
font-weight: normal;
|
||
font-size: 1.75em; /* \LARGE at 10pt ≈ 14.4pt; 1.75em ≈ 28px */
|
||
margin-bottom: var(--resume-entry-skip);
|
||
}
|
||
|
||
/* Hide Pandoc subtitle/author/date if present */
|
||
header .subtitle,
|
||
header .author,
|
||
header .date { display: none; }
|
||
|
||
/* ====================================================================
|
||
Section headings — \spacedlowsmallcaps + \small + halfgray rule
|
||
(\resumeGenericSection: \small\spacedlowsmallcaps + 0.4pt gray rule)
|
||
==================================================================== */
|
||
|
||
.resume-section-heading {
|
||
font-variant: small-caps;
|
||
text-transform: lowercase; /* \MakeTextLowercase for small-caps */
|
||
letter-spacing: 0.08em; /* \textls[80] ≈ 0.08 em */
|
||
font-weight: normal;
|
||
font-size: 0.95em; /* \small inside body text */
|
||
color: var(--resume-text-heading);
|
||
margin-top: var(--resume-section-skip);
|
||
margin-bottom: 0.2em; /* 0.2em gap before rule (was 0.15→0.2 per CHANGE 1) */
|
||
}
|
||
|
||
/* Ensure spacing between consecutive sections doesn't collapse with
|
||
bullet-list margins at the end of the previous section. */
|
||
section + section { padding-top: var(--resume-section-skip); }
|
||
|
||
section > hr {
|
||
border: none;
|
||
border-bottom: 0.4pt solid var(--resume-border); /* \color{halfgray}\rule{...}{0.4pt} */
|
||
margin: 0 0 var(--resume-entry-skip);
|
||
}
|
||
|
||
/* ====================================================================
|
||
Margin-note grid
|
||
(mirrors \MarginText / \MarginName in the left-margin column)
|
||
==================================================================== */
|
||
|
||
/* Margin-note grid — pulls the entire block left so the margin note
|
||
occupies the body's left padding, and the main column aligns with
|
||
all other body text. Mirrors \reversemarginpar + left=5.5cm layout.
|
||
Multiple grid rows are allowed; each .resume-margin-note and
|
||
.resume-main-col pair occupies one implicit row. */
|
||
.resume-employer,
|
||
.resume-institution {
|
||
display: grid;
|
||
grid-template-columns: var(--resume-margin-width) 1fr;
|
||
gap: 0 var(--resume-margin-gap);
|
||
margin-left: calc(-1 * var(--resume-left-margin));
|
||
margin-bottom: var(--resume-block-skip);
|
||
align-items: start;
|
||
}
|
||
|
||
/* Location-only margin note row — left column only, right column empty */
|
||
.resume-margin-note--location {
|
||
grid-column: 1;
|
||
margin-top: 0.4em;
|
||
padding-top: 0;
|
||
}
|
||
|
||
.resume-margin-note {
|
||
text-align: right;
|
||
font-style: italic;
|
||
font-size: 0.9em;
|
||
padding-top: 0.15em;
|
||
color: var(--resume-muted);
|
||
}
|
||
|
||
.resume-margin-note a {
|
||
color: var(--resume-text-heading);
|
||
}
|
||
|
||
/* Location line inside the margin note — below employer name.
|
||
Mirrors \footnotesize\upshape in the LaTeX margin text. */
|
||
.resume-margin-location {
|
||
display: block;
|
||
font-style: normal; /* \upshape — cancel the italic of the note */
|
||
font-size: 0.8em; /* \footnotesize */
|
||
color: var(--resume-muted);
|
||
margin-top: 0.25em;
|
||
}
|
||
|
||
/* When a position overrides the employer location, a sibling div appears
|
||
just before .resume-position inside .resume-main-col. It uses negative
|
||
margin to pull its content visually back into the left column. */
|
||
.resume-margin-location-override {
|
||
margin-left: calc(-1 * (var(--resume-margin-width) + var(--resume-margin-gap)));
|
||
width: var(--resume-margin-width);
|
||
text-align: right;
|
||
margin-bottom: 0.15em;
|
||
}
|
||
|
||
.resume-main-col { min-width: 0; }
|
||
|
||
/* ====================================================================
|
||
Employment / position entries
|
||
(\resumePosition: \parbox{\datebox}{\small\textit{#2--#3}} + \textbf{#1})
|
||
CHANGE 2: position title is now bold (\textbf added in .sty)
|
||
==================================================================== */
|
||
|
||
.resume-entry-header {
|
||
margin-bottom: 0.25em;
|
||
}
|
||
|
||
.resume-date {
|
||
display: inline-block;
|
||
min-width: var(--resume-date-width);
|
||
font-style: italic;
|
||
font-size: 0.9em; /* \small in LaTeX */
|
||
}
|
||
|
||
/* CHANGE 2: bold title (was font-weight: normal) */
|
||
.resume-position-title {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.resume-position {
|
||
margin-bottom: var(--resume-position-skip);
|
||
}
|
||
|
||
/* ====================================================================
|
||
Education entries
|
||
(\resumeEducation: margin note = institution; \textbf{degree} CHANGE 3)
|
||
==================================================================== */
|
||
|
||
.resume-institution {
|
||
margin-bottom: var(--resume-entry-skip);
|
||
}
|
||
|
||
/* CHANGE 3: degree/program title bold (mirrors \textbf added in .sty) */
|
||
.resume-degree-title {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.resume-edu-detail {
|
||
font-size: 0.9em; /* \small for the detail line */
|
||
margin-top: 0.15em;
|
||
padding-left: calc(var(--resume-date-width) + 1.5em); /* aligns with title */
|
||
}
|
||
|
||
/* ====================================================================
|
||
Links — Maroon
|
||
==================================================================== */
|
||
|
||
a {
|
||
color: var(--resume-text-heading);
|
||
text-decoration: none;
|
||
}
|
||
a:hover { text-decoration: underline; }
|
||
|
||
/* ====================================================================
|
||
Contact section
|
||
(\resumeContactLineOne/Two; \faMapMarker, \faPhone*, icon + separator)
|
||
==================================================================== */
|
||
|
||
.resume-contact address {
|
||
font-style: normal;
|
||
margin-bottom: 0.5em;
|
||
}
|
||
|
||
/* Inline contact items separated by halfgray · (mirrors \cdot) */
|
||
.resume-contact-list {
|
||
list-style: none;
|
||
padding: 0;
|
||
margin: 0 0 0.5em;
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
gap: 0 0;
|
||
}
|
||
|
||
.resume-contact-item {
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
/* · separator between items (mirrors \enspace{\color{halfgray}$\cdot$}\enspace) */
|
||
.resume-contact-item + .resume-contact-item::before {
|
||
content: "·";
|
||
color: var(--resume-halfgray);
|
||
margin: 0 0.45em;
|
||
}
|
||
|
||
.resume-contact-icon {
|
||
color: var(--resume-halfgray); /* \color{halfgray} on icons */
|
||
font-size: 0.85em;
|
||
display: inline-block;
|
||
width: 1.2em;
|
||
text-align: center;
|
||
margin-right: 0.35em;
|
||
}
|
||
|
||
/* FA icons in contact items — halfgray, matching \large\color{halfgray} */
|
||
.resume-contact-item i {
|
||
color: var(--resume-halfgray);
|
||
font-size: 0.9em;
|
||
width: 1.2em;
|
||
text-align: center;
|
||
margin-right: 0.2em;
|
||
}
|
||
|
||
/* Service icons — line 2 (\resumeService: \large\color{halfgray} icon + \quad) */
|
||
.resume-contact-services {
|
||
display: flex;
|
||
gap: 0.9em; /* mirrors \quad between service entries */
|
||
margin-bottom: var(--resume-entry-skip);
|
||
align-items: center;
|
||
}
|
||
|
||
.resume-contact-services a {
|
||
color: var(--resume-halfgray); /* \large\color{halfgray} icon */
|
||
font-size: 1.1em; /* \large */
|
||
}
|
||
|
||
.resume-contact-services a:hover {
|
||
color: var(--resume-text-heading);
|
||
}
|
||
|
||
/* ====================================================================
|
||
Publications
|
||
(\resumePublication: author. ``Title.'' \textit{Venue}, Year.)
|
||
==================================================================== */
|
||
|
||
.resume-publication {
|
||
margin-bottom: var(--resume-description-skip);
|
||
padding-left: 2em;
|
||
text-indent: -2em; /* \hangindent=2em\hangafter=0 */
|
||
}
|
||
|
||
.resume-pub-authors { font-variant: normal; }
|
||
.resume-pub-venue { font-style: italic; }
|
||
|
||
/* ====================================================================
|
||
Projects, Certifications, Awards, Volunteer
|
||
(\resumeProject etc.: \parbox{\datebox} + \textbf{title} + italic role)
|
||
==================================================================== */
|
||
|
||
.resume-project,
|
||
.resume-certification,
|
||
.resume-award,
|
||
.resume-volunteer-entry {
|
||
margin-bottom: var(--resume-entry-skip);
|
||
padding-left: 2em;
|
||
text-indent: -2em; /* \hangindent=2em */
|
||
}
|
||
|
||
/* Bold name mirrors \textbf{#1} in all misc entry commands */
|
||
.resume-project-title,
|
||
.resume-certification-title,
|
||
.resume-award-title,
|
||
.resume-volunteer-title {
|
||
font-weight: bold;
|
||
}
|
||
|
||
/* Italic role/issuer mirrors ~--- \textit{#2} */
|
||
.resume-project-role,
|
||
.resume-certification-issuer,
|
||
.resume-award-source,
|
||
.resume-volunteer-org {
|
||
font-style: italic;
|
||
}
|
||
|
||
.resume-award-desc {
|
||
margin: 0.15em 0 0.3em;
|
||
font-size: 0.95em;
|
||
text-indent: 0;
|
||
}
|
||
|
||
/* ====================================================================
|
||
Description lists (Skills, Languages)
|
||
(\resumeLanguage / \resumeSkillCategory with \MarginText for category)
|
||
==================================================================== */
|
||
|
||
.resume-dl {
|
||
display: grid;
|
||
grid-template-columns: max-content 1fr;
|
||
gap: 0.15em 1em;
|
||
margin: 0.3em 0;
|
||
}
|
||
|
||
.resume-dl dt {
|
||
font-weight: bold;
|
||
font-size: 0.9em;
|
||
}
|
||
|
||
.resume-dl dd { margin: 0; }
|
||
|
||
/* ====================================================================
|
||
Prose lists (bullet points under positions, etc.)
|
||
(\labelitemi → \textbullet, \labelitemii → \textendash; nosep list)
|
||
==================================================================== */
|
||
|
||
section ul,
|
||
.resume-main-col ul {
|
||
list-style-type: disc; /* \textbullet */
|
||
margin: 0.25em 0 0.4em; /* topsep=0.25em */
|
||
padding-left: 2em; /* leftmargin=2em */
|
||
}
|
||
|
||
section ul ul,
|
||
.resume-main-col ul ul {
|
||
list-style-type: "\2013\00a0"; /* \textendash for level 2 */
|
||
}
|
||
|
||
section li,
|
||
.resume-main-col li {
|
||
margin-bottom: 0.1em; /* itemsep=0.1em */
|
||
line-height: var(--resume-line-height);
|
||
}
|
||
|
||
/* ====================================================================
|
||
Responsive — collapse margin grid below 48em
|
||
==================================================================== */
|
||
|
||
@media (max-width: 48em) {
|
||
body {
|
||
padding-left: 1.5em;
|
||
}
|
||
|
||
.resume-employer,
|
||
.resume-institution,
|
||
.resume-dl {
|
||
display: block;
|
||
margin-left: 0;
|
||
}
|
||
|
||
.resume-margin-note {
|
||
text-align: left;
|
||
font-size: 1em;
|
||
font-weight: bold;
|
||
margin-bottom: 0.15em;
|
||
}
|
||
|
||
.resume-dl dt {
|
||
margin-top: 0.3em;
|
||
}
|
||
|
||
.resume-dl dd { margin-left: 1em; }
|
||
|
||
.resume-entry-header,
|
||
.resume-project,
|
||
.resume-certification,
|
||
.resume-award,
|
||
.resume-volunteer-entry,
|
||
.resume-publication {
|
||
padding-left: 0;
|
||
text-indent: 0;
|
||
}
|
||
|
||
.resume-edu-detail { padding-left: 0; }
|
||
|
||
.resume-contact-list { flex-direction: column; }
|
||
.resume-contact-item + .resume-contact-item::before { display: none; }
|
||
}
|
||
|
||
/* ====================================================================
|
||
Print
|
||
(\pagestyle{empty}; avoid breaks; link URLs after text)
|
||
==================================================================== */
|
||
|
||
@media print {
|
||
body {
|
||
max-width: none;
|
||
margin: 0;
|
||
padding: 0;
|
||
font-size: 10pt;
|
||
color: #000;
|
||
background: #fff;
|
||
}
|
||
|
||
a {
|
||
color: #000;
|
||
text-decoration: none;
|
||
}
|
||
|
||
/* Show link URLs (mirrors hyperref behaviour in PDF) */
|
||
a[href^="http"]::after {
|
||
content: " (" attr(href) ")";
|
||
font-size: 0.8em;
|
||
color: #555;
|
||
}
|
||
|
||
/* \break-inside avoid on all entry types */
|
||
section { break-inside: avoid; }
|
||
.resume-employer,
|
||
.resume-institution,
|
||
.resume-position,
|
||
.resume-project,
|
||
.resume-certification,
|
||
.resume-award,
|
||
.resume-volunteer-entry,
|
||
.resume-publication { break-inside: avoid; }
|
||
}
|
||
</style>
|
||
|
||
<section class="resume-introduction">
|
||
<h2 class="resume-section-heading">Profile</h2>
|
||
<hr>
|
||
<p>Data and analytics leader who builds measurement capabilities from
|
||
the ground up — and then builds the teams to run them. Across gaming,
|
||
energy, financial services, and media, the pattern is the same: inherit
|
||
“we have no data,” and leave behind production pipelines, statistical
|
||
models, and analytical teams that make better decisions at scale.
|
||
Promoted four levels in three years at EA managing cross-functional
|
||
analytics organizations. Since leaving EA, completed Wharton’s CTO
|
||
Program and took on founding-team roles at early-stage companies to stay
|
||
close to the technical work. Ready to bring that combination of
|
||
organizational leadership and hands-on depth back to a team that takes
|
||
measurement seriously.</p>
|
||
</section>
|
||
<section class="resume-employment">
|
||
<h2 class="resume-section-heading">Work Experience</h2>
|
||
<hr>
|
||
<div class="resume-employer">
|
||
<div class="resume-margin-note"><a href="https://quadrant4.com">Quadrant4, Inc.</a><span class="resume-margin-location">Walnut Creek, CA</span></div>
|
||
<div class="resume-main-col">
|
||
<div class="resume-position">
|
||
<div class="resume-entry-header"><span class="resume-date">Apr 2025 – present</span> <span class="resume-position-title">Head of Data and Signals</span></div>
|
||
<p>Joined as employee number one at a startup whose core product
|
||
<em>is</em> measurement — permissioned intent signals from engaged users
|
||
that outperform the lagging behavioral data dominating ad targeting
|
||
today. Built the entire technical and analytical foundation needed to
|
||
prove and deliver that value proposition.</p>
|
||
<ul>
|
||
<li><em>Built the full backend and analytics stack solo.</em> Backend
|
||
services platform, analytics infrastructure, dbt/DuckDB data warehouse,
|
||
Quarto dashboards, and GKE/GCE cloud deployment with CI/CD — all from
|
||
scratch.</li>
|
||
<li><em>Rooted company strategy in measurable lifecycle economics.</em>
|
||
Applied CLV frameworks before founding to turn an abstract thesis into a
|
||
concrete, testable claim — and defined the metrics needed to prove
|
||
it.</li>
|
||
<li><em>Architected a platform that made new services trivial to
|
||
build.</em> A transport-agnostic FaaS framework with 13+ reusable
|
||
modules (async PostgreSQL, circuit-breaking, HTTP clients) reduced new
|
||
service build time to under a day — proven by an SKAN postback ingestion
|
||
service and an MCP server.</li>
|
||
<li><em>Delivered early unit economics visibility.</em> Dagster
|
||
orchestration over a warehouse covering costs, user behavior, and
|
||
acquisition performance, plus an MCP server giving business users
|
||
natural-language access to metrics without SQL.</li>
|
||
<li><em>Prototyped AI conversation guidance via soft state
|
||
machines.</em> Replaced rigid scripted flows with probabilistic state
|
||
transitions, producing more realistic conversations and measurably
|
||
higher engagement.</li>
|
||
<li><em>Ran Meta user acquisition end-to-end.</em> Expanded into new
|
||
Comscore geographies, hit industry benchmark CPRs within weeks through
|
||
systematic creative testing, and fixed upper-funnel conversion
|
||
leaks.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="resume-employer">
|
||
<div class="resume-margin-note"><a href="https://www.idenza.ai">Idenza</a><span class="resume-margin-location">Bay Area, CA</span></div>
|
||
<div class="resume-main-col">
|
||
<div class="resume-position">
|
||
<div class="resume-entry-header"><span class="resume-date">Oct 2024 – May 2025</span> <span class="resume-position-title">Founding Engineer</span></div>
|
||
<p>Joined a fintech startup as a founding engineer to build core fraud
|
||
detection infrastructure — delivering a production-ready rules engine
|
||
and API layer before determining the role wasn’t aligned with my
|
||
trajectory as a data and analytics leader.</p>
|
||
<ul>
|
||
<li><em>Built a policy-driven fraud detection engine for enterprise
|
||
scale.</em> A service that generates Drools DRL rules dynamically from
|
||
JSON definitions lets financial institutions encode their own policies
|
||
without engineering involvement; a companion classification service
|
||
evaluates complex multi-rule transactions in under 10 milliseconds.</li>
|
||
<li><em>Delivered the backend API gateway and integration layer.</em>
|
||
Built in Python with PostgreSQL, connecting the front end to the rules
|
||
engine and leaving the system ready for client onboarding.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="resume-employer">
|
||
<div class="resume-margin-note"><a href="https://www.astrocade.com">Astrocade</a><span class="resume-margin-location">Los Altos, CA</span></div>
|
||
<div class="resume-main-col">
|
||
<div class="resume-position">
|
||
<div class="resume-entry-header"><span class="resume-date">Feb 2024 – Oct 2024</span> <span class="resume-position-title">Data Scientist</span></div>
|
||
<p>Sole data scientist at a 20-person AI gaming startup — brought in as
|
||
a contractor and converted to full-time based on results — responsible
|
||
for building the company’s measurement capability from zero and
|
||
translating data into product decisions for the CEO.</p>
|
||
<ul>
|
||
<li><em>Built the measurement foundation where none existed.</em>
|
||
Defined telemetry specifications, selected and onboarded analytics
|
||
vendors (Amplitude, Statsig), and built the pipelines that gave the
|
||
company its first visibility into user behavior and product
|
||
performance.</li>
|
||
<li><em>Improved first-user experience through systematic
|
||
experimentation.</em> A/B and bandit-style tests on onboarding and game
|
||
design led to a simplified FUE flow with materially better completion
|
||
and engagement rates.</li>
|
||
<li><em>Identified and activated the core user base.</em> Behavioral
|
||
analysis surfaced the highest-value users; a user council channeled
|
||
their feedback directly into the product roadmap.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="resume-employer">
|
||
<div class="resume-margin-note"><a href="https://ea.com">Glu Mobile / Electronic Arts</a><span class="resume-margin-location">San Francisco, CA</span></div>
|
||
<div class="resume-main-col">
|
||
<div class="resume-position">
|
||
<div class="resume-entry-header"><span class="resume-date">Mar 2022 – May 2023</span> <span class="resume-position-title">Senior Director of Growth Analytics and Data Science</span></div>
|
||
<p>Promoted four levels in three years (Manager → Senior Director),
|
||
ultimately leading business intelligence, marketing analytics, and data
|
||
science while on the leadership team of a 250-person organization —
|
||
responsible for the measurement systems that shaped product and
|
||
marketing decisions at EA Mobile scale.</p>
|
||
<ul>
|
||
<li><em>Saved $100M in marketing spend at a major game launch.</em>
|
||
Identified and demonstrated that the incumbent forecasting methodology
|
||
would produce bad decisions, convened a cross-functional team, and
|
||
implemented a transition state model for cohort growth forecasting as an
|
||
R package.</li>
|
||
<li><em>Turned re-engagement marketing from a cost center into a profit
|
||
driver.</em> An embedded analytics team transformed campaigns from
|
||
money-losing giveaways into programs generating 200% ROI through
|
||
continuous measurement and improvement cycles.</li>
|
||
<li><em>Grew revenue by 5%+ through portfolio-level budget
|
||
optimization.</em> Analysis revealed reallocation opportunities across
|
||
acquisition channels — a significant impact on a budget in the tens of
|
||
millions.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="resume-position">
|
||
<div class="resume-entry-header"><span class="resume-date">May 2020 – Mar 2022</span> <span class="resume-position-title">Director of Analytics and Data Science</span></div>
|
||
<ul>
|
||
<li><em>Cut marketing analysis effort in half.</em> Led a
|
||
cross-functional modernization of the BI practice, migrating from
|
||
Hive/Hadoop to a scalable cloud data warehouse with analytics-friendly
|
||
schemas.</li>
|
||
<li><em>Navigated Apple’s ATT initiative to protect acquisition
|
||
budgets.</em> Built new SKAdNetwork pipelines and analytical strategies
|
||
that maintained iOS advertising budgets while competitors pulled
|
||
back.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="resume-position">
|
||
<div class="resume-entry-header"><span class="resume-date">Mar 2020 – May 2020</span> <span class="resume-position-title">Manager, Analytics</span></div>
|
||
<ul>
|
||
<li><em>Transformed analysts from order-takers into strategic
|
||
partners.</em> Created space for analysts to explore beyond PM requests
|
||
— leading to techniques like fixed-effects models that surfaced insights
|
||
PMs would never have thought to request.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="resume-employer">
|
||
<div class="resume-margin-note"><a href="https://askmediagroup.com">Ask Media Group</a><span class="resume-margin-location">Oakland, CA</span></div>
|
||
<div class="resume-main-col">
|
||
<div class="resume-position">
|
||
<div class="resume-entry-header"><span class="resume-date">2019 – 2020</span> <span class="resume-position-title">Director, Data Science</span></div>
|
||
<p>Led cross-functional data science teams across product and
|
||
engineering, steering through written technical leadership — defining
|
||
scope, acceptance criteria, and strategic direction in prose while
|
||
delivering measurable improvements to search and content systems.</p>
|
||
<ul>
|
||
<li><em>Rescued a broken related search project.</em> Inherited a system
|
||
returning “iPhone 4” for “iPhone” queries after six months of
|
||
development. Two months after redefining acceptance criteria, automating
|
||
the build, and purging stale data, the system was ready for deployment
|
||
on a product targeted at $500K+ annual revenue.</li>
|
||
<li><em>Reduced vertical search site build time from three months to
|
||
three days.</em> Directed development of a tool automating index
|
||
construction for narrow-topic search sites.</li>
|
||
<li><em>Introduced Bayesian A/B testing where no testing capability
|
||
existed.</em> Built the company’s first mechanism for measuring product
|
||
improvements.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="resume-position">
|
||
<div class="resume-entry-header"><span class="resume-date">Oct 2018 – Dec 2019</span> <span class="resume-position-title">Data Science Manager</span></div>
|
||
</div>
|
||
<div class="resume-position">
|
||
<div class="resume-entry-header"><span class="resume-date">Aug 2018 – Oct 2018</span> <span class="resume-position-title">Data Evaluation Manager</span></div>
|
||
<ul>
|
||
<li><em>Transformed an analytics team into a delivery-oriented data
|
||
science team.</em> Adopted Scrum and built GitLab CI/CD pipelines to
|
||
increase delivery cadence.</li>
|
||
<li><em>Opened digital marketing to data science.</em> Championed a
|
||
keyword bidding project that produced automated auction data extraction
|
||
and bid adjustment within two months.</li>
|
||
<li><em>Built content moderation tooling at scale.</em> A word-vector
|
||
classifier for out-of-policy text let editors focus attention where it
|
||
was most needed.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="resume-employer">
|
||
<div class="resume-margin-note"><a href="https://dnv.com">DNV</a><span class="resume-margin-location">Oakland, CA</span><span class="resume-margin-location">Høvik, Norway</span></div>
|
||
<div class="resume-main-col">
|
||
<div class="resume-position">
|
||
<div class="resume-entry-header"><span class="resume-date">2016 – 2017</span> <span class="resume-position-title">Senior Data Scientist</span></div>
|
||
<p>Selected for the Analytics Innovation Centre — a small group
|
||
assembled for rapid iteration on the company’s digital transformation
|
||
agenda — and worked directly with the executive committee to shape
|
||
strategy.</p>
|
||
<ul>
|
||
<li><em>Defined requirements and built initial prototypes for
|
||
Veracity,</em> the company’s marquee data platform connecting business
|
||
consumers and suppliers.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="resume-position">
|
||
<div class="resume-entry-header"><span class="resume-date">2011 – 2016</span> <span class="resume-position-title">Head of Section for Analytics and Senior Consultant</span></div>
|
||
<p>Led the west coast analytics group in a first management role,
|
||
combining technical leadership on large-scale energy data problems with
|
||
business development and direct client delivery for major utilities and
|
||
grid operators.</p>
|
||
<ul>
|
||
<li><em>Estimated peak savings for a CPUC energy efficiency program</em>
|
||
across 40,000+ utility customers using years of hourly interval data
|
||
distributed across a Hadoop cluster.</li>
|
||
<li><em>Built a short-term renewable generation forecasting model</em>
|
||
operating at five-minute intervals to reduce grid reliance on
|
||
fast-response reserves.</li>
|
||
<li><em>Developed a discrete choice model for light bulb market
|
||
shares</em> to estimate counter-factual baselines for residential
|
||
lighting programs — producing rigorous net-to-gross ratios.</li>
|
||
<li><em>Led EV adopter identification for CenterPoint Energy,</em>
|
||
combining early adopter characteristics with travel survey data to
|
||
target geographic concentrations. </li>
|
||
<li><em>Built a proof-of-concept load forecasting algorithm</em> for a
|
||
major US utility’s demand response program, demonstrating the viability
|
||
of daily short-term forecasts from AMI data across 40,000
|
||
customers.</li>
|
||
<li><em>Developed load profiles and forecast errors for photovoltaic and
|
||
electric vehicles</em> for the California Independent System Operator,
|
||
assessing the benefits of additional visibility into distributed energy
|
||
resources.</li>
|
||
<li><em>Managed a propensity-to-act model</em> that combined customer
|
||
attributes, consumption, and program history into participation
|
||
likelihood scores — creating a new service offering and a rigorous
|
||
measure of how program actions influence participation.</li>
|
||
<li><em>Piloted Apache Spark and Hadoop for large-scale energy data
|
||
problems.</em> Supported business development through direct sales and
|
||
proposal strategy.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="resume-employer">
|
||
<div class="resume-margin-note"><a href="https://www.wsp.com">Parsons Brinckerhoff</a><span class="resume-margin-location">Chicago, IL</span><span class="resume-margin-location">San Francisco, CA</span><span class="resume-margin-location">Portland, OR</span><span class="resume-margin-location">Orange, CA</span></div>
|
||
<div class="resume-main-col">
|
||
<div class="resume-position">
|
||
<div class="resume-entry-header"><span class="resume-date">2001 – 2011</span> <span class="resume-position-title">Senior Consultant</span></div>
|
||
<p>Built simulation software and estimated behavioral models for
|
||
regional and statewide transportation planning projects across the US,
|
||
with several supporting successful federal New Starts funding
|
||
applications.</p>
|
||
<ul>
|
||
<li><em>Developed one of the first discrete choice trip distribution
|
||
models</em> for the Salt Lake City regional travel demand model,
|
||
replacing the gravity-based approach and supporting a successful New
|
||
Starts application.</li>
|
||
<li><em>Lead programmer on the Ohio statewide travel demand model,</em>
|
||
simulating long-distance travel for over 20 million persons using
|
||
distributed computing.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="resume-employer">
|
||
<div class="resume-margin-note">Chicago Area Transportation Study<span class="resume-margin-location">Chicago, IL</span></div>
|
||
<div class="resume-main-col">
|
||
<div class="resume-position">
|
||
<div class="resume-entry-header"><span class="resume-date">1998 – 2000</span> <span class="resume-position-title">Engineer</span></div>
|
||
<p>Supported development of the Chicago region’s 20-year long-range
|
||
transportation plan through database design, GIS visualization, and
|
||
travel demand model interpretation — an early foundation in the
|
||
analytical and computational methods that have defined the rest of the
|
||
career.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section class="resume-education">
|
||
<h2 class="resume-section-heading">Education</h2>
|
||
<hr>
|
||
<div class="resume-institution">
|
||
<div class="resume-margin-note">CTO Program</div>
|
||
<div class="resume-main-col"><div class="resume-entry-header"><span class="resume-date">2023 – 2024</span> <a href="https://wharton.upenn.edu">The Wharton School, University of Pennsylvania</a></div><div class="resume-education-detail">Executive education; completed in 9 months</div>
|
||
</div>
|
||
</div>
|
||
<div class="resume-institution">
|
||
<div class="resume-margin-note">Master of Science</div>
|
||
<div class="resume-main-col"><div class="resume-entry-header"><span class="resume-date">1999 – 2001</span> <a href="https://uic.edu">The University of Illinois, Chicago</a></div><div class="resume-education-detail">Civil and Materials Engineering, emphasis on Travel demand forecasting and simulation</div>
|
||
</div>
|
||
</div>
|
||
<div class="resume-institution">
|
||
<div class="resume-margin-note">Bachelor of Science</div>
|
||
<div class="resume-main-col"><div class="resume-entry-header"><span class="resume-date">1993 – 1998</span> <a href="https://marquette.edu">Marquette University</a></div><div class="resume-education-detail">Civil and Environmental Engineering, emphasis on Transportation engineering and planning</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section class="resume-skills">
|
||
<h2 class="resume-section-heading">Technical Skills</h2>
|
||
<hr>
|
||
<dl class="resume-dl resume-skills-dl"><dt>Languages</dt><dd>Java, Python, R, SQL</dd>
|
||
<dt>Frameworks</dt><dd>Apache Spark, Dagster, Dask, Drools, DuckDB, FastAPI, Flask, Quarto, dbt</dd>
|
||
<dt>Infrastructure</dt><dd>BigQuery, CI/CD, Docker, GCE, GKE, GitLab CI, Hadoop, Hive, PostgreSQL</dd>
|
||
<dt>Methods</dt><dd>A/B Testing, Bandit Testing, Bayesian Statistics, Behavioral Modeling, Cohort Analysis, Data Warehousing, Database Design, Discrete Choice Models, Forecasting, Funnel Analysis, GIS, Monte Carlo Simulation, NLP, SKAN Attribution, Scrum, Simulation, Travel Demand Forecasting, Travel Demand Modeling, User Acquisition</dd>
|
||
<dt>Platforms</dt><dd>Amplitude, Meta Ads, Statsig</dd></dl>
|
||
</section>
|
||
<section class="resume-publications">
|
||
<h2 class="resume-section-heading">Publications</h2>
|
||
<hr>
|
||
<div class="resume-publication"><span class="resume-pub-authors">Siyu Wu, Andrew Stryker, Julia Vetromile</span>. “Tangled: Isolating SEM Savings.” <em class="resume-pub-venue">2015 ACEEE Summer Study on Energy Efficiency in Industry</em>, 2015.</div>
|
||
<div class="resume-publication"><span class="resume-pub-authors">Andrew Stryker, Kathleen Gaffney</span>. “Why the Light Bulb is No Longer a Textbook Example for Price Elasticity: Results from Choice Experiments and Demand Modeling Research.” <em class="resume-pub-venue">International Energy Program Evaluation Conference</em>, 2013.</div>
|
||
<div class="resume-publication"><span class="resume-pub-authors">Jay Evans, Andrew Stryker, Richard Pratt</span>. “Traveler Response to System Change, Chapter 17: Transit-Oriented Development.” <em class="resume-pub-venue">Transit Cooperative Research Program, Transportation Research Board</em>, 2007.</div>
|
||
<div class="resume-publication"><span class="resume-pub-authors">G.D. Erhardt, J. Freedman, A. Stryker, H. Fujioka, R. Anderson</span>. “The Ohio Long Distance Travel Model.” <em class="resume-pub-venue">Transportation Research Record</em>, 2007.</div>
|
||
<div class="resume-publication"><span class="resume-pub-authors">Andrew Stryker, Joel Freedman, John Britting</span>. “A Practical Evaluation of Alternative Methods to Trip Distribution.” <em class="resume-pub-venue">Transportation Research Board Planning Applications Conference</em>, 2005.</div>
|
||
</section>
|