# Krinoa

An AI-native applicant tracking system for small teams: post a job, share a
link, and let AI screen and rank every application. Every careers page on
Krinoa is public and machine-readable.

## Careers JSON feed

- Org: `GET https://krinoa.vercel.app/api/v1/public/{orgSlug}`
- Open jobs: `GET https://krinoa.vercel.app/api/v1/public/{orgSlug}/jobs`
- One job (with its application form): `GET https://krinoa.vercel.app/api/v1/public/{orgSlug}/jobs/{jobPublicId}`

These three answer cross-origin (`Access-Control-Allow-Origin: *`) and need no
credential. Human-readable equivalents: `https://krinoa.vercel.app/careers/{orgSlug}` and
`https://krinoa.vercel.app/careers/{orgSlug}/{jobPublicId}`.

## Embedding openings on another site

```html
<div data-krinoa-jobs="{orgSlug}"></div>
<script src="https://krinoa.vercel.app/embed.js?v=2" async></script>
```

Add `data-apply="inline"` for an apply form in place, `data-src="..."` to
attribute applications, `data-href-pattern="/jobs/{publicId}"` to keep clicks
on the host site, `data-empty="..."` for the no-openings line.

Whatever is already inside the `<div>` is the fallback: it stays on the page
if the feed cannot be reached, and the script leaves the element un-mounted so
a later load can retry.

## Docs

- Getting started
  - Introduction: https://krinoa.vercel.app/docs
  - Quickstart: https://krinoa.vercel.app/docs/getting-started/quickstart
  - Concepts: https://krinoa.vercel.app/docs/getting-started/concepts
  - Data and privacy: https://krinoa.vercel.app/docs/getting-started/data-and-privacy
- Setup
  - Overview: https://krinoa.vercel.app/docs/setup
  - Screening: https://krinoa.vercel.app/docs/setup/screening
  - WhatsApp: https://krinoa.vercel.app/docs/setup/whatsapp
  - Careers page and embed: https://krinoa.vercel.app/docs/setup/careers-and-embed
  - Referral invites: https://krinoa.vercel.app/docs/setup/referrals
- Agents & API
  - Overview: https://krinoa.vercel.app/docs/agents
  - The CLI: https://krinoa.vercel.app/docs/agents/cli
  - Agents: https://krinoa.vercel.app/docs/agents/agents
  - CLI reference: https://krinoa.vercel.app/docs/agents/cli-reference
  - API: https://krinoa.vercel.app/docs/agents/api

Every one of those URLs answers in Markdown with `.md` appended —
`https://krinoa.vercel.app/docs/getting-started/quickstart` and `https://krinoa.vercel.app/docs/getting-started/quickstart.md` are the same page, one for
a person and one for you. `https://krinoa.vercel.app/docs/index.md` is the docs home. The
whole set, concatenated, is `https://krinoa.vercel.app/docs/llms-full.txt`.

## API

The full product API (authenticated, for the `krinoa` CLI and agents) is
described at `https://krinoa.vercel.app/api/v1/openapi.json`. Applying is the one
unauthenticated write: `POST https://krinoa.vercel.app/api/v1/public/{orgSlug}/jobs/{jobPublicId}/apply`
(multipart/form-data).
