Problem
The whole point of JSON Resume is portability — one resume.json file used across many renderers. Today the template requires the caller to hand-translate the JSON into a Typst dict (different quoting, content vs string distinction, etc.). That friction makes the JSON Resume compatibility story aspirational.
Proposed solution
Add a public entrypoint alta-from-json(json-source, labels: (:), preferences: (:)) that:
- Reads or accepts a JSON string (or accepts an already-parsed dict).
- Validates the shape against the supported subset (panicking with helpful messages on unknown sections).
- Coerces strings → content where the renderer expects content (e.g.
highlights[], summary).
- Calls
alta() with the result.
Usage:
#import "@preview/altacv:0.x.x": alta-from-json
#alta-from-json(read("resume.json"))
Alternatives considered
- A separate companion script — kills the "single typst compile" workflow.
- Make
alta() accept JSON directly — overloads the entrypoint; better to keep concerns separate.
Problem
The whole point of JSON Resume is portability — one
resume.jsonfile used across many renderers. Today the template requires the caller to hand-translate the JSON into a Typst dict (different quoting, content vs string distinction, etc.). That friction makes the JSON Resume compatibility story aspirational.Proposed solution
Add a public entrypoint
alta-from-json(json-source, labels: (:), preferences: (:))that:highlights[],summary).alta()with the result.Usage:
Alternatives considered
alta()accept JSON directly — overloads the entrypoint; better to keep concerns separate.