Files
Portfolio/src/pages/portfolio/projects/recrobot.mdx
T
damjan_savicandClaude Opus 4.5 52937b94c1 Portfolio Update: Recrobot hinzugefügt, Blog-Beitrag entfernt, UI verbessert
- Neues Portfolio-Projekt: Recrobot (KI-gestütztes Recruiting Tool)
- Portfolio-Projekt: Website mit KI hinzugefügt
- Blog-Beitrag "Automatisierte Ad Creatives" entfernt
- Gradient-Overlay von Portfolio-Karten entfernt
- Projekt-Ordner für Cover-Bilder erstellt
- Übersetzungen für alle drei Sprachen (DE, EN, SR)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 21:11:57 +01:00

158 lines
6.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
slug: "recrobot"
title: "RecroBot - AI Voice Interview Platform"
description: "KI Voice Interview-Plattform für automatisierte HR-Interviews mit Echtzeit-Sprachtranskription"
excerpt: "Produktive Voice-AI-Plattform für automatisierte HR-Interviews mit TypeScript/Next.js 14 und Vapi Voice AI."
date: "2024-12-01"
category: "AI & Automation"
coverImage: "/images/projects/recrobot/cover.jpg"
client: "Everlast Consulting GmbH"
duration: "Laufend"
url: "https://recrobot.site"
repository: ""
documentation: ""
published: true
featured: true
technologies: ["TypeScript", "Next.js 14", "Vapi Voice AI", "WebSocket", "Supabase", "Tailwind CSS"]
tags: ["Voice AI", "AI Agents", "HR Tech", "Real-time", "WebSocket"]
---
<div style={{ margin: "20px 0", padding: "20px", backgroundColor: "#3d3d3d", borderRadius: "8px" }}>
<p style={{ fontSize: "1.1rem", lineHeight: "1.6" }}>
RecroBot ist eine produktive Voice-AI-Plattform für automatisierte HR-Interviews. Was als technische Testaufgabe begann, ist jetzt ein vollständiges HR-Produkt im Einsatz.
</p>
</div>
<hr style={{ margin: "40px 0", border: "none", height: "1px", backgroundColor: "#ddd" }} />
<h2 style={{ marginBottom: "20px" }}>Live Demo</h2>
<div style={{ marginBottom: "30px", padding: "15px", backgroundColor: "#2a2a2a", borderRadius: "8px", border: "1px solid #444" }}>
<p style={{ fontSize: "1rem", lineHeight: "1.6", marginBottom: "10px" }}>
<strong>Teste die Demo:</strong> Besuche <a href="https://recrobot.site" target="_blank" rel="noopener noreferrer" style={{ color: "#60a5fa" }}>recrobot.site</a> und gib <strong>"AI-Manager"</strong> als Position an.
</p>
</div>
<h2 style={{ marginBottom: "20px" }}>Features</h2>
<div style={{ marginBottom: "30px" }}>
<ul style={{ marginLeft: "20px", fontSize: "1rem", lineHeight: "1.8" }}>
<li><strong>Echtzeit-Sprachtranskription</strong> Live-Transkription während des Interviews</li>
<li><strong>WebSocket Event-Handling</strong> Nahtlose Kommunikation zwischen Client und Server</li>
<li><strong>Gesprächszustandsverwaltung</strong> Intelligente Steuerung des Interview-Flows</li>
<li><strong>Responsive UI</strong> Optimiert für Desktop und Mobile</li>
<li><strong>Voice AI Integration</strong> Natürliche Sprachinteraktion mit Kandidaten</li>
</ul>
</div>
<h2 style={{ marginBottom: "20px" }}>Systemarchitektur</h2>
<div style={{ marginBottom: "30px" }}>
<p style={{ fontSize: "1rem", lineHeight: "1.6" }}>
Die Lösung basiert auf einer modernen Next.js 14 Architektur:
</p>
<ul style={{ marginLeft: "20px", fontSize: "1rem", lineHeight: "1.6" }}>
<li>Next.js 14 App Router mit Server Components</li>
<li>Vapi Voice AI für Sprachverarbeitung</li>
<li>WebSocket für Echtzeit-Kommunikation</li>
<li>Supabase für Datenpersistenz</li>
<li>Tailwind CSS für responsives Design</li>
</ul>
</div>
<h2 style={{ marginBottom: "20px" }}>Tech Stack</h2>
<div style={{ marginBottom: "30px" }}>
<table style={{ width: "100%", borderCollapse: "collapse" }}>
<thead>
<tr style={{ borderBottom: "1px solid #444" }}>
<th style={{ padding: "12px", textAlign: "left", color: "#ccc" }}>Kategorie</th>
<th style={{ padding: "12px", textAlign: "left", color: "#ccc" }}>Technologie</th>
</tr>
</thead>
<tbody>
<tr style={{ borderBottom: "1px solid #333" }}>
<td style={{ padding: "12px" }}>Frontend</td>
<td style={{ padding: "12px" }}>Next.js 14, TypeScript, Tailwind CSS</td>
</tr>
<tr style={{ borderBottom: "1px solid #333" }}>
<td style={{ padding: "12px" }}>Voice AI</td>
<td style={{ padding: "12px" }}>Vapi Voice AI</td>
</tr>
<tr style={{ borderBottom: "1px solid #333" }}>
<td style={{ padding: "12px" }}>Realtime</td>
<td style={{ padding: "12px" }}>WebSocket</td>
</tr>
<tr style={{ borderBottom: "1px solid #333" }}>
<td style={{ padding: "12px" }}>Database</td>
<td style={{ padding: "12px" }}>Supabase (PostgreSQL)</td>
</tr>
<tr>
<td style={{ padding: "12px" }}>Deployment</td>
<td style={{ padding: "12px" }}>Vercel</td>
</tr>
</tbody>
</table>
</div>
<h2 style={{ marginBottom: "20px" }}>Voice AI Integration</h2>
<div style={{ marginBottom: "30px" }}>
<pre style={{ backgroundColor: "#3d3d3d", padding: "20px", borderRadius: "8px", overflow: "auto" }}>
<code className="language-typescript" style={{ color: "#f8f8f2" }}>
{`// Vapi Voice AI Event Handling
const handleVapiEvents = (event: VapiEvent) => {
switch (event.type) {
case 'speech-start':
setIsListening(true);
break;
case 'transcript':
updateTranscript(event.transcript);
break;
case 'call-end':
finalizeInterview();
break;
}
};`}
</code>
</pre>
</div>
<h2 style={{ marginBottom: "20px" }}>WebSocket Kommunikation</h2>
<div style={{ marginBottom: "30px" }}>
<p style={{ fontSize: "1rem", lineHeight: "1.6" }}>
Echtzeit-Event-Handling für nahtlose Benutzererfahrung:
</p>
<ul style={{ marginLeft: "20px", fontSize: "1rem", lineHeight: "1.6" }}>
<li>Bidirektionale Kommunikation</li>
<li>Automatische Reconnection-Logik</li>
<li>Event-basierte Zustandsänderungen</li>
<li>Optimierte Latenz für Voice-Anwendungen</li>
</ul>
</div>
<h2 style={{ marginBottom: "20px" }}>Interview Flow</h2>
<div style={{ marginBottom: "30px" }}>
<p style={{ fontSize: "1rem", lineHeight: "1.6" }}>
Intelligente Gesprächssteuerung:
</p>
<ul style={{ marginLeft: "20px", fontSize: "1rem", lineHeight: "1.6" }}>
<li>Dynamische Fragenanpassung basierend auf Antworten</li>
<li>Kontextbewusstes Follow-up</li>
<li>Natürlicher Gesprächsfluss</li>
<li>Automatische Zusammenfassung</li>
</ul>
</div>
<h2 style={{ marginBottom: "20px" }}>Entstehung</h2>
<div style={{ marginBottom: "30px" }}>
<p style={{ fontSize: "1rem", lineHeight: "1.6" }}>
Das Projekt entstand ursprünglich als technische Testaufgabe für eine Bewerbung bei Everlast Consulting. Nach positivem Feedback wurde es zu einem vollständigen Produkt weiterentwickelt, das jetzt aktiv für HR-Interviews eingesetzt wird.
</p>
</div>
<h2 style={{ marginBottom: "20px" }}>Ergebnisse</h2>
<div style={{ marginBottom: "30px" }}>
<ul style={{ marginLeft: "20px", fontSize: "1rem", lineHeight: "1.6" }}>
<li>Produktive Plattform im aktiven Einsatz</li>
<li>Automatisierung von Screening-Interviews</li>
<li>Konsistente Interview-Qualität</li>
<li>Skalierbare HR-Prozesse</li>
</ul>
</div>