Auditable TypeScript library for generating, rendering, and verifying Open Source CVs (public GitHub evidence only, not traditional resumes).
- Jinja-syntax templates via Nunjucks (
templates/cv.jinja) - Genesis snapshots with section embeddings and SHA-256 content hash
- HNSW nearest-neighbor doctoring checks against configurable thresholds
- Ports and adapters so embedders, indexes, PDF engines, and LLM hosts stay swappable
Used in production by Gitwork.
| Layer | Role |
|---|---|
domain/ |
Pure parse, sectionize, hash, score, model policy |
ports/ |
Embedder, VectorIndex, TemplateRenderer, PdfExporter, CvGenerator |
adapters/ |
Hashing embedder, HNSW, Nunjucks, HTML to PDF |
application/ |
OssCvService facade + createOssCvService factory |
basics- identity, summary, location (full country name), GitHub handle/avatarskills- skill groups + keywordsrepos- public repositories with summaries (no invented repos)oss- notable contribution impact
No employers, job history, or education sections.
- Sectionize -
basics.summary,skills, eachrepos.*/oss.* - Genesis - immutable
{ document, model, promptVersion, contentHash, sections[] } - Embed - injectable; default
HashingEmbedder(384-d, portable) - Verify - HNSW (or exact for N≤64); fail if mean
< 0.82, any section< 0.65, inventedrepos.*, or untrusted model - Structural diff - JSON path added/removed/changed for UI
See TRUSTED_CV_MODELS in src/domain/models.ts. Genesis from other models is marked untrusted and fails verify.
npm install @gitwork-oss/osscv nunjucksFormerly published as
@ombedzi/osscv. Install and import@gitwork-oss/osscvunder the gitwork-oss org.
import { createOssCvService, parseOssCvDocument } from "@gitwork-oss/osscv";
const svc = createOssCvService();
const document = parseOssCvDocument(cvJson);
const genesis = await svc.createGenesis({
document,
model: "Cursor default",
});
const result = await svc.verify({ genesis, candidate: editedJson });
const html = await svc.renderHtml(genesis.document, undefined, {
liveProfileUrl: "https://gitwork.getuigen.dev/login",
gitworkHomeUrl: "https://gitwork.getuigen.dev",
osscvRepoUrl: "https://github.com/gitwork-oss/osscv",
});
const pdf = await svc.renderPdf(document);npm install
npm run build
npm run pack:check
npm run publish:npmprepublishOnly runs tests + build automatically before publish.
This package contains no API keys, tokens, or credentials. Host apps inject LLM/MCP and database adapters separately.
Each source directory has a __tests__/ folder. Test files mirror the module name (hash.ts → __tests__/hash.test.ts).
npm testMIT