Skip to content

8.5 × 11 in

Resumes

Minimal resume

A single-column US Letter resume with a restrained typographic hierarchy: sections and entries come from data in the order given, dates are formatted as month and year, current roles read Present, and skills are listed by category.

Letter portraitLocale en-USHTML + Jinja

Opens Dynamic Document API with this template preloaded in a free workspace.

Template language features

  • Loops
  • Conditionals
  • Macros
  • Filters
  • Date formatting

Filters such as format_currency and qrcode are described in the template language reference.

Variables

Derived from the sample data: 4 top-level fields, 20 paths in total. Send the same shape as data.

PathTypeExample
personobject
person.namestring"Caleb Ashworth-Nguyen"
person.titlestring"Staff Data Engineer"
person.locationstring"Minneapolis, MN"
person.emailstring"caleb.an@example.com"
person.phonestring"+1 202-555-0164"
person.linksarray<string> · 2"caleb-an.example.net"
summarystring"Data engineer with 13 years of experience buil…"
sectionsarray<object> · 3
sections[].titlestring"Experience"
sections[].entriesarray<object> · 4
sections[].entries[].headingstring"Staff Data Engineer"
sections[].entries[].organizationstring"Prairieline Energy Cooperative"
sections[].entries[].locationstring"Minneapolis, MN"
sections[].entries[].start_datedate"2022-04-01"
sections[].entries[].end_datedate"2022-03-01"
sections[].entries[].bulletsarray<string> · 3"Lead a platform group of five engineers servin…"
skillsarray<object> · 3
skills[].categorystring"Languages"
skills[].keywordsarray<string> · 4"Python"

Sample data

Fictional records used for previews. Replace them with your own data when you call the API.

data.json
{
  "person": {
    "name": "Caleb Ashworth-Nguyen",
    "title": "Staff Data Engineer",
    "location": "Minneapolis, MN",
    "email": "caleb.an@example.com",
    "phone": "+1 202-555-0164",
    "links": ["caleb-an.example.net", "code.example.org/caleb-an"]
  },
  "summary": "Data engineer with 13 years of experience building reliable pipelines and warehouse models for energy, logistics and retail teams. I like boring, well-tested infrastructure, clear data contracts, and helping analysts ship their own work safely.",
  "sections": [
    {
      "title": "Experience",
      "entries": [
        {
          "heading": "Staff Data Engineer",
          "organization": "Prairieline Energy Cooperative",
          "location": "Minneapolis, MN",
          "start_date": "2022-04-01",
          "end_date": null,
          "bullets": [
            "Lead a platform group of five engineers serving 120 analysts across forecasting, billing and grid operations.",
            "Moved 340 nightly batch jobs to event-driven loads, bringing meter data freshness from 24 hours to 15 minutes.",
            "Introduced schema contracts and automated data quality checks that cut downstream incidents by 60% in a year."
          ]
        },
        {
          "heading": "Senior Data Engineer",
          "organization": "Bluestem Freight Analytics",
          "location": "St. Paul, MN",
          "start_date": "2018-08-01",
          "end_date": "2022-03-01",
          "bullets": [
            "Designed the shipment event model used by pricing, customer reporting and carrier scorecards.",
            "Rebuilt the ingestion service for 2,000 carrier feeds with retries, replay and per-feed alerting.",
            "Reduced monthly compute spend by 38% through partitioning, file compaction and query reviews."
          ]
        },
        {
          "heading": "Data Engineer",
          "organization": "Lakewise Retail Group",
          "location": "Chicago, IL",
          "start_date": "2015-06-01",
          "end_date": "2018-07-01",
          "bullets": [
            "Built daily sales and inventory marts for 210 stores and the online shop.",
            "Wrote the team's first testing guide and review checklist for SQL transformations."
          ]
        },
        {
          "heading": "Analytics Developer",
          "organization": "Coralroot Health Partners",
          "location": "Madison, WI",
          "start_date": "2013-09-01",
          "end_date": "2015-05-01",
          "bullets": [
            "Automated weekly operational reports that had previously been assembled by hand from four systems."
          ]
        }
      ]
    },
    {
      "title": "Selected projects",
      "entries": [
        {
          "heading": "Schema diff command-line tool",
          "organization": "Open source, maintainer",
          "location": null,
          "start_date": "2021-01-01",
          "end_date": null,
          "bullets": [
            "Compares table schemas between environments and explains breaking changes in plain language. Used in the release checks of several teams."
          ]
        },
        {
          "heading": "Data engineering mentoring circle",
          "organization": "Twin Cities data meetup",
          "location": null,
          "start_date": "2019-02-01",
          "end_date": "2023-06-01",
          "bullets": [
            "Ran monthly sessions pairing career changers with working engineers; 30 participants moved into data roles."
          ]
        }
      ]
    },
    {
      "title": "Education",
      "entries": [
        {
          "heading": "B.S. Computer Science",
          "organization": "Riverbend State University",
          "location": "Duluth, MN",
          "start_date": "2009-09-01",
          "end_date": "2013-05-01",
          "bullets": ["Minor in statistics. Teaching assistant for Introduction to Databases."]
        }
      ]
    }
  ],
  "skills": [
    { "category": "Languages", "keywords": ["Python", "SQL", "Scala", "Go"] },
    { "category": "Data", "keywords": ["Batch and stream processing", "Dimensional modeling", "Columnar file formats", "Data quality testing"] },
    { "category": "Platform", "keywords": ["Workflow orchestration", "Infrastructure as code", "Containers", "Cost monitoring"] }
  ]
}

Source

The body markup with Jinja, the stylesheet placed in <head>.

{#- Minimal single-column resume. Sections and their order come from data; an empty end date reads "Present". -#}
{%- macro date_range(start, end) -%}
{%- if start -%}
<span class="dates">{{ start | format_date("%b %Y") }} – {% if end %}{{ end | format_date("%b %Y") }}{% else %}<span class="present">Present</span>{% endif %}</span>
{%- endif -%}
{%- endmacro %}

<header class="header">
  <h1>{{ person.name }}</h1>
  <p class="title">{{ person.title }}</p>
  <ul class="contact">
    <li>{{ person.location }}</li>
    <li>{{ person.email }}</li>
    <li>{{ person.phone }}</li>
    {%- for link in person.links %}
    <li>{{ link }}</li>
    {%- endfor %}
  </ul>
</header>

{%- if summary %}
<section class="section summary">
  <h2>Summary</h2>
  <p>{{ summary }}</p>
</section>
{%- endif %}

{%- for section in sections %}
<section class="section">
  <h2>{{ section.title }}</h2>
  {%- for entry in section.entries %}
  <article class="entry{{ ' last' if loop.last else '' }}">
    <div class="entry-line">
      <h3>{{ entry.heading }}{% if entry.organization %}<span class="org">{{ entry.organization }}</span>{% endif %}</h3>
      {{ date_range(entry.start_date, entry.end_date) }}
    </div>
    {%- if entry.location %}
    <p class="where">{{ entry.location }}</p>
    {%- endif %}
    {%- if entry.bullets %}
    <ul>
      {%- for bullet in entry.bullets %}
      <li>{{ bullet }}</li>
      {%- endfor %}
    </ul>
    {%- endif %}
  </article>
  {%- endfor %}
</section>
{%- endfor %}

{%- if skills %}
<section class="section">
  <h2>Skills</h2>
  <dl class="skills">
    {%- for group in skills %}
    <dt>{{ group.category }}</dt>
    <dd>{{ group.keywords | join(", ") }}</dd>
    {%- endfor %}
  </dl>
</section>
{%- endif %}

Render it with the API

After adding the template to your workspace, render it by ID and pass your data. Arrays are shortened here.

curl -X POST https://api-eu.dynamicdocumentapi.com/v1/renders \
  -H "Authorization: Bearer $DYNAMIC_DOCUMENT_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "input": {
    "type": "template",
    "template_id": "tpl_01J9ZK3M7Q8V5W2X4Y6Z8A0B1C"
  },
  "data": {
    "person": {
      "name": "Caleb Ashworth-Nguyen",
      "title": "Staff Data Engineer",
      "location": "Minneapolis, MN",
      "email": "caleb.an@example.com",
      "phone": "+1 202-555-0164",
      "links": [
        "caleb-an.example.net",
        "code.example.org/caleb-an"
      ]
    },
    "summary": "Data engineer with 13 years of experience building reliable pipelines and warehouse models for energy, logistics and retail teams. I like boring, well-tested infrastructure, clear data contracts, and helping analysts ship their own work safely.",
    "sections": [
      {
        "title": "Experience",
        "entries": [
          {
            "heading": "Staff Data Engineer",
            "organization": "Prairieline Energy Cooperative",
            "location": "Minneapolis, MN",
            "start_date": "2022-04-01",
            "end_date": null,
            "bullets": [
              "Lead a platform group of five engineers serving 120 analysts across forecasting, billing and grid operations.",
              "Moved 340 nightly batch jobs to event-driven loads, bringing meter data freshness from 24 hours to 15 minutes."
            ]
          },
          {
            "heading": "Senior Data Engineer",
            "organization": "Bluestem Freight Analytics",
            "location": "St. Paul, MN",
            "start_date": "2018-08-01",
            "end_date": "2022-03-01",
            "bullets": [
              "Designed the shipment event model used by pricing, customer reporting and carrier scorecards.",
              "Rebuilt the ingestion service for 2,000 carrier feeds with retries, replay and per-feed alerting."
            ]
          }
        ]
      },
      {
        "title": "Selected projects",
        "entries": [
          {
            "heading": "Schema diff command-line tool",
            "organization": "Open source, maintainer",
            "location": null,
            "start_date": "2021-01-01",
            "end_date": null,
            "bullets": [
              "Compares table schemas between environments and explains breaking changes in plain language. Used in the release checks of several teams."
            ]
          },
          {
            "heading": "Data engineering mentoring circle",
            "organization": "Twin Cities data meetup",
            "location": null,
            "start_date": "2019-02-01",
            "end_date": "2023-06-01",
            "bullets": [
              "Ran monthly sessions pairing career changers with working engineers; 30 participants moved into data roles."
            ]
          }
        ]
      }
    ],
    "skills": [
      {
        "category": "Languages",
        "keywords": [
          "Python",
          "SQL"
        ]
      },
      {
        "category": "Data",
        "keywords": [
          "Batch and stream processing",
          "Dimensional modeling"
        ]
      }
    ]
  },
  "output": {
    "format": "pdf",
    "filename": "resume-minimal.pdf"
  }
}'