Skip to content
AdityaTotePublic

About

Multi-service AI platform for job-application assistance — resume analysis, cover letter, cold email, and LinkedIn note generation using LangGraph + Gemini with RAG retrieval.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Joblyser

Joblyser is an AI-powered job application platform for resume-assisted analysis and content generation (reviews, cover letters, cold emails, and LinkedIn notes).

This repository is a monorepo containing all runtime services and shared migration assets.

Monorepo Layout

Path Service Purpose
joblyser-web Next.js User-facing web application
joblyser-api Go Auth, user/resume APIs, and dispatch proxy
joblyser-dispatch FastAPI (Python) Session/task API and Celery task producer
joblyser-worker Celery (Python) Asynchronous task consumer
joblyser-ai FastAPI (Python) Agent execution, job-description extraction, and RAG
migrations SQL Shared Postgres schema migrations
docs Markdown Workspace documentation

System Overview

  1. The web app uses joblyser-api for auth, user, resume, and API-proxied agent requests, and calls joblyser-dispatch for streamed agent runs and job-description extraction.
  2. joblyser-dispatch creates and tracks tasks, then publishes worker.tasks.agent to RabbitMQ's agent-queue.
  3. joblyser-worker consumes the task and invokes joblyser-ai with a worker service token.
  4. joblyser-ai executes the agent workflow; the worker persists task/chat updates for dispatch to stream back to the web app.

Platform Capabilities

  • JD analysis: Skill matching, strengths/gaps, and fit summary.
  • Generated assets: Cover letter, cold email, and LinkedIn note generation.
  • Session history: Multi-run chat history per server-generated session.
  • Resume workflow:
    • upload resume documents
    • select profile primary resume
    • use profile or ad-hoc resume in session
  • Editable outputs:
    • cover_letter, linkedin_note, cold_mail support editing
    • edits are persisted via orchestrated API routes with debounced autosave.

Prerequisites

  • Bun 1.2.18
  • Go 1.25+
  • Python 3.13+
  • PostgreSQL
  • MongoDB
  • RabbitMQ
  • Chroma and Redis-compatible storage for AI/dispatch/worker flows

Docker Compose Setup

  1. Copy .env.example to .env at the repository root.
  2. Copy each env/.env.{ai,api,dispatch,worker}.example to its non-example counterpart and set the required values.
  3. Resolve the current Compose service-name mismatch (worker.depends_on.agent should refer to ai) before running docker compose up --build.

By default, host port bindings in docker-compose.yml are restricted to 127.0.0.1 for safer local usage. Only set a *_BIND_HOST variable to 0.0.0.0 when you intentionally want external access.

Local Runbook

  1. Start infrastructure dependencies:
    • PostgreSQL
    • MongoDB
    • RabbitMQ
  2. Apply SQL migrations from migrations/.
  3. Start services in this order:
    • joblyser-ai
    • joblyser-worker
    • joblyser-dispatch
    • joblyser-api
    • joblyser-web

For service-specific commands and environment variables, see each service README.

Current Product Behaviors

  • Session IDs are server-generated.
  • Agent runs are streamed from dispatch as server-sent events.
  • Task and chat state are stored outside Postgres by dispatch and worker.

Repository Conventions

  • Treat services as independent deployable units.
  • The web app uses /api/v1 on both the Go API and dispatch; AI routes are mounted under /api.
  • Prefer server-owned identifiers for persistent entities (sessions/chats/jobs).
  • Avoid committing secrets; use local env files and templates.

Documentation

  • Workspace docs index: docs/README.md
  • Developer workflow guide: docs/development-workflow.md

About

Multi-service AI platform for job-application assistance — resume analysis, cover letter, cold email, and LinkedIn note generation using LangGraph + Gemini with RAG retrieval.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages