interviewer-cue
v0.2.1
Published
Terminal interview cue assistant with Granola transcript integration.
Readme
Interviewer Cue
Interviewer Cue is a terminal assistant for live interviews. It watches a transcript source, keeps an interview session in local config, and helps generate targeted follow-up questions while the interview is running.
Install
npm install -g interviewer-cue
interviewer-cueRequirements:
- Node.js 20 or newer
- Granola installed and signed in when using the Granola transcript source
- API keys configured in the app for the model providers you use
Commands
interviewer-cue
interviewer-cue --no-update-check
interviewer-cue update
interviewer-cue granola decrypt-cache
interviewer-cue granola watch-cache
interviewer-cue simulate-transcriptinterviewer-cue launches the Ink app. Granola-specific cache tools live under the granola provider namespace because they inspect or watch Granola local cache files directly.
interviewer-cue simulate-transcript decrypts the local Granola cache, lets you choose a recent transcript, and replays it in transcript-time steps for fast AI response testing.
Updates
On launch, Interviewer Cue checks https://registry.npmjs.org/interviewer-cue/latest before entering the full-screen terminal UI. If a newer npm version is available, it prompts before updating with the package manager that installed the active CLI:
npm install -g interviewer-cue@latest
pnpm add -g interviewer-cue@latest
yarn global add interviewer-cue@latestAfter a successful update, restart interviewer-cue.
Skip the launch-time check with either escape hatch:
interviewer-cue --no-update-check
INTERVIEWER_CUE_SKIP_UPDATE=1 interviewer-cueRun a manual check any time:
interviewer-cue updateGranola Setup
The default Granola cache directory is:
~/Library/Application Support/GranolaUse the cache commands when troubleshooting transcript access:
interviewer-cue granola decrypt-cache --summary
interviewer-cue granola decrypt-cache --json
interviewer-cue granola decrypt-cache --transcript <documentId>
interviewer-cue granola watch-cache --changes-onlyBoth commands accept:
--granola-dir <path>
--keychain-service <name>
--keychain-account <name>Config Paths
Interviewer Cue stores user-facing settings under interviewer-cue.
macOS:
~/Library/Application Support/interviewer-cue/app-settings.json
~/Library/Application Support/interviewer-cue/interview-types.json
~/Library/Application Support/interviewer-cue/interview-sessions.jsonLinux and other non-macOS platforms:
$XDG_CONFIG_HOME/interviewer-cue/app-settings.json
$XDG_CONFIG_HOME/interviewer-cue/interview-types.json
$XDG_CONFIG_HOME/interviewer-cue/interview-sessions.jsonIf XDG_CONFIG_HOME is not set, Interviewer Cue uses ~/.config/interviewer-cue
for settings.
Runtime logs are append-only JSONL entries saved in this repository under logs/.
Entries with an interview sessionId are written to
logs/interviews/<session-id>.log.jsonl; non-session entries use
logs/interviewer-cue.log.jsonl. Logs include transcript watch lifecycle,
live-generation scheduling, AI API call start/success/failure, status, model,
duration, request id, and count metadata. They intentionally omit raw API keys,
prompts, resume text, and transcript text.
Troubleshooting
- If launch hangs before the UI appears, run with
--no-update-checkand tryinterviewer-cue updateseparately. - If Granola transcripts are missing, run
interviewer-cue granola decrypt-cache --summaryto confirm the local cache can be read. - If model calls fail, open the app settings and confirm the relevant provider API key is configured.
- If the app stalls midway through an interview, inspect that interview's file under
logs/interviews/and follow a sharedrequestIdacrosslive_generation.*andai.api_call.*events.
Release Checklist
The release script publishes to npm from the local machine. It bumps package.json, refreshes the lockfile, runs the release checks, commits the version bump, creates an annotated vX.Y.Z tag, and runs npm publish.
One-time setup:
- Confirm the local npm account has publish access to
interviewer-cue. - Run
npm loginif the local machine is not already authenticated.
Preview the release plan:
pnpm release:dry-runCut and deploy a patch release:
pnpm release:patchIf npm requires a one-time password for publishing, pass the current authenticator code through to npm publish:
pnpm release:patch -- --otp 123456Use pnpm release:minor or pnpm release:major for larger bumps. For an exact version, run:
pnpm release -- 1.2.3To push the release commit and tag after publishing, pass --push:
pnpm release:patch -- --pushBefore publishing to npm, the script runs:
pnpm test
pnpm typecheck
pnpm build
pnpm pack:dry-runThe dry-run pack output should include dist, README.md, LICENSE, and package.json.
If the release fails at npm publish, the version commit and annotated tag have already been created locally. Do not rerun the full release command for the same version; fix npm authentication, then publish from the existing release commit:
npm publish --otp 123456