No description
  • Rust 42%
  • TeX 36.2%
  • Typst 10.9%
  • Nix 9.9%
  • Just 0.9%
  • Other 0.1%
Find a file
2026-01-10 20:27:29 +01:00
.git-crypt Add 1 git-crypt collaborator 2026-01-10 16:44:08 +01:00
.vscode feat: linkedin API -> jsonresume -> typst 2026-01-10 16:00:43 +01:00
nix feat: linkedin API -> jsonresume -> typst 2026-01-10 16:00:43 +01:00
rust feat: linkedin API -> jsonresume -> typst 2026-01-10 16:00:43 +01:00
typst feat: track secrets 2026-01-10 20:27:29 +01:00
v1 move previous to v1 2025-05-12 15:31:26 +02:00
.envrc feat: linkedin API -> jsonresume -> typst 2026-01-10 16:00:43 +01:00
.envrc.private feat: track secrets 2026-01-10 20:27:29 +01:00
.gitattributes feat: linkedin API -> jsonresume -> typst 2026-01-10 16:00:43 +01:00
.gitignore git: ignore blobs 2026-01-10 20:27:29 +01:00
.gitmodules feat: linkedin API -> jsonresume -> typst 2026-01-10 16:00:43 +01:00
Cargo.lock feat: linkedin API -> jsonresume -> typst 2026-01-10 16:00:43 +01:00
Cargo.toml feat: linkedin API -> jsonresume -> typst 2026-01-10 16:00:43 +01:00
flake.lock feat: linkedin API -> jsonresume -> typst 2026-01-10 16:00:43 +01:00
flake.nix feat: start leptos with blueprint nix setup 2025-05-12 15:34:05 +02:00
Justfile docs: update README and Justfile accordingly 2026-01-10 16:16:11 +01:00
README.md fix(docs): typo 2026-01-10 16:31:41 +01:00
rust-toolchain.toml feat: linkedin API -> jsonresume -> typst 2026-01-10 16:00:43 +01:00

Stefan Junker's CV

Current Iteration

  1. Use linkedin-member-portability-cli's download command to download my data from LinkedIn via the Membership API. (CAVEAT: stated to only be available for individuals with EU/Switzerland residency, not sure if or how they verify this.)

You can enable the Member portability APIs and create an OAuth2 token. 2. Use linkedin-member-portability-cli's convert command the data into a JSONResume compatible format. 3. Render it into a PDF using a custom typst template.

Usage

Requesites:

  • LINKEDIN_ACCESS_TOKEN is set with a valid OAuth2 token.
    • This can retrieved
  • FIXME: requires typst/.secrets.typ defining an email:
    #let secret_email = "name@your.tld"
    
  1. Optional, highly recommended: load the nix shell (i.e. `nix develop .#rust)
  2. just generate
  3. just view
Example output
$ just generate
cargo run -p linkedin-member-portability-cli -- download --all-domains --page-all --output target/linkedin-profile.json
   Compiling linkedin-member-portability-api v0.1.0 (/home/steveej/src/steveej/cv/rust/linkedin-member-portability-api)
   Compiling linkedin-member-portability-cli v0.1.0 (/home/steveej/src/steveej/cv/rust/linkedin-member-portability-cli)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.38s
     Running `target/debug/linkedin-member-portability-cli download --all-domains --page-all --output target/linkedin-profile.json`
2026-01-10T15:16:40.768942Z  INFO linkedin_member_portability_cli: requesting member snapshot domains=["PROFILE", "POSITIONS", "EDUCATION", "VOLUNTEERING_EXPERIENCES", "SKILLS"] start=None count=None page_all=true
cargo run -p linkedin-member-portability-cli -- json-resume --input target/linkedin-profile.json --output target/resume.json
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.08s
     Running `target/debug/linkedin-member-portability-cli json-resume --input target/linkedin-profile.json --output target/resume.json`
just _typst compile
# typst expects all paths to be relative to its root.
# pragmatic solution: recreate the path.
mkdir -p typst/target
cp target/resume.json typst/target/
typst compile --input today="$(date '+%b %d, %Y')" --input jsonresume="target/resume.json" typst/resume.typ target/resume.pdf
steveej@steveej-fw13 ✓ ~/src/steveej/cv 🐚 main
$ just view
just _typst compile
# typst expects all paths to be relative to its root.
# pragmatic solution: recreate the path.
mkdir -p typst/target
cp target/resume.json typst/target/
typst compile --input today="$(date '+%b %d, %Y')" --input jsonresume="target/resume.json" typst/resume.typ target/resume.pdf
xdg-open target/resume.pdf
(objectpath '/org/freedesktop/portal/desktop/request/1_78/t',)

Previous Iterations