惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏
腾讯CDC
J
Java Code Geeks
博客园 - 【当耐特】
Microsoft Azure Blog
Microsoft Azure Blog
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理
博客园 - Franky
博客园 - 聂微东
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
云风的 BLOG
云风的 BLOG
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
U
Unit 42
雷峰网
雷峰网
B
Blog RSS Feed
博客园_首页
量子位
F
Fortinet All Blogs
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
酷 壳 – CoolShell
酷 壳 – CoolShell
C
Check Point Blog

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - NikhilSKashyap/interviewsignal: AI-native broad-...
NikhilKashya · 2026-05-27 · via Hacker News: Show HN

Traditional hiring relies on broadcast-rejection — filtering out hundreds of talented developers based on resume keywords or rigid pass/fail LeetCode puzzles because manual screening doesn't scale.

interviewsignal enables AI-native broad-interviewing: a high-volume, high-fidelity asynchronous screening model that opens the funnel wide without draining engineering resources. Share a code. Every candidate works the problem on their own time, in their own IDE, with their own AI tools. The session captures the full thought process — every prompt, every decision, every iteration. Submissions arrive auto-graded and ranked. You spend 15 minutes triaging, not 200 hours interviewing.

When every candidate uses AI, code quality converges. Output is no longer signal. ATS platforms grade the output — did the code pass tests? We grade the thinking — how the candidate decomposes the problem, directs the AI, and iterates on failures. The transcript captures who drove the thinking. That's the signal no one else can see.

Broad-interview, not broadcast-reject. Pure signal.


The Engine in Action

Candidate — works in terminal with full-power AI

Candidate session — prompts, tool calls, and reasoning captured in real time

Hiring Manager — reviews auto-graded submissions in the dashboard

HM dashboard — candidates ranked by score, flags, transcript, and grading

The Unfair Advantage

🔗 Capture the Process

Every prompt, tool call, and iteration is hash-chained and tamper-evident. You see how they solved it, not just what they submitted.

🤖 AI-Native Baseline

Candidates use full-power AI — that's the point. High-leverage use (directs, verifies, iterates) scores well. Low-leverage use (paste and accept) scores poorly.

📊 Triaged in Minutes

Submissions arrive auto-graded and ranked against your rubric. Batch advance or reject. 200 candidates in 15 minutes.

🔒 Fully Private

Your relay, your API key. Nothing leaves your network. No telemetry. No analytics. No tracking. Zero external dependencies.

⚡ Zero Setup Cost

pip install, share a code, done. No platform to sign up for. No vendor contract. No procurement cycle.

🤝 Fair to Candidates

Real problems, real tools, real feedback. Every candidate gets the same shot regardless of timezone, schedule, or interview anxiety.


interviewsignal vs Saffron vs OpenRound

Saffron and OpenRound validate the category: AI-native interviews are here.

But the default should not be another hosted assessment vendor. The paid products monetize the wrapper: sandbox, quota, dashboard. interviewsignal ships the evidence layer directly: install it, run it in your repo, keep the data, fork the rubric.

Saffron OpenRound interviewsignal
Model Managed SaaS Managed SaaS Open-source infrastructure
Environment Browser IDE sandbox Hosted browser + CLI flow Candidate's own IDE
AI tools Platform-controlled Platform-controlled Any — Claude Code, Codex, Gemini, Cursor
Evidence captured Keystrokes + replay Evaluation dimensions + transcript Prompts, tool calls, diffs, commits, flags
Code evolution Session replay Submission trace Per-prompt git commits
Tamper evidence Session replay (platform-verified) Not stated Hash-chained event log + 9 automated flags
Assessment quota 5-15/mo + $49 per extra 5-20/mo + custom Unlimited
Pricing From $199/mo From $149/mo ($129/mo annual) Free forever
Interview data Vendor servers Vendor servers Your servers
Self-hosted/private No No Yes
Open source No No Yes
Trust model Vendor-verified Vendor-verified Cryptographically verifiable

AI-native hiring signal should be inspectable, forkable, and owned by the hiring team. That is the whole point of interviewsignal.


Quickstart

Hiring manager — create an interview

First launch opens a setup wizard in your browser — relay URL, API key, create your first interview. Three screens and you're live. The form asks for three things: problem, rubric, time limit. You get back a code like INT-4829-XK. Share it with 5 candidates or 500.

Your rubric dimensions are your weights. If you want thought process to matter more than code quality, make more of your dimensions about process.

Candidate — take the interview

pip install interviewsignal && interview install
# Codex: pip install interviewsignal && interview install --platform codex
/interview INT-4829-XK

The session starts, GitHub OAuth opens (one account = one submission), and the problem appears. Work normally — ask the AI questions, write code, run tests. When done:

Session sealed. Pushed to relay. Auto-graded. Score + summary shown in terminal.

Hiring manager — review

interview dashboard              # → http://localhost:7832
interview dashboard INT-4829-XK  # → jump to one interview's submissions

Submissions arrive sorted by score. Flags highlight anomalies. Select candidates in bulk → advance or reject. Click into any candidate for the full transcript, dimension scores, and diff.

Batch actions: ↻ Regrade (re-run AI grading after rubric tuning) · ✓ Yes / → Maybe / ✗ No · ↓ Export CSV


How it works

graph TD
    A[Candidate Prompts AI] --> B[Shell Hooks Capture Tool Calls]
    B --> C[Append-Only SHA-256 Event Log]
    C --> D[Automatic Git Micro-Commit after each turn]
    D --> E[Log Sealed on /submit]
    E --> F[Relay Server Auto-Grades via Rubric]
    F --> G[HM Dashboard ranks candidates by thinking score]
Loading

interviewsignal installs as a skill into your AI coding assistant. It captures the full conversation — prompts, reasoning, every tool call — and builds an append-only, hash-chained session log. After each turn, it silently commits changed files to the local repo. On /submit, the log is sealed and pushed to the relay.

HM creates interview

interview dashboard
  → setup wizard (first run)
  → problem + rubric + time limit
  → code INT-4829-XK created
  → package pushed to relay

HM reviews

interview dashboard
  → submissions arrive, auto-graded
  → flags highlight anomalies
  → batch advance / reject

Candidate works

/interview INT-4829-XK
  → fetches problem from relay
  → GitHub OAuth (1 account = 1 submission)
  → interview-{code} repo created
  → session recording starts
      → hooks capture every tool call
      → append-only events.jsonl
      → SHA-256 hash chain
      → silent commit after each turn

Candidate submits

/submit
  → session sealed
  → git push → GitHub
  → pushed to relay
  → score + summary shown

Tamper-Evident Architecture

Candidates control their own machine. Security is detection, not prevention. A sparse or gapped session is its own red flag.

Hash chain architecture — Prompt → AI Tool Call → Git Commit, linked by SHA-256

Quality Flags catch sessions completed in under 10 minutes, fewer than 3 tool calls, no iteration pattern, statistically uniform timing, and zero prompts.

Tamper Flags catch large gaps in the event stream (hooks disabled), code changes that don't match Write/Edit tool calls (work outside AI), tool calls with no corresponding prompts (selective suppression), and commits with no matching events (cross-verification).


Overtime Scoring

Submissions after the time limit are accepted — but automatically penalized. The deduction is applied to the AI-graded score post-grading, not injected into the grading prompt, so it can't be argued away.

The math

Overtime is divided into bands: 0–10 min, 10–20 min, 20–30 min, 30–60 min, and 60+ min (capped). Within each band the penalty grows as a quadratic curve — not a flat step — so a candidate barely over the boundary loses almost nothing while one deep in the band feels it accelerate:

position = (overtime - band_start) / (band_end - band_start)   ← 0.0 to 1.0
penalty  = prev_band_max + (this_band_max - prev_band_max) × position²

Band maxima on the 0–10 score scale: −0.5 at 10 min, −1.0 at 20 min, −1.5 at 30 min, −2.5 at 60 min, −4.0 cap beyond that.

Example — 7 minutes over a 60-minute interview, raw AI score 7.5

overtime  = 7 min  →  falls in the 0–10 min band
position  = 7 / 10 = 0.70
penalty   = 0 + (0.5 − 0) × 0.70² = 0.5 × 0.49 = −0.245
final score = 7.5 − 0.245 = 7.26

Compare: 1 min over costs only −0.005; 10 min over costs the full −0.5. The curve means being slightly late is forgiving, but lingering well past the limit compounds quickly.

The dashboard shows the raw AI score, overtime deduction, and adjusted final score separately. A flag is raised alongside — yellow for ≤20 min over, red beyond.


What gets captured

💬 Conversation

Candidate prompts — exact message to the AI
AI reasoning — plan before each action
Timestamps — millisecond precision on every event

🛠️ Tool Calls

File reads — path
File writes — path + content hash
File edits — path + change summary
Bash commands — command + exit code

📂 Git State

Per-prompt commits — timestamp + prompt snippet
Full commit log — hash, message, files changed
GitHub repo — auto-created interview-{code}, pushed on submit

🚩 Session Flags

Quality — too fast, few interactions, no iteration, uniform timing, no prompts
Tamper — hooks gap, diff mismatch, commit mismatch, prompt ratio

The session log is append-only and hash-chained. Any tampering breaks the chain. Raw file contents are never stored — only paths, hashes, and summaries.


Platform support

Platform Install Activity capture
Claude Code interview install ✅ Full — prompts, tool calls, reasoning
Codex interview install --platform codex ✅ Full
Gemini CLI interview install --platform gemini ✅ Full
Cursor interview install --platform cursor ⚠️ Limited — skill instructions only
Aider interview install --platform aider ⚠️ Limited — skill instructions only

Relay setup

The relay stores interview packages and candidate sessions so everyone only needs to share a short code.

Option 1 — Self-hosted (~$5/mo, fully private) ← recommended

Deploy on Railway

# After deploying:
# 1. Set RELAY_API_KEY (any random string) in Railway → Variables
# 2. Add a /data volume
# 3. Copy your Railway URL → paste into dashboard setup wizard

# Optional — auto-grading on submission:
GRADING_API_KEY=<anthropic-key>
GRADING_MODEL=claude-haiku-4-5-20251001

Or Docker:

docker build -t interviewsignal-relay .
docker run -e RELAY_API_KEY=secret -v /data:/data -p 8080:8080 interviewsignal-relay
GitHub OAuth (one account = one submission)

Relay operator step — done once at deploy time.

GITHUB_CLIENT_ID=<your_client_id>
GITHUB_CLIENT_SECRET=<your_client_secret>
RELAY_BASE_URL=https://myrelay.up.railway.app

Create the OAuth App at github.com/settings/developers with callback URL: https://myrelay.up.railway.app/auth/github/callback

Option 2 — Email only (free, no server)

interview configure-relay   # choose 2
interview configure-email   # set up SMTP

Reports emailed directly to HM on /submit.


Enterprise configuration
Pattern What to set
Anthropic direct API key only (default)
Internal proxy (Floodgate, corporate gateway) Base URL + optional key
OpenAI-compatible endpoint Base URL + key + format=openai

Environment variable overrides: ANTHROPIC_API_KEY, ANTHROPIC_BASE_URL, INTERVIEW_GRADING_MODEL

Privacy
  • Sessions stored on relay: events.jsonl, manifest.json, flags.json — raw file contents never stored
  • Grading uses your own API key — interviewsignal never sees it
  • Self-hosted relay: nothing leaves your network
  • No telemetry. No analytics. No tracking.

FAQ

How do you prevent candidates from using a second screen to get answers?

Security is detection, not prevention. When someone pastes pre-written code from another screen, they produce large blocks of finished code with no corresponding prompts, no trial-and-error, no iteration. This triggers Ghost Edits and Zero Prompts flags automatically. The absence of signal is itself signal — a sparse session ranks itself at the bottom.

Can we run this completely offline or in a private network?

Yes. The relay server runs inside your own infrastructure — VPC, air-gapped network, whatever you need. Configure your internal LLM proxy for grading. Zero telemetry, zero trackers, zero external dependencies. Python stdlib only.

What coding platforms are supported?

Full hook support (prompts, tool calls, reasoning): Claude Code, Codex, Gemini CLI. Skill instruction support (limited capture): Cursor, Aider. Each new platform adapter is ~30 lines.


Built with

Python stdlib only — zero external dependencies for core and relay. Grading via Anthropic Messages API or any compatible endpoint. Dashboard is a self-contained local HTTP server. Relay is a single-process stdlib server backed by flat files.


Contributing

Prompts — grading instructions are open and community-editable: interview/skills/interview/SKILL.md

Worked examples — run a session, save to worked/{slug}/, write a review.md, open a PR.

Platform adapters — each new platform is ~30 lines in cli.py.

See ARCHITECTURE.md for module map · docs/relay-api.md for the relay API.


Broad-interview, not broadcast-reject. Pure signal.

No contrived puzzles. No whiteboard anxiety. No ghosting. Just signal.