The problem
Interview practice often breaks into separate pieces: a user configures an interview, reads generated questions, talks through answers and then loses continuity between those steps. FoloUp explores a single product workflow where AI, voice and application state work together.
The outcome
The product connects interview setup, AI-generated interaction, conversational voice and persistent data into one full-stack experience. The result is an application architecture designed around a continuous interview workflow rather than isolated AI features.
The approach
I used Next.js and TypeScript for the application layer, Clerk for authentication and organization-aware access, Supabase for persistence, OpenAI for AI capabilities and Retell AI for conversational voice. The important part was not any single API—it was making multiple external services behave like one coherent product.
What I built
The integration stack
The product is strongest when its services are viewed as one workflow. Each integration has a clear responsibility, while the Next.js application connects those responsibilities into the user experience.
LLM-powered interview experiences.
Conversational interview interaction.
Authentication and organization-aware access.
Persistent application and interview data.
Engineering decisions
The engineering focus was integration boundaries. Authentication should remain an identity concern, Supabase should own persistence, AI services should handle intelligence and voice should remain a conversational interface. Keeping those responsibilities separate makes failures easier to isolate and future changes less invasive.
Integration challenges
Working across AI, voice, authentication and persistence creates failure points at the boundaries. These were the areas I treated as engineering problems rather than simply SDK setup.
When several external systems participate in one user flow, an issue in one integration can look like a frontend, auth or data problem. I learned to isolate each boundary and verify the request and response contract before changing application logic.
The product needed more than a simple login. Clerk organization context had to align with the application workflow so authenticated users reached the correct product experience.
AI output is only useful when it fits the surrounding application state. The interview flow therefore has to treat generated content as part of a product workflow rather than as an isolated model response.
Conversational voice adds another asynchronous service boundary. Retell AI had to fit naturally into the interview experience without making the rest of the application depend on voice-specific implementation details.
What I learned
FoloUp reinforced a practical AI engineering lesson: building an AI product is mostly systems integration. The model or voice API is only one component; authentication, state, persistence, failure handling and user experience determine whether the feature becomes a reliable product.