Skip to content

Instantly share code, notes, and snippets.

@jenningsb2
Created March 26, 2026 14:18
Show Gist options
  • Select an option

  • Save jenningsb2/351d9a3477c47fd70a8ec718bd08ba31 to your computer and use it in GitHub Desktop.

Select an option

Save jenningsb2/351d9a3477c47fd70a8ec718bd08ba31 to your computer and use it in GitHub Desktop.
Typst Resume
#import "@preview/scienceicons:0.1.0": orcid-icon
#let resume(
author: "",
author-position: left,
personal-info-position: left,
pronouns: "",
location: "",
email: "",
github: "",
linkedin: "",
phone: "",
personal-site: "",
orcid: "",
accent-color: "#000000",
font: "Garamond",
paper: "us-letter",
author-font-size: 20pt,
font-size: 11pt,
lang: "en",
body,
) = {
// Sets document metadata
set document(author: author, title: author)
// Document-wide formatting, including font and margins
set text(
// LaTeX style font
font: font,
size: font-size,
lang: lang,
// Disable ligatures so ATS systems do not get confused when parsing fonts.
ligatures: false
)
// Reccomended to have 0.5in margin on all sides
set page(
margin: (0.5in),
paper: paper,
)
// Link styles
show link: underline
// Small caps for section titles
show heading.where(level: 2): it => [
#pad(top: 0pt, bottom: -10pt, [#smallcaps(it.body)])
#line(length: 100%, stroke: 1pt)
]
// Accent Color Styling
show heading: set text(
fill: rgb(accent-color),
)
show link: set text(
fill: rgb(accent-color),
)
// Name will be aligned left, bold and big
show heading.where(level: 1): it => [
#set align(author-position)
#set text(
weight: 700,
size: author-font-size,
)
#pad(it.body)
]
// Level 1 Heading
[= #(author)]
// Personal Info Helper
let contact-item(value, prefix: "", link-type: "") = {
if value != "" {
if link-type != "" {
link(link-type + value)[#(prefix + value)]
} else {
value
}
}
}
// Personal Info
pad(
top: 0.25em,
align(personal-info-position)[
#{
let items = (
contact-item(pronouns),
contact-item(phone),
contact-item(location),
contact-item(email, link-type: "mailto:"),
contact-item(github, link-type: "https://"),
contact-item(linkedin, link-type: "https://"),
contact-item(personal-site, link-type: "https://"),
contact-item(orcid, prefix: [#orcid-icon(color: rgb("#AECD54"))orcid.org/], link-type: "https://orcid.org/"),
)
items.filter(x => x != none).join(" | ")
}
],
)
// Main body.
set par(justify: true)
body
}
// Generic two by two component for resume
#let generic-two-by-two(
top-left: "",
top-right: "",
bottom-left: "",
bottom-right: "",
) = {
[
#top-left #h(1fr) #top-right \
#bottom-left #h(1fr) #bottom-right
]
}
// Generic one by two component for resume
#let generic-one-by-two(
left: "",
right: "",
) = {
[
#left #h(1fr) #right
]
}
// Cannot just use normal --- ligature becuase ligatures are disabled for good reasons
#let dates-helper(
start-date: "",
end-date: "",
) = {
start-date + " " + $dash.em$ + " " + end-date
}
// Section components below
#let edu(
institution: "",
dates: "",
degree: "",
gpa: "",
location: "",
// Makes dates on upper right like rest of components
consistent: false,
) = {
if consistent {
// edu-constant style (dates top-right, location bottom-right)
generic-two-by-two(
top-left: strong(institution),
top-right: strong(dates),
bottom-left: emph(degree),
bottom-right: emph(location),
)
} else {
// original edu style (location top-right, dates bottom-right)
generic-two-by-two(
top-left: strong(institution),
top-right: location,
bottom-left: emph(degree),
bottom-right: emph(dates),
)
}
}
#let work(
title: "",
dates: "",
company: "",
location: "",
roles: (),
) = {
// Single role format: company at top, title below
generic-two-by-two(
top-left: strong(company),
top-right: strong(dates),
bottom-left: emph(title),
bottom-right: emph(location),
)
}
#let project(
role: "",
name: "",
url: "",
dates: "",
) = {
generic-one-by-two(
left: {
if role == "" {
[*#name* #if url != "" and dates != "" [ (#link("https://" + url)[#url])]]
} else {
[*#role*, #name #if url != "" and dates != "" [ (#link("https://" + url)[#url])]]
}
},
right: {
if dates == "" and url != "" {
link("https://" + url)[#url]
} else {
dates
}
},
)
}
#let certificates(
name: "",
issuer: "",
url: "",
date: "",
) = {
[
*#name*, #issuer
#if url != "" {
[ (#link("https://" + url)[#url])]
}
#h(1fr) #date
]
}
#let extracurriculars(
activity: "",
dates: "",
) = {
generic-one-by-two(
left: strong(activity),
right: dates,
)
}
#import "@local/basic-resume-optimized:0.1.0": *
// Put your personal information here, replacing mine
#let name = "Bailey Jennings"
#let location = "Richmond, VA"
#let email = "jenningsebailey@gmail.com"
#let linkedin = "linkedin.com/in/baileyjennings"
#let phone = "+1 (804) 386-7180"
#let personal-site = "baileyjennings.com"
#show: resume.with(
author: name,
// All the lines below are optional.
// For example, if you want to to hide your phone number:
// feel free to comment those lines out and they will not show.
location: location,
email: email,
linkedin: linkedin,
phone: phone,
personal-site: personal-site,
accent-color: "#000",
font: "Garamond",
paper: "us-letter",
author-position: left,
personal-info-position: left,
)
/*
* Lines that start with == are formatted into section headings
* You can use the specific formatting functions if needed
* The following formatting functions are listed below
* #edu(dates: "", degree: "", gpa: "", institution: "", location: "", consistent: false)
* #work(company: "", dates: "", location: "", title: "")
* #project(dates: "", name: "", role: "", url: "")
* certificates(name: "", issuer: "", url: "", date: "")
* #extracurriculars(activity: "", dates: "")
* There are also the following generic functions that don't apply any formatting
* #generic-two-by-two(top-left: "", top-right: "", bottom-left: "", bottom-right: "")
* #generic-one-by-two(left: "", right: "")
*/
== Work Experience
#work(
title: "Lead Product Manager, Worker Experience & Applied AI",
location: "Remote",
company: "JobGet",
dates: dates-helper(start-date: "Nov. 2024", end-date: "Present"),
)
- Lead the snagajob.com team building production-grade AI features and foundational infrastructure using LLMs with prompting, evals, and RAG.
- *Example Features*: Suggested application answers, Voice-to-work history, Resume PDF extraction.
- *Key Results*: +14.7% improvement in resume upload rate; +3% in screening question completion rate.
- *Stack*: Braintrust; Vercel’s AI SDK; OpenAI; Anthropic; Gemini; MongoDB
- Launched a new registration page within our native application flow.
- *Key Results*: +20% improvement in application completion rate for unauthenticated users.
- Designed and shipped a search results deduplication system ("brand stacking") that groups jobs by employer and role.
- *Key Results*: +16.5% apply clicks/user (100% daily win rate), +31% job saves, +8.1% revenue/user (~\$850K annualized incremental revenue).
- Designed and launched SMS and Email OTP authentication option.
- *Key Results*: +28% login success rate for existing users.
#work(
company: "Snagajob (Acq. JobGet 2024)",
location: "Richmond, VA",
dates: dates-helper(start-date: "May 2016", end-date: "Nov. 2024"),
)
#v(-1.0em)
_Senior Product Manager_ | _Apr. 2022 – Nov. 2024_
- Designed and launched a new product-led-sales buying model and platform for small to medium-sized businesses.
- Designed and implemented an automated bidding algorithm resulting in notable pricing stability and a measurable increase in account growth, demonstrating a direct impact on revenue.
_Product Manager_ | _Apr. 2021 – Apr. 2022_
- Led a team to develop Snagajob's first customer-facing job advertising tool and grew self-service adoption from an initial beta group to more than half of our clients.
- Spearheaded a transition of Snagajob's primary revenue stream from subscription to a usage-based pricing model, which enabled the company to experience significant growth during the post-COVID labor market boom.
_Product Operations Analyst_ | _Dec. 2018 – Jan. 2020_
- Partnered with sales teams to deliver data-driven insights for client QBRs and new business opportunities, enabling strategic account management decisions.
_Ad Trafficker_ | _May 2016 – Dec. 2018_
== Education
#edu(
institution: "Virginia Commonwealth University",
location: "Richmond, VA",
dates: "Dec. 2016",
degree: "Bachelor of Business Administration (BBA)",
// Uncomment the line below if you want edu formatting to be consistent with everything else
consistent: true
)
- *GPA*: 3.9\/4.0 | Summa Cum Laude
== Skills, Technologies & Interests
- *Skills*: Product Management; Prompt Engineering; AI Evaluations; SQL; Strategic Planning; Public Speaking; Data Analysis; Leadership; UX Design; A/B Testing; Python
- *Technologies*: Excel; PostHog; Figma; JIRA; Linear
- *Interests*: Weightlifting; Tennis; Disc Golf; Traveling; Reading; Architecture; Walking My Dog Toro; Cooking
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment