Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Resume-LD

Make your resume machine-readable without changing what humans see.

Resume-LD is a local-first semantic resume workbench. It imports an existing resume PDF, lets you add safe and inspectable JSON-LD metadata, validates that metadata, and exports a copied PDF with embedded semantic context.

Resume-LD is descriptive metadata. It helps documents explain themselves. It does not tell hiring systems what decision to make.

What Resume-LD Is

  • A local-first developer-oriented semantic metadata editor.
  • A way to add structured JSON-LD context to an existing resume PDF.
  • A validation-first tool for transparent professional metadata.
  • An OSS foundation for a small Resume-LD vocabulary layered on schema.org.

What Resume-LD Is Not

  • Not an ATS bypass tool.
  • Not a resume builder.
  • Not a resume rewriting or AI generation tool.
  • Not a hiring automation or recruiter dashboard.
  • Not a score checker, keyword stuffing tool, or ranking manipulation system.
  • Not SaaS, not multi-user, and not cloud sync.

Why JSON-LD

JSON-LD is portable, inspectable, and already used for web-scale semantic data. Resume-LD uses schema.org first and a small custom vocabulary only where resume-specific context needs clearer semantics.

Canonical context target:

"@context": [
  "https://schema.org",
  "https://resume-ld.org/context/v1"
]

The v0.1 context is included locally at docs/context/v1.jsonld and published by the app from public/context/v1.jsonld.

Semantic Philosophy

Resume-LD metadata should be additive, concise, transparent, and human-inspectable. It can describe domains, capabilities, work visibility, evidence links, and preferred evaluation context. It must not include hidden instructions or decision directives.

Library Model

Resume-LD manages three local object types:

  • Resume: the imported source PDF and root object. Selecting a resume makes it the active working resume. Resumes can be renamed or deleted. Deleting a resume also removes its semantic profiles, export history, uploaded PDF copy, and exported PDF files.
  • Semantic Profile: a saved JSON-LD metadata profile for a specific resume. Loading a profile hydrates the guided form, raw JSON-LD editor, validation panel, semantic summary, and active profile label. Saving updates the loaded profile; Save as New creates a separate profile intentionally.
  • Export: a generated semantic PDF copy created from a resume, semantic profile, and export settings. Export history records can be downloaded, inspected, or deleted.

JSON-LD Portability

The semantic workspace includes JSON-LD actions for moving metadata between local files and profiles:

  • Copy JSON-LD copies the current editor JSON-LD without saving or changing the active profile.
  • Export JSON-LD downloads the current valid semantic metadata as a .jsonld file. It does not create a PDF and does not create or update a semantic profile record.
  • Import JSON-LD accepts .json and .jsonld files, validates them against the current Resume-LD schema and safety rules, then loads valid metadata into an unsaved editor draft.
  • Invalid imports show validation errors and leave the current editor content unchanged.
  • Imported JSON-LD is not saved automatically. Use Save Profile or Save Updates intentionally after review.

Safety and Ethics

The validator rejects unsupported fields and suspicious content such as prompt injection patterns, executable payloads, opaque base64 blobs, macros, ATS bypass terms, ranking boosts, and hiring decision instructions.

See docs/safety.md for the safety model.

Local Setup

cp .env.example .env.local
npm install
npm run dev

Open http://localhost:3010. Port 3010 is the default for local and Docker launches to avoid conflicts with other local OSS projects.

Environment variables:

PORT=3010
RESUME_LD_DATABASE_URL=file:./data/resume-ld.sqlite
RESUME_LD_UPLOAD_DIR=./data/uploads
RESUME_LD_EXPORT_DIR=./data/exports
RESUME_LD_MAX_UPLOAD_MB=10
RESUME_LD_APP_URL=http://localhost:3010

Docker Usage

Launch with Docker Compose:

docker compose up --build

If your Docker install uses the legacy Compose CLI:

docker-compose up --build

Open http://localhost:3010.

The compose file maps 3010:3010 and mounts ./data into the container so uploads, exports, and SQLite persistence remain local.

Architecture Overview

Resume-LD is a single local Next.js application with explicit server-side modules for storage, validation, PDF export, and SQLite persistence. The browser talks only to local API routes. The app stores imported PDFs under data/uploads, exported copies under data/exports, and metadata records in data/resume-ld.sqlite. Semantic profiles are stored in SQLite with their validation reports; exports are history records backed by local PDF files.

See docs/architecture.md for the architecture diagram, object lifecycle rules, and data flow.

app/                         Next.js App Router UI and API routes
components/                  Workbench UI and local shadcn-style primitives
lib/db/                      SQLite and Drizzle schema/client
lib/resume-ld/schema/        Strict v0.1 JSON-LD schema
lib/resume-ld/validation/    Validation report generation
lib/resume-ld/safety/        Safety scanning rules
lib/resume-ld/pdf/           PDF embed and inspect behavior
lib/resume-ld/storage/       Local file and path safety helpers
docs/                        Architecture, schema, safety, context, and examples
examples/                    Example Resume-LD documents

Schema Overview

Required fields:

  • @context
  • @type = Person
  • name
  • resumeLDVersion
  • metadataPurpose

Allowed metadata purposes:

  • semantic-context
  • accessibility-context
  • professional-context

See docs/schema.md for full field and validation details.

PDF Caveats

v0.1 embeds JSON-LD using pdf-lib file attachment support, PDF document metadata, and an inspectable Resume-LD marker appended to the exported PDF copy. This keeps local inspection deterministic.

This is not yet claimed as standards-compliant XMP support. Improved PDF/XMP support remains a future roadmap item.

License

Resume-LD is licensed under the Apache License, Version 2.0.

Copyright 2026-2030 Gregory Kulp

About

JSON-LD semantics for resumes to carry machine-readable context

Topics

Resources

Contributing

Stars

Watchers

Forks

Contributors

Languages