Back to all posts

Building interviewer.fyi

How I turned my blank-page journaling habit into a guided LLM conversation.

ProjectsLLMsProductivitySupabase
September 27, 2025
7 min read

Check out interviewer.fyi →

interviewer.fyi Homepage

I've tried journaling so many times. Every attempt ended the same way: staring at a blank text box, writing nothing, and giving up. I built interviewer.fyi to fix that problem for myself.

The idea is simple: instead of facing a blank page, you have a conversation. You write something down, and the app asks you follow-up questions. Answer them if you want, or just keep writing. When you're done, it generates a summary and tags everything so you can find it later.

The problem I kept running into

I'd jot down notes like "write about this later" and never actually follow through. I tried using prompt lists, but static prompts weren't enough. I needed something that could respond to what I was actually writing about.

How it works

The whole thing is built around LLMs generating structured responses. When you type something, the app:

  1. Sends it to an API that generates up to three follow-up questions
  2. Creates a summary, tags, and a quality score (all running in parallel)
  3. Closes questions you've already answered so you don't get asked twice
  4. Suggests topics based on your recent entries when you're starting fresh

Everything uses JSON schemas, so if I swap out the LLM model (I route everything through OpenRouter), the UI doesn't break. The models just have to return valid JSON and everything keeps working.

The stack

Nothing fancy here - just tools that work well together:

  • Next.js 15 with TypeScript and Tailwind for the frontend
  • Clerk for auth
  • Supabase for storing everything as JSON with row-level security
  • OpenRouter for LLM calls with strict JSON schema validation
  • Built most of it using Cursor and Claude

I spent about 15 development hours on this project in its current form. I coded a lot of the initial version with help from OpenAI's Codex. Building the suggested topics page was done with a prompt like "Create a new page route and corresponding set of API methods for generating suggested topics, three of which use the user's context from existing sessions and three of which are freshly generated without user context." It would generate the boilerplate for Next.js routes, Tailwind layouts, Supabase client setup, all the repetitive stuff. I still rewrote plenty, but having Codex handle the scaffolding kept me focused on the actual product decisions.

The only real bug that took forever to fix was Clerk middleware randomly disappearing on API routes when using Turbopack. Ended up being a tiny root-level shim that re-exports the middleware. Annoying to debug, simple to fix.

What was easy

Some parts just clicked:

  • Adding structured outputs everywhere in the application, so there were no JSON parsing errors
  • Setting up different page routes for the different core capabilities
  • Building the mechanism for determining whether questions have been answered
  • Deploying on Vercel was very easy

What took work

  • A Clerk middleware bug delayed me from getting the storage and auth integration complete
  • Migrating from a local only JSON data store to Postgres on Supabase

Favorite parts

The moments where it really clicked for me:

  • Watching the follow-up questions refill themselves as I answered them
  • Opening the history page and seeing full summaries of entries I'd written weeks ago
  • Seeing relevant tags automatically generated that make old entries easy to find later

What's next

A few things I'm planning to work on:

  • Model evals: Right now one model handles everything. I want to build evals for each stage (summaries, follow-ups, tags) to compare different OpenRouter models and understand which are best at which tasks
  • Model feedback: Collect user feedback on specific models to better understand the personalities, strengths, and weaknesses of each frontier model
  • Long-term memory: This is the hard one. I know even the great companies have struggled with this, but I want to try my hand at building a long-term memory feature. This will be my playground to experiment with it
  • Better titles: Improve auto-generation of session titles
  • Search improvements: Make it easier to search through past sessions
  • Visual display: Add more intelligence around the visual display and arrangement of entries

I've been using interviewer.fyi regularly and it's been a fun way to journal. The conversational format works well for me.

Written by Sachin Dhar