Your recruiter chat, interview recording, live hints, transcript, and retro in one local workspace.
Watch the 18-second interview loop · Try the recruiter-chat demo · Install the preview release
OpenOffer turns messy recruiter messages and interview calls into an inspectable job-search process. Paste a recruiter message, approve the extracted vacancy and stages, start the interview from the right stage, get concise live assistance where it is permitted, and turn the recording into a transcript, overview, coaching, and next actions.
There is no required OpenOffer account or hosted workspace. Workflow state stays on your machine; local providers are the preferred privacy path, and bring-your-own-key cloud providers are optional.
- Before the interview: turn an HH, Getmatch, Telegram, email, or vacancy message into an editable local process.
- During the interview: start the recording from its stage and keep concise live context close to the call.
- After the interview: review the transcript, overview, coaching, retro, and follow-up actions without losing which vacancy and stage they belong to.
OpenOffer proposes changes instead of silently mutating your job-search data:
- Paste a redacted recruiter message or vacancy text.
- Review the proposed vacancy, stage, schedule, meeting link, compensation, and prep context.
- Edit anything that was parsed incorrectly, then save the process locally.
See the exact fictional input and expected output in Recruiter Chat to Process.
The recording is linked to the interview stage instead of being dropped into an unrelated meeting list. Live hints stay short enough to scan while speaking. After the call, the transcript becomes stage memory: an overview, interview signals, coaching, structured retro, and follow-up work.
The retro survives the call. Strong moments, weak moments, new facts, and follow-up actions remain available before the next round.
The complete synthetic scenario and recapture instructions are in Real Interview Loop. Demo media rules live under assets/demo/.
- Reviewed recruiter and vacancy intake into either a new process or a stage on an existing vacancy.
- Stage Workspace that keeps preparation, consented recording, transcript and summary artifacts, review, next actions, and export attached to one interview stage.
- Interview Command Center for vacancies, stage timelines, schedules, meeting links, linked recordings, and Google/macOS Calendar sync.
- Stage-level microphone and system-audio recording for interviews and professional calls.
- Live transcription and concise meeting assistance through local or BYOK providers.
- Readable transcripts, post-call summaries, interview signals, coaching, and follow-up actions.
- Local SQLite-backed meeting history, job-search state, and retrieval.
- Provider routing for speech-to-text, text, vision/screenshot, and meeting assistance.
- Searchable settings for provider connections, calendar status, and local AI Context.
- English and Russian interface locales plus custom translation packs.
- Electron desktop preview releases for macOS and Windows, with Linux packaging configured for native-platform builds.
OpenOffer is especially useful for developers who are actively interviewing and want a workflow they can inspect, edit, and keep on their own machine instead of a hosted black box.
It is intentionally friendly to Russian-speaking job-search workflows: Telegram/HH/Getmatch-style recruiter text, mixed Russian/English interviews, local STT experiments, and BYOK provider setups are first-class contribution areas.
Recruiter chats, compensation, resume facts, meeting links, interview transcripts, and retro notes are sensitive career data. OpenOffer keeps the workflow state, recordings, notes, settings, and local retrieval data on your machine by default.
Local data includes:
- Audio captures
- Screen captures
- Transcripts
- Meeting notes
- Reference files
- Settings
- Local SQLite data
- Local embeddings and retrieval state
Data leaves your device only when you configure a provider that needs it. For example, a cloud speech provider receives audio needed for transcription, while a local Whisper setup keeps that path local.
Examples:
| Provider type | Examples |
|---|---|
| Local model | Ollama, LM Studio, LocalAI, vLLM, OpenAI-compatible local endpoints |
| Cloud LLM | OpenAI, Anthropic, Google Gemini, Groq, DeepSeek, Yandex AI Studio, OpenAI-compatible endpoints |
| Speech-to-text | Local Whisper, GigaSTT, OpenAI Whisper, Deepgram, ElevenLabs, Google, Azure, IBM Watson, Soniox, Groq Whisper |
| Search | Tavily, when web research is enabled |
Read more:
- Node.js 22 LTS recommended.
- npm.
- Git.
- Rust toolchain for the native audio module.
- macOS or Windows for current binary preview releases.
- Linux for source builds and platform packaging experiments.
Linux packaging exists in the build configuration, but Linux is not the main tested path yet.
git clone https://github.com/luiz2047/OpenOffer.git
cd OpenOffer
npm install
npm run app:devThe install step rebuilds native packages, downloads bundled local models where needed, prepares sqlite-vec, and patches Electron metadata.
Until Apple Developer ID signing and Windows Authenticode signing are configured, GitHub Release binaries are preview builds. macOS artifacts are unsigned/ad-hoc signed and Windows artifacts are unsigned, so macOS Gatekeeper or Windows SmartScreen may warn before launch.
-
Open the latest GitHub Release.
-
Download the right asset:
- macOS Apple Silicon:
arm64.dmg - macOS Intel:
x64/ non-arm64.dmg - Windows: x64 setup
.exeor portable.exe
- macOS Apple Silicon:
-
Download
SHA256SUMS.txtand verify the file before opening it:FILE="OpenOffer-1.6.0-arm64.dmg" # or the asset you downloaded grep " $FILE$" SHA256SUMS.txt | shasum -a 256 -c -
-
On macOS, open the DMG and drag OpenOffer to Applications.
-
If macOS blocks the preview build, remove the quarantine flag after checksum verification:
xattr -dr com.apple.quarantine /Applications/OpenOffer.app open /Applications/OpenOffer.app
-
On Windows, run the x64 setup or portable
.exe. SmartScreen warnings are expected until Windows code signing is configured.
Use the macOS workaround only for artifacts downloaded from the OpenOffer GitHub Release.
npm run app:dev # Vite + Electron
npm run app:dev:fast # reuse the last Electron build
npm run build # renderer typecheck + Vite build
npm run build:electron # Electron main/preload build
npm run typecheck:electron
npm run i18n:check
npm run test:i18n
npm run test
npm run public-docs:checknpm run app:buildThis runs the frontend build, Electron build, native audio build, Sharp checks, and Electron Builder.
Platform-specific packaging should run on the matching OS because OpenOffer ships native .node modules:
npm run app:build:mac # macOS runner, requires create-dmg, dmg + zip
npm run app:build:win # Windows runner, x64 NSIS + portable
npm run app:build:linux # Ubuntu/Linux runner, AppImage + debFor local macOS preview packaging, install create-dmg first:
brew install create-dmg
npm run app:build:mac # macOS runner, dmg + zipSigned macOS release builds still need Apple Developer ID credentials and GitHub release secrets. Until then, the release workflow publishes unsigned macOS preview artifacts as prereleases. See OpenOffer release process.
You only need one speech provider and one model provider to start.
| Need | Recommended path |
|---|---|
| Private model responses | Ollama or local OpenAI-compatible endpoint |
| Private English STT | Local Whisper |
| Private Russian STT | GigaSTT or compatible local STT setup |
| Local history and recall | SQLite + local retrieval |
| Private screen analysis | Local vision-capable model where available |
Yandex AI Studio needs both an API key and folder ID. See Yandex AI Studio setup.
For local speech setup, see Local STT setup.
| Path | Purpose |
|---|---|
src/ |
React renderer UI |
electron/ |
Electron main process, services, audio, model routing, persistence |
native-module/ |
Rust/native audio support |
docs/ |
Current docs plus archived engineering notes |
openoffer-browser/ |
Companion browser extension |
tests/ |
E2E and fixture-based tests |
assets/ |
App icons and package resources |
Current public version: 1.6.0.
OpenOffer is a source-first public beta:
- Free and open-source under AGPL-3.0.
- No OpenOffer-hosted account, license server, trial, subscription gate, or metered hosted quota.
- macOS preview binaries are published from GitHub Releases as unsigned/ad-hoc signed prereleases until Apple signing/notarization secrets are configured.
- macOS and Windows are the primary desktop targets; Linux packaging is configured but not the main tested path yet.
- Historical Natively-era documents are kept under
docs/engineering/and.github/releases/for provenance only.
The near-term roadmap is community-launch focused:
- Keep the recruiter-chat and real-interview demos aligned with the current public UI.
- Improve first-run local provider setup.
- Harden Russian local STT diagnostics.
- Expand focused E2E and contract tests around Interview Command Center.
- Replace unsigned macOS preview releases with signed and notarized artifacts once Apple Developer ID secrets are configured.
- Add more good-first-issue lanes for docs, localization, provider setup, release QA, and privacy hardening.
See ROADMAP.md for details.
The best first contributions are small and concrete:
- Try the recruiter-chat demo and report where the process feels unclear.
- Add redacted workflow examples for HH, Getmatch, Telegram, or calendar text.
- Test the real-interview loop on macOS or Windows and improve transcript, overview, or retro capture.
- Improve Russian copy, i18n coverage, or local STT setup docs.
- Document recording consent and responsible live-assistance use in another jurisdiction or interview format.
- Tighten provider setup diagnostics.
- Add focused smoke tests for existing workflows.
- Improve release QA and screenshots.
Start with CONTRIBUTING.md. Maintainer expectations are in MAINTAINERS.md.
OpenOffer is intended for learning, interview preparation, accessibility, note-taking, professional meeting support, and local experimentation with AI-assisted career workflows.
Use live assistance only where it is permitted. Users are responsible for following workplace policies, academic rules, interview guidelines, recording-consent rules, and local laws. OpenOffer is not positioned as a bypass tool for proctoring, recording, or policy enforcement systems.
OpenOffer is a forked and rebranded continuation of earlier Natively-era work. Historical references remain for attribution, provenance, and license continuity only. They do not indicate an active Natively product tier, hosted OpenOffer service, subscription, trial, or paid gate in this public build.
See NOTICE.md for the current attribution statement.
OpenOffer is licensed under the GNU Affero General Public License v3.0. See LICENSE and AGPL FAQ.
Yes. The public build is free and open source. You may still pay third-party providers directly if you choose to connect BYOK cloud APIs.
No. The public build does not create an OpenOffer account, validate licenses, meter hosted quota, or require a subscription.
That is the preferred privacy path. Use a local speech provider and a local model provider such as Ollama or a self-hosted OpenAI-compatible endpoint. Some workflows, especially vision or high-quality model responses, depend on the local models you have available.
OpenOffer includes technical-interview, recording, transcription, and screen-context workflows. Use assistance and recording only when the interview, assessment platform, employer, school, or event permits them.
Use GitHub Discussions for questions and GitHub Issues for reproducible bugs or scoped feature requests.






