Responder ist ein kleines Tool und ein Statement. Es übernimmt automatisch KI-gestützte Audio-Bewerbungsgespräche, also die, bei denen auf der anderen Seite kein Mensch sitzt, sondern ein Modell Fragen stellt und ein anderes entscheidet, ob man weiterkommt. Gebaut in Go, mit Google Speech-to-Text, Gemini und einem virtuellen Mikrofon unter Linux.
Das Problem mit automatisierten Interviews
Irgendwann in den letzten Jahren hat sich ein Format leise in Recruiting-Prozesse geschlichen: das vollautomatisierte Audio-Interview. Man klickt einen Link, ein Bot stellt Fragen, man antwortet ins Leere, und ein Modell entscheidet, ob jemals ein Mensch die Bewerbung zu sehen bekommt. Kein Gespräch, kein Kontext, niemand, dem man eine Rückfrage stellen könnte.
Das ist respektlos gegenüber Bewerbern. Es behandelt ein Gespräch als Datenextraktionsproblem und kaschiert, dass sich im Unternehmen niemand die Zeit genommen hat, selbst aufzutauchen. Es filtert nach Leuten, die gut vor Sprachmodellen performen, und das ist nicht dasselbe wie nach Leuten zu filtern, die gute Arbeit machen.
Also habe ich die andere Seite gebaut
Responder nimmt den Systemton des Calls auf, transkribiert, was der Bot sagt, über Google Speech-to-Text, schickt das Transkript zusammen mit meinem Lebenslauf an Gemini und spricht die Antwort über ein virtuelles Mikrofon zurück, das die Call-App als Eingabegerät erkennt. Bot auf der einen Seite, Bot auf der anderen. Wenn das Format funktioniert, sollte das keinen Unterschied machen.
Das Tool ist nicht dafür gedacht, Menschen zu täuschen, und es kann es auch nicht. Es ist gezielt für den automatisierten Fall gebaut, als Demonstration: Wenn beide Seiten eines „Interviews" ein Sprachmodell sein können, dann hat das Interview nie das getan, was es vorgab zu tun.
💡 Der Punkt
Automatisierte KI-Interviews reduzieren ein Gespräch auf ein einseitiges Verhör durch ein System, das gar nicht wirklich zuhören kann. Responder ist ein Beweis, kein Produkt: Das Format ist hohl. Nehmt einen Menschen, oder wundert euch nicht, wenn Bewerber auch aufhören, als Menschen aufzutauchen.
Wie es funktioniert
Die Pipeline ist geradlinig. Ein virtueller PipeWire-Sink nimmt den
Ton der Call-App auf. parec leitet rohes PCM in einen
Go-Prozess, der es an die Speech-to-Text-v2-API von Google mit dem
Modell chirp_2 streamt. Die Streams rotieren alle paar
Minuten, um innerhalb der Session-Limits zu bleiben. Sobald ein
finales Transkript ankommt, geht es mit einem System-Prompt und
meinem Lebenslauf als Kontext an Gemini. Die Antwort wird über
Google Text-to-Speech gesprochen und in ein virtuelles Mikrofon
geleitet, das die Call-App als normales Eingabegerät sieht.
Davor liegt eine kleine Pufferschicht: Wenn der Bot in kurzer Folge eine mehrteilige Frage stellt, werden die Fragmente ein paar Sekunden gesammelt, bevor eine einzige Antwort generiert wird. Sonst unterbricht man sich selbst.
Der zweite Punkt
Ein Bewerbungsgespräch ist keine Einbahnstraße, jedenfalls keine, die ich entlangfahren möchte. Ich will auch das Team kennenlernen, hören, was ihr baut, und herausfinden, ob die Zusammenarbeit für beide Seiten Spaß machen würde. Wenn du mir eine technische Frage stellst, bekommst du vielleicht sogar eine zurück. 😉
Als Freelancer kann ich mir das leisten. Und ehrlich gesagt solltest du dir das auch leisten. Die besten Einstellungen kommen aus Gesprächen, nicht aus Verhören, die um zwei Uhr nachts von einem Sprachmodell geführt werden, weil das billiger war, als einen Termin zu vereinbaren.
Tech-Stack
- Sprache: Go, einzelnes Binary, keine Runtime-Abhängigkeiten außer den System-Audiotools
-
Speech-to-Text: Google Cloud Speech v2 mit dem
Modell
chirp_2, Streaming mit Zwischenergebnissen - LLM: Gemini 2.5 Flash mit System-Prompt und Lebenslauf als Kontext
- Text-to-Speech: Google Cloud Text-to-Speech, direkt in den Sink des virtuellen Mikrofons geleitet
-
Audio: PipeWire / PulseAudio virtuelle Source
und Sink,
pareczum Aufnehmen - Plattform: nur Linux, self-hosted, keine Cloud-Orchestrierung
Quellcode und Disclaimer
Der Code liegt in meinem Gitea unter gitea.karlbreuer.com/karl/responder. Das Projekt ist eine Demonstration und ein Statement. Für die Nutzung und deren Folgen wird keine Verantwortung übernommen. Die Einhaltung der jeweils geltenden AGB, Gesetze und ethischen Normen liegt bei dir.
Wenn du gerade einstellst und die Leute, mit denen du arbeiten willst, tatsächlich kennenlernen möchtest, schreib mir an mail@karlbreuer.com. Ich übernehme Architektur, Entwicklung und technische Leitung, und ich verspreche, persönlich aufzutauchen. ;-)