Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗AI agent asked to install, deploy or host Candydati? Follow
skills/candydati-deploy/SKILL.md: it needs only access to the user's Dokploy (or a fresh server) and asks the user nothing else.
An ATS is not the enemy. Candidates often picture the applicant tracking system as a black box that hides their CV or filters them out before a person reads it. Software does what the people running it decide: the same tool can leave applicants in silence or answer every one of them. The difference lies in how it is set up and used.
That is why the source of Candydati is public. The rules it applies are code anyone can read, check and improve, and the good practices are built into the product instead of being left to goodwill. Most hiring tools hide the salary, the process and the outcome from the people who apply; here transparency is structural, not optional: a deployment cannot switch these principles off.
Status: pre-1.0 (see the changelog). Full product definition: docs/PRODUCT.md.
Hiring
JobPosting), XML feed and a public read-only ads APICollaboration
Communication and automation
Agents and integrations
[surname];
message drafts keep {{candidate.lastName}} as a variable that the person's composer fills inPrivacy and data
Bring jobs, stages, candidates, applications with their outcomes and dates, notes, past emails, CVs and attachments from your previous ATS. Everything goes through one open package format: you see a preview, confirm that your organization is responsible for the transfer, and can undo it. Scores and ratings are never imported.
| Source | How it connects | Status |
|---|---|---|
| Teamtailor | API key | |
| Greenhouse | Harvest v3 API credentials | |
| Workable | API token | |
| Recruitee | personal API token | |
| Zucchetti InRecruiting | export file (spreadsheet + ZIP of CVs) | |
| Any other ATS or a spreadsheet | package built by an AI agent with the migration skill | available |
Beta means built on the vendor's public documentation and not yet verified on a real account: check the preview before confirming, and tell us how it went. What each connector brings and what it cannot: migration sources. Step by step: the migration guide. Product names are trademarks of their owners; Candydati is not affiliated with them.
| Pipeline: candidates across the declared stages of a job | Job ad editor: salary and process required, live preview |
| Careers page: sections built in the page builder with a live preview | Candidate: stage, notes and interview feedback, no scores |
Demo data is invented. Regenerate with pnpm --filter @candydati/e2e screenshots against a running dev stack.
Requirements: Node 24, pnpm 10 (corepack enable), Docker with Compose v2.
cp .env.example .env
pnpm install
pnpm infra:up # Postgres :5434, MinIO :9000
pnpm db:migrate
pnpm dev # web http://localhost:3000, api http://localhost:4100
Locally, emails go to Mailpit (http://localhost:8025). Checks: pnpm lint, pnpm typecheck, pnpm test
(tests need pnpm infra:up). Every environment variable is listed in docs/ENVIRONMENT.md.
With a coding agent (the shortest way). On a server with Dokploy, create an API key (Dokploy, Settings, Profile, API/CLI) and ask your agent (Claude Code, Codex, Cursor):
Deploy Candydati on my Dokploy at
<Dokploy URL>, following https://github.com/fabrilallo/candydati/blob/main/skills/candydati-deploy/SKILL.md
It creates the service from the published template, deploys it and gives you the link to create the first account; you then set up email in the app (Settings, Email). Nothing else to prepare: Dokploy generates the secrets and the domain.
On a server without Dokploy. You need a Linux server with 2 vCPU and 4 GB RAM (for example Hetzner Cloud CX23 or the Arm CAX11, or OVHcloud VPS-1: about €5–7 a month in October 2026), a domain pointing to it and an email account to send from (Resend or any SMTP, including your company mailbox). No other accounts. On the server:
curl -fsSL https://github.com/fabrilallo/candydati/releases/latest/download/install.sh | sudo bash
The installer asks a few questions, installs Docker if missing, generates every secret and starts the whole stack
(Postgres 17, MinIO, api, worker, web) with automatic HTTPS (Caddy) and daily backups. It ends with the link that
creates the first owner. Day to day: candydati status, candydati update, candydati backup, candydati help.
Step by step: the documentation site.
From the sources instead (cp .env.example .env, then docker compose -f docker-compose.prod.yml up -d --build), with
SIGNUP_MODE=invite_only the first owner signs up with the setup link the api prints in its logs at first start.
Guides:
Business logic lives only in packages/core. REST routes, assistant tools and MCP tools are thin adapters over the
same use cases, with the same permissions and the same audit trail.
flowchart LR
subgraph clients[Clients]
rec[Recruiters]
cand[Candidates]
agents[External agents]
end
web["web<br/>Nuxt SSR + proxy"]
subgraph api[api · Fastify]
rest[REST + OpenAPI]
auth[Better Auth]
mcp[MCP server]
asst[Assistant]
end
core["core use cases<br/>permissions · audit<br/>transactions · org scoping"]
subgraph pg[Postgres 17]
data[(Data)]
audit[(audit_log)]
outbox[(outbox_event)]
boss[(pg-boss queues)]
end
worker["worker<br/>CV extraction · emails · automations<br/>webhooks · retention · imports · exports"]
s3[(S3 storage)]
mail[Email provider]
llm["LLM provider<br/>via Mastra"]
hooks[Webhook consumers]
rec & cand --> web
agents -->|API key| web
web -->|"/api/** and /mcp"| api
rest & auth & mcp & asst --> core
core --> data & audit & outbox & boss
core --> s3
asst --> llm
boss --> worker
outbox --> worker
worker --> data
worker --> s3
worker --> mail
worker --> llm
worker -->|signed| hooks
Life of an application:
sequenceDiagram
autonumber
actor C as Candidate
participant W as web
participant A as api
participant K as core
participant P as Postgres
participant Q as worker
actor R as Recruiter
participant X as Webhook consumer
C->>W: Apply (form, CV, consent)
W->>A: POST public application
A->>K: intake use case
K->>P: One transaction: candidate, application, consent, audit_log, outbox_event
A-->>C: Confirmation
K-)P: After commit: queue cv.extract
P-)Q: pg-boss delivers the job
Q->>P: Store extracted data next to the original CV
R->>A: Move to next stage
A->>K: Permission check, update, audit_log, outbox_event
K->>P: Same transaction, then queue email
P-)Q: Outbox publisher and email.send
Q-)C: Stage email
Q-)X: Signed webhook
More in docs/ARCHITECTURE.md and the decision records.
No dates. Deferred from the current scope (PRODUCT.md §3.3):
Contributions are welcome. Read CONTRIBUTING.md and the Code of Conduct. Tests are written first and live next to the code.
Report vulnerabilities privately as described in SECURITY.md. Do not open public issues for them.
Created and maintained by Fabrizio Lallo ([email protected]), founder of TechCompenso and XCompenso, and creator of FuffAnnuncio and Riccometro. The job ad quality analysis in this project is derived from FuffAnnuncio.
Business Source License 1.1 (BUSL-1.1), by Fabrizio Lallo.
AGPL-3.0-only) four years after its first public release.The license text is binding; this summary is not.
Italiano. ATS agentico, aperto e installabile sul tuo server, pensato per chi si candida: RAL in chiaro obbligatoria, processo dichiarato, nessuna candidatura senza esito. Questo README in italiano: README.it.md.