Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
채용 공고와 비공개 회의 메모를 구조화된 채용 매트릭스로 변환해 채용 담당자용과 지원자용 두 버전을 제공합니다
Turn a job description and private client-meeting notes into a structured hiring Matrix — forked into a recruiter copy and a candidate-safe copy.
비즈니스TypeScript · CSSGitHub @marcoscuellar온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기SPYGLASSMATRIX for Spyglass Partners
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
An internal tool for a recruiting/staffing firm. A recruiter submits a job
description plus their raw client-meeting notes; an AI generates a structured
hiring Matrix (search strategy + role-specific screening questions), which
is then forked into a full internal Recruiter copy and a sanitized
Candidate-safe copy. The recruiter submits the shortlist to a Client
Portal, where the client opens candidate dossiers, sends a decision, and
closes the search.
This is a production recreation of the high-fidelity design handoff, built with
Next.js (App Router) + TypeScript.README 전문 보기 ↗An internal tool for a recruiting/staffing firm. A recruiter submits a job description plus their raw client-meeting notes; an AI generates a structured hiring Matrix (search strategy + role-specific screening questions), which is then forked into a full internal Recruiter copy and a sanitized Candidate-safe copy. The recruiter submits the shortlist to a Client Portal, where the client opens candidate dossiers, sends a decision, and closes the search.
This is a production recreation of the high-fidelity design handoff, built with Next.js (App Router) + TypeScript.
builder → building → matrix → submitting → client
@media print), Copy all, Markdown, and Word doc.
Exports are built from the Matrix data plus the live interview state, so
typed notes and selected grades come with them, and each export honours the
toggle — the candidate-safe copy contains no internal content at all./workroom)A second, lighter door beside the email+password login: one shared access code unlocks a workroom where recruiters open a saved Matrix and screen against it. Notes and grades autosave per role, so anyone on the team can pick up a screen someone else started.
/workroom code gate → index of open searches
/workroom/[id] the Matrix, with autosaving notes + grades
Set the code in the environment (it falls back to OLLIN-WORKROOM, which is
fine for a demo and not fine for real use):
WORKROOM_ACCESS_CODE=your-team-code
AUTH_SECRET=<long random string> # signs the pass; rotating it locks everyone out
sm_matrices; seeded from lib/matrix-seed.json with
ON CONFLICT DO NOTHING, so a redeploy never overwrites recruiters' work.A shared code cannot tell you who opened a role and cannot be revoked for one person. If you need that, move to per-recruiter codes or use the existing account login for this route instead.
/submissions)Section 05 of the recruiters' Matrix: at the foot of every workroom Matrix a recruiter files their read — name, email, candidate, Advance / On the fence / Pass, screening notes, and a résumé (PDF, Word, RTF or TXT, under 3MB).
Stored first, emailed second. The submission is written to sm_submissions
before any notification is attempted, so a mail outage is a missed email, never
a lost candidate. It always appears at /submissions.
To also get them in your inbox:
RESEND_API_KEY=...
[email protected]
SUBMISSIONS_EMAIL_FROM="Spyglass Matrix <notify@yourdomain>" # optional
The email's reply-to is the recruiter, so replying reaches them directly.
Résumés are candidates' personal data, so they are held to the internal
login — the workroom code opens the submit form but cannot read
/submissions or download a résumé.
npm install
npm run dev # http://localhost:3000
npm run build && npm start # production build
No external services are required to run or demo the app — see below.
The Builder calls two Next.js API routes that talk to the Anthropic API server-side, so the confidential JD + meeting notes and the API key never reach the browser:
POST /api/generate-matrix — builds the full Matrix from the brief.POST /api/extract-fields — extracts the engagement fields (role, client,
date, type, salary, location) from the brief text.Configure a key to enable live generation (copy .env.example → .env.local):
ANTHROPIC_API_KEY=sk-ant-...
ANTHROPIC_MODEL=claude-sonnet-4-6 # optional; claude-opus-4-8 for the most capable
Graceful fallback: when ANTHROPIC_API_KEY is unset (or a call fails), the
routes return no result and the app renders the bundled static sample
Matrix (lib/data.ts). The full flow works end-to-end with zero
configuration — useful for demos and design review.
The candidate fit scores and per-signal grades in the client shortlist are static sample data, as in the handoff. A real scoring step is a future addition.
app/
layout.tsx fonts (Geist / Geist Mono / Newsreader), metadata
page.tsx mounts the Flow
globals.css design tokens + base + flow styles
api/generate-matrix/route.ts
api/extract-fields/route.ts
components/
Flow.tsx stage machine (builder→…→client) + MatrixStage
BuilderStage.tsx intake screen
MatrixView.tsx the forked Matrix document
Dossier.tsx dossier body, meta, AI candidate brief, signal map
Client.tsx portal, expanded dossier + feedback, placement
Overlays.tsx build / submit progress bridges
FlowContext.tsx client-portal shared state
ui.tsx primitives (Mark, Button, Card, Tag, Avatar, …)
icons.tsx inline SVG icons (no external assets)
lib/
data.ts sample Matrix + candidate shortlist + score meta
prompts.ts prompt construction + JSON parsing (server-side)
anthropic.ts server-side Anthropic call (key from env)
types.ts shared types
brand/tokens.css, merged with the
connected-flow re-skin (navy + black + white; gold kept strictly as a jewel
accent for CTAs, ticks, and success dots) — see app/globals.css.cubic-bezier(0.16, 1, 0.3, 1); cards lift on hover; pulse/animation
respects prefers-reduced-motion.Per the handoff, the prototype-only browser-frame chrome and the Tweaks panel are omitted. The Tweaks defaults are baked in: Bold heading weight, gold serif (Newsreader italic) accent word, Light card theme.