跳到正文
GitHub·· 6 天前AI 评分22

ManifestCV:把个人职业知识库变成按 JD 定制的 AI 简历

Nachiket-2024/manifest-cv

AI 导读

ManifestCV 将一份私有职业知识库转化为针对每个职位描述定制的 AI 辅助简历:粘贴一次职业材料,由 Gemini 结构化为可编辑 Markdown,经 Qdrant 语义检索出与岗位相关的片段,再由 Resume Studio 生成并迭代简历,最终用内置 tectonic 渲染成 PDF。

正文

ManifestCV

Python FastAPI React TypeScript SQLAlchemy PostgreSQL Valkey Qdrant Gemini Procrastinate Bugsink License


Overview

ManifestCV turns one private career knowledge base into tailored, AI-assisted resumes for each job description. Paste your career material once. ManifestCV structures it, retrieves the relevant sections for each role, generates and refines a resume from them, then compiles and tracks the result.

Identity, sessions, and access control are provided by mystic-auth, a full-stack auth/PBAC foundation, vendored in unmodified. See Auth & Authorization for how ManifestCV is wired to it, and the mystic-auth repository itself for everything about how login, OAuth2, policy-based access control, the command palette, and bulk user/policy actions actually work.

See docs/README.md for architecture, product features, database, API reference, testing, Docker, CI/CD, and deployment.


Screenshots

All screenshots below are captured from the running Docker app in dark mode at a fixed 1440 × 900 laptop viewport.

Product landing page

ManifestCV product landing page

See all 8 screenshots (landing page through applications)


1. Product landing page

ManifestCV product landing page


2. Career Knowledge

ManifestCV Career Knowledge page


3. Resume Studio workspace list

ManifestCV Resume Studio workspace list


4. Resume Studio setup

ManifestCV Resume Studio setup


5. Resume Studio template selection

ManifestCV Resume Studio template selection


6. Resume Studio builder

ManifestCV Resume Studio builder


7. Resume Studio revisions and application snapshot controls

ManifestCV Resume Studio revisions and application snapshot controls


8. Applications

ManifestCV Applications page


Architecture

%%{init: {"themeVariables": {"lineColor": "#334155"}} }%%
flowchart TD
    User["Candidate"] --> App["ManifestCV web app"]
    App --> Knowledge["Career Knowledge\n structured source material"]
    Knowledge --> Retrieval["Qdrant retrieval"]
    User --> Job["Job description"]
    Job --> Studio["Resume Studio\n tailored draft and revisions"]
    Retrieval --> Studio
    Studio --> Render["Document renderer\n PDF via tectonic"]
    Render --> Application["Application snapshot\n resume and PDF"]
    Studio --> Application
    App --> API["ManifestCV API"]
    API --> Data[("PostgreSQL\n workspaces and applications")]
    API --> Queue["Procrastinate jobs"]
    API --> Identity["Mystic Auth SDK\n identity and access"]
    API --> Cache["Valkey\n ephemeral state"]
    linkStyle default stroke:#334155,stroke-width:2px

Loading

ManifestCV keeps the candidate's structured career knowledge as the source for tailored resume work. A job description selects relevant knowledge, Resume Studio generates and refines the document, and the renderer produces a PDF. Saving an application stores the selected content, template, and PDF as a snapshot so later workspace edits do not change application history.

Mystic Auth supplies the identity and access foundation through the SDK. The ManifestCV API owns the product workflow and its data, while PostgreSQL stores durable records, Qdrant supports retrieval, Valkey handles ephemeral state, and Procrastinate runs background work. See System Architecture for the product component map and Auth & Authorization for the integration boundary.


Features

  • Career Knowledge Base: paste in your resume, LinkedIn export, project notes, whatever you have. Gemini structures it into clean, editable Markdown, always directly re-editable by hand afterward. See Career Knowledge.
  • Semantic Retrieval: your knowledge base is chunked and embedded into Qdrant, so resume generation retrieves only the sections relevant to a specific job description instead of dumping everything into one prompt. See AI & Retrieval.
  • AI-Assisted Resume Studio: start from a template, generate a tailored resume from a job description, then refine it with natural-language instructions that re-match the knowledge base. See Resume Studio.
  • PDF Document Generation: once approved, render the structured Resume Studio document to a polished PDF with the bundled tectonic engine. No LaTeX installation is required, and multiple visual templates are available. See Document Generation.
  • Application Tracking: save an approved Resume Studio workspace against a job application. The resume content, template, and PDF are snapshotted at that moment, so tracked applications survive later edits to the source workspace. See Applications.
  • Product foundation: ManifestCV uses Mystic Auth for identity and access, so the product has real account isolation without duplicating that infrastructure in the app layer. See Auth & Authorization.
  • Operational visibility: backend and frontend exceptions are reported to self-hosted Bugsink or Sentry through the shared monitoring integration. See Error Monitoring.

Stack

  • Backend: FastAPI (fully async), SQLAlchemy 2.0 (async, asyncpg), Alembic migrations
  • AI: Google Gemini. Text generation (structuring, resume generation/refinement) and embeddings
  • Retrieval: Qdrant. Self-hosted vector search over per-user career knowledge chunks
  • Document generation: Structured document → PDF renderer → tectonic (self-contained compiler, no TeX Live install)
  • Authentication: Email + Password (Argon2 hashing, JWT access & refresh tokens), Google OAuth2 with PKCE. Via mystic-auth
  • Frontend: TypeScript, React 19 + Vite, Tailwind CSS, Radix UI
  • Translations: English, Hindi, Marathi, and Gujarati via react-i18next, including mixed English-chrome/translated-content modes. See Translations Overview
  • State Management: Zustand (client/session state) + TanStack Query (server state/caching)
  • Database: PostgreSQL (async)
  • Caching & Tasks: Valkey for ephemeral cache and security counters, plus Procrastinate for Postgres-native async background email delivery and the daily account-purge job. See Background Email Delivery.
  • Error monitoring: Sentry SDK protocol, self-hosted Bugsink by default (or Sentry's hosted free tier)
  • Deployment: Docker (dev, self-hosted local-prod through Cloudflare Tunnel/ngrok/Tailscale, and prod on your own server through Caddy)
  • Authorization: Policy-Based Access Control (PBAC); new accounts get the baseline self_service policy plus any policy names listed in DEFAULT_APP_POLICIES, without modifying Mystic Auth internals. See Auth & Authorization

Getting started

For the quickest setup, give an AI coding agent the ManifestCV setup prompt. It handles the paired environment files, Docker startup, health checks, product smoke checks, and Mystic Auth ownership boundaries.

If you are setting it up manually, ManifestCV runs as a Docker stack. The short development path is:

cp env/mystic_auth/.env.dev.example env/mystic_auth/.env.dev
cp env/app/.env.dev.example env/app/.env.dev
# Set APP_NAME, database values, credentials, and GEMINI_API_KEY
docker compose -f docker/mystic_auth/compose/docker-compose.dev.yml -f docker/app/compose/docker-compose.dev.yml \
  --env-file env/mystic_auth/.env.dev --env-file env/app/.env.dev up -d --build

Open the product at http://localhost:5173. The API documentation is available at http://localhost:8000/docs.

The root README intentionally covers only this one development path. For environment ownership, production and tunnel deployments, migrations, first-time system account setup, testing, and troubleshooting, use the focused documentation:


Product highlights

  • One source of truth: maintain career knowledge once and reuse it across roles.
  • Role-specific resumes: generate from a job description, then refine the result without losing the source material.
  • Revision-aware workspaces: keep draft changes, selected layouts, and generated artifacts together.
  • Application history: preserve what was actually submitted instead of linking to a mutable draft.
  • Fast navigation: use the shared command palette to move between career knowledge, Resume Studio, and applications.

Documentation

Full documentation lives in docs/, organized by feature/domain:

For the underlying authentication/authorization system itself, how login, OAuth2, JWT/cookie handling, Policy-Based Access Control, and the command palette actually work, see mystic-auth and its own documentation.


Getting Help & Contributing

Issues and pull requests are welcome. Check Known Issues & Concerns (and mystic-auth's own at docs/mystic_auth/concerns/README.md) and PBAC Troubleshooting first, then search existing issues before opening a new one. Found a security vulnerability? Don't open a public issue. See SECURITY.md for private reporting.


License

MIT. See LICENSE.


来源:GitHub · github.com