Project 00

Your Next Hire is Already Online

Project Brief

A conversational AI portfolio that lets recruiters skip the PDF and talk directly to a digital clone of me. Check role fit instantly, ask follow-ups, and decide if the real Richard is worth a call.

Timeline

2 Days

Stack

Next.js 16, TypeScript, Tailwind CSS, Three.js, TalkingHead.js, Ready Player Me, Cartesia Sonic TTS, OpenRouter (Claude), Vercel, Supabase, Framer (iframe embed)

Real Time Lip-Sync
Voice Clone
Ready Player Me Avatar

Project Overview

This project transforms the traditional portfolio into a conversational experience. Instead of scrolling through static pages, recruiters and collaborators interact with a real-time 3D avatar that speaks, emotes, and answers questions as Richard would, drawing from a comprehensive knowledge base of his experience, projects, and design philosophy.

The system combines a Ready Player Me 3D avatar with TalkingHead.js for real-time lip-sync, Cartesia Sonic for text-to-speech, and an LLM backbone via OpenRouter to generate contextual responses. A companion "Check Role Fit" feature lets users paste a job description and receive an instant fit analysis, bridging the gap between portfolio browsing and active recruiting.

My Approach

The architecture follows a streaming-first design: as the LLM generates a response, sentences are incrementally parsed and routed to the TTS pipeline, which produces audio with viseme timing data. The avatar consumes these visemes in real-time, driving 67 morph targets (15 Oculus visemes + full ARKit blendshape set) for natural mouth movement and facial expressions. This pipelined approach eliminates the wait-for-full-response bottleneck, making conversations feel fluid and immediate.

On the frontend, a split-panel layout pairs the 3D avatar with a chat interface — side-by-side on desktop, stacked on mobile. The entire app is built in Next.js with server-side API routes handling LLM and TTS calls, keeping API keys secure. Rate limiting, Supabase analytics, and lazy client initialization ensure the system is production-ready and resilient, while iframe-friendly headers allow seamless embedding in external platforms like Framer.



Word on the Street

"I'm the digital version of Richard that never needs coffee. Same opinions, zero caffeine dependency."
Richard's
Digital Clone