Episode cover art

← All episodes

Is the Resume Obsolete?

21:23252 listens
Is the Resume Obsolete? — Feedback Loupe podcast cover art
Feedback Loupe
Is the Resume Obsolete?
Loading
/

When conversation is the navigation, the resume stops being the interface.

Static portfolios flatten a decade of nuance into the same grid for every visitor. Recruiters, hiring managers, and collaborators all land on identical home pages and do the filtering themselves. PAI inverts that power dynamic: you state intent, and the system routes you to the work that actually answers your question — opening case studies in a shared panel, respecting gated depth, and adapting its language to desktop or mobile.

This episode walks through the build behind that experience: the panel system and its golden rule, a three-email access flow for protected work, keyword retrieval over a dense professional corpus, a hard 150-token output cap, persona testing via the feedback loop, and a voice pipeline tuned to millisecond pause math. If you claim AI product design expertise, the medium has to be the message — try it at feedback-loupe.com/projects/pai/full/ while you listen.

The insights are mine. The hosts are not — curated research, AI-narrated.

  • 00:00 — Static portfolios and context collapse
  • 02:30 — Conversation as navigation
  • 05:00 — The panel system
  • 08:00 — Gating and the three-email access flow
  • 11:00 — Keyword RAG and the 150-token cap
  • 14:00 — Persona testing and the feedback loop
  • 17:00 — Voice, WebSockets, and pause math
  • 19:30 — Is the resume obsolete?
Read transcript
Think about, the last time you had to hire someone for a really specialized role. You finally get an hour at the end of a long day. You open a candidate's portfolio, and you are just immediately staring at a grid. Oh, yeah. Like, 20 identical perfectly polished thumbnail squares. It's overwhelming. It is. And you're exhausted. Yeah. You just wanna know, like, does this person actually understand health care compliance and AI design? But now you have to play this huge guessing game. Right. You're clicking into project after project, scrolling past, you know, wireframes you don't care about. Exactly. Desperately hunting for that one specific paragraph that proves they can actually do the job. It is the absolute definition of context collapse. I mean, the designer has a decade of nuanced experience. Right? Mhmm. But because they have to present it to everyone all at once, the context just gets flattened into something completely generic. And it leaves you, the user, doing literally all the heavy lifting, which is why today's deep dive is so exciting to me. We're looking at a project by Chris Mullins. Yeah. He's a principal product designer. Right. And he decided to completely obliterate that grid. He built a system called PAI, and PAI stands for personal AI, or in this case, portfolio AI. And we've got our hands on his actual development logs for this. We do. The dev logs, his use case documentation, and the system updates he pushed in May 2026. And our mission today goes way beyond just, you know, admiring a clever website. We're unpacking a live experiment in AI conventions and usability. We really wanna analyze how this architecture solves the unique problem of personal presentation. Let's not be too sycophantic about it, but objectively look at the systems and implementation. Exactly. The database structure, the prompt engineering, and all the agentic tools used to build what is basically a highly secure production grade system. We're getting into the actual code level decisions today. And a quick heads up for you listening, this isn't some theoretical white paper. You can actually open a new tab and test the system's reflexes yourself right now. Oh, for sure. You should absolutely try it while we talk. The link to the live system is https://feedback-loupe.com/projects/pai/full/. Okay. So to understand why PAI is such a massive leap, we really have to look at the flaw in the traditional model first. Right. Because a recruiter looking to staff a defense contractor needs completely different signals than, say, a junior designer trying to reverse engineer a prototyping methodology. But, traditionally, those two people land on the exact same home page. Yeah. They're forced through the exact same overarching about page. Yeah. The burden of navigation is entirely on the visitor to filter out all that noise, and PAI completely inverts that power dynamic. I love how Chris phrases the core thesis of this project in the docs. He says, conversation is the navigation. It's a great way to put it. If a static portfolio is like a massive museum where you're forced to read every single bronze plaque just to find the dinosaur exhibit, well, PAI is like having the museum curator walking right alongside you. Right. You tell them you only care about T. Rex skulls, and they immediately walk you past the Renaissance paintings straight to the paleontology wing. Exactly. And by choosing this medium, the portfolio itself becomes the practice. That's the part that's fascinating here. For a principal product designer who works in regulated domains like health care and voice first interfaces, just claiming you understand AI user experience isn't enough anymore. Right. Anyone can write a medium article about AI. Exactly. But building a production grade, secure, conversational AI to act as your proxy that actively demonstrates your capability. The portfolio is the practice. He is proving his architectural capabilities simply by letting you use the site. But, that brings up a massive product design hurdle. The visual aspect. Yeah. Where? If the conversation is the navigation, how do you actually show the visual work? We're talking about a visual designer here. Right. It can't just be text. The worst possible experience would be asking to see a wireframe and having an AI spit out a 500 word essay describing what a button looks like Yes. Or, like, dumping a raw URL into the chat that I have to go copy paste. Yeah. Oh, that would be terrible. And that tension is exactly what led to the central product design decision of the entire build, which is the panel system. Okay. Let's unpack the panel system because the text chat is really just half of the interface. Right? Yeah. The other half is a dynamic, persistent, spatial workspace that the AI actually controls. And there are six different types of these panels. Right. You have examples, posts, sections, access, WP posts, which are live WordPress articles, and then generated panels. Generated panels. So the AI is literally writing custom HTML on the fly to highlight something specific to your question. Exactly. The architecture forces the AI to use these panels as shared reference material. But as you can imagine, giving an LLM the ability to manipulate the user's screen introduces a huge UX risk. Oh, absolutely. Uh-huh. If I'm trying to read a message and the AI is aggressively popping open windows and sliding things across my screen, it's gonna feel like I'm fighting off nineteen nineties pop up ads. I would close the tab immediately. Which is why the prompt engineering here is so methodical. There is a golden rule hard coded into the system's instructions. What's the rule? The AI must open the panel before referencing it in the chat. It actually calls the tool to open the case study, pauses, and then types, I've opened the Lorena project alongside the chat. Oh, wow. So it acts more like a colleague sliding a document across the desk and waiting for you to look at it rather than just hijacking your monitor. Exactly. It gives agency back to the user. Furthermore, the AI is granted complete system state awareness. Meaning what exactly? Meaning, it doesn't just blindly fire commands. It receives telemetry on whether the panel is currently open, if it's still loading, if you manually closed it, or if you dismissed it entirely. Okay. So if I get annoyed and click the x on a case study, it registers that action. It won't stubbornly pop it back open on its next reply and pretend nothing happened. It respects the dismissal, and it actually logs the title of the panel you closed so it doesn't repeat the mistake. That is incredibly smart. And then consider how this translates to mobile. On a desktop, a side by side view makes sense. But on a phone, there is literally no room. The panel has to be a full screen overlay. Which means the user can't see the chat while they're looking at the panel. Precisely. To handle this, the AI is specifically prompted never to use the word sidebar if the user is on mobile. Oh, that's such a good detail because sidebar makes no sense on an iPhone. Right. It detects the viewport and adapts its dialogue. Instead of saying look to your right, it says tap the x to come back to our chat. It's a level of spatial awareness you rarely see in web based agents. So okay. So the panel system beautifully solves how we view the work. But let's talk about the actual content of that work because this introduces the gating system. Yes. The secrets. Yeah. Chris is a principal designer. He's worked in defense. He's worked in health care. You can't just leave deep case studies about that kind of work floating around in the public Internet. Definitely not. But AI systems notoriously panic when they hit a locked door. They really do. When a standard web connected LLM hits gated content, it usually either throws a generic error or much worse, it tries to please the user by confidently hallucinating a completely fake case study based on just the URL slug. Right? It's like, sure. Here's the top secret health care project. Yeah. And then it just invents a bunch of absolute nonsense. So how do you physically prevent PAI from guessing? Guessing? You isolate the data environments. The AI uses two distinct prompt layers for every single interaction. Okay. Break those down for me. Layer one is the system prompt. This dictates the persona, the current state of the UI panels we just talked about, and most importantly, the user's exact authentication level. And layer two. Layer two is the user turn prompt, which only contains the specific knowledge chunks retrieved for that exact question. I see. So the public hub knowledge, things like Chris's resume, his public skills, his podcast appearances Mhmm. That is completely separated from the gated case study HTML. Exactly. The AI literally cannot leak the deep stuff because it doesn't even know it exists until you hold the key. The secure HTML is never vectorized into the general database. That is bulletproof. Now the actual mechanism for getting that key is this really elegant three email access flow. Yeah. It relies on a WordPress, WP Post Pass, cookie, and some local storage flags. Right. So when you ask to see the secure work, you receive a confirmation email. Simultaneously, Chris receives an administrative email with a one time grant link. He clicks the link to approve you, and you instantly get a third email with a magic link. And clicking that sets the cookie on your device, flipping your local storage flag to unlocked. But, you know, the true mark of a senior engineer is how they handle failure states. Oh, for sure. Things break all the time. Right. So if the third party email service, say, Mailgun goes down, PAI doesn't leave you sitting there waiting for a magic link that will never arrive. It actually knows the email failed. Yes. The system detects the failure, cleans up the temporary database transient, and surfaces a graceful error page with a direct contact link. It builds trust because it doesn't lie to you. But, honestly, my favorite part of this entire flow is what Chris calls the frictionless pivot. Yes. This is a great UX detail. Because, say, I'm just a random recruiter, totally unauthenticated, and I casually ask PAI, hey. Tell me about your deep health care work. The AI doesn't scold me. No. It doesn't throw up a red banner or say, you must log in to view this content. It just, like, instantly loads the access request form right into the panel and smoothly continues the conversation. It normalizes the security gate, making it feel like a standard feature of the portfolio rather than a roadblock. And then the moment the cookie is set in the same session, the AI receives a silent and unlocked system injection. And it immediately changes its tone. It does. It warmly welcomes you to the deeper work without awkwardly using robotic phrases like authentication successful. And it proactively starts servicing product demo videos and detailed design narratives that it was previously hiding. It's so fluid. But to manage all these simultaneous states, you know, checking authentication cookies, managing panel states, altering vocabulary from mobile screens, the underlying engine has to be incredibly rigid. It does. Let's look at the tech stack. I've been waiting for this because I'm stuck on how fast this has to be. Yeah. If it's opening panels and checking locks and fetching data, standard LLM calls usually lag for several seconds. What is actually running this? The architecture is a Node. Js back end speaking to a React front end with an SQLite database handling the conversation persistence. And the model itself. The primary brain is Claude Haiku 4.5. It was chosen specifically for its low latency, though there is a physical switch built in to route to OpenAI's GPT four mini for a b quality testing. Okay. And as of the May 2026 logs, they are managing about 3,945 chunks of data. But here's the technical twist that really fascinated me. The retrieval system. Yeah. For retrieval augmented generation, the system that fetches the right data chunks, they aren't using semantic embedding. They went with old school keyword scoring. Which heavily bucks the current trend in AI engineering. Right. I mean, everyone wants to use vector embeddings because they supposedly understand the contextual meaning of a sentence. Right. But let's use an analogy to explain why Chris abandoned it for this project. Semantic search is like going to a librarian and asking for a book that captures the fleeting feeling of melancholy during a winter storm. Right. The librarian understands the vibe and gives you great poetry. Exactly. But if you just need the compliance manual for high power regulations, you don't want the librarian pondering the emotional weight of your request. You just want them to look up the exact keyword in the index. That is precisely the logic here. Chris' corpus is so domain specific, so dense with unique terminology that embedding based retrieval was just adding massive infrastructure costs and processing time without actually yielding computationally cheap, lightning fast, and highly effective for a targeted professional dataset. They did add one clever override though, intent detection. Because keyword scoring is literal, if I type tell me about about your podcast, a standard keyword search might accidentally pull up a random design methodology chunk just because it happens to contain the word pod. Right. So to fix this, specific tokens fire an aggressive score boost to guarantee the correct chunk wins the retrieval race. And once that correct chunk is retrieved, it hits the 150 token leash. Oh, explain this leash because I think it's the smartest UX decision in the whole back end. There is a hard limit on the AI's output length capped at exactly a 150 tokens. It is physically impossible for PAI to generate a rambling five paragraph briefing document. Because timeboxed hiring managers hate walls of text. If you ask a question on Slack, you want a quick DM from your colleague, not a novel. Exactly. This constraint forces the AI to summarize nightly and rely on the visual panels to do the actual heavy lifting. We also need to highlight the init message to combat the dreaded first token latency. You know, that awkward pause when you first load an AI chat and wait for it to wake up. The very first message PAI sends is static. Right. It's served cold directly from a JSON configuration file. Zero LLM call required. You land on the page, and the AI greets you instantaneously. Though the May updates introduced a really nice touch here, they added a two second IP based location enrichment on that initial load. Yeah. It does a course check, just figuring out your general region or city. And if that lookup takes even a millisecond longer than two seconds, the system silently aborts the request and proceeds with the default greeting. But if it catches it, it might casually say cold day in the DC area, which is brilliant if you're trying to appeal to defense contractors in Washington. It feels hyper personalized, but it achieves this without setting tracking cookies, saving your street address, or building a shadow profile on you. It's a femoral context used purely for an icebreaker. But speaking of context, we cannot overlook the always pinned chunk. This addresses the single biggest vulnerability in AI resumes. Oh, this is so good. So Chris left his role at Red Cell Partners in early twenty twenty six. Right. And the most plausible confident hallucination an AI could make, especially if older resume data is floating around in the database, is that he still works there. Because language models are narrative engines. They naturally assume continuity unless explicitly told otherwise. So to fix this, Chris built a rule where his current employment status is injected into the context window of every single query. It completely bypasses the keyword scoring system. It is just always there. It's, it's basically like reminding your best friend, you know, right before they walk into a networking party, hey, whatever you talk about tonight, just remember I don't work at that company anymore. Yes. It is an absolute fail safe. It guarantees the model is anchored to his current reality on every single turn, eliminating the most damaging hallucination possible for a job seeker. But designing these strict rules is one thing. Testing an agentic system is notoriously difficult. You can't just run an automated script to see if a button turns blue. Right. How do you test if the AI is matching the right tone or handling weird edge cases? Chris relied on intense simulation. He utilized a Claude Chrome extension to methodically role play different visitor personas. He would actively try to break his own system. He would pretend to be a cynical recruiter aggressively questioning his employment gaps or like a junior designer trying to force the AI to talk about totally unrelated coding frameworks. And when the AI eventually failed, maybe it misattributed a design quote or fabricated a metric, he didn't have to tear down the code base to fix it. He built a tool called the feedback loop. Let me make sure I understand this because it sounds like magic. Normally, fixing a hard coded error in an app requires rebuilding the whole thing and pushing an update. The feedback loop is basically a backdoor. That's a perfect analogy. If the AI says something wrong, Chris can go into an admin layer and just slap a digital sticky note over that specific database entry in real time. Exactly. It applies a corrective annotation that instantly overrides the database on the very next query without a single reappointment. It is the shortest possible path from identifying a hallucination to permanently eradicating it. Which brings us to the final and maybe most ambitious layer of this project, the voice interface. Oh, this is where it gets really wild. You've got this heavily structured, tightly controlled text system. Making it talk seamlessly introduces a whole new universe of latency and UX problems. The architecture actually splits the communication streams. For the standard text chat, it relies on server sent events or SSE. Because SSE is basically a one way radio broadcast from the server to your browser. Mhmm. It's native to HTTP. It handles its own reconnections, and it's incredibly lightweight. Exactly. But voice interaction cannot be a one way radio. It requires a continuous open two way phone line. For that, the system uses a server side WebSocket proxy to stream audio directly into the Deep gram Nova two speech to text engine. And for the text to speech side, the AI's actual voice, the back end, is completely modular. It supports Deepgram Aura or even a self hosted GPU model called Sesame CSM one b. But regardless of which voice engine is plugged in, the text has to pass through what Chris calls the voice normalization pipeline. Which is critical because LLMs write for screens, not for vocal cords. The pipeline intercepts the text and strips out markdown formatting, asterisks, and bare URLs. It mathematically translates acronyms and isodate formats into natural phonetic speech. But I wanna pause on the most obsessive detail in this entire deep dive. The pause math. Yes. The pipeline mathematically calibrates the silence. It enforces a two hundred millisecond pause for a comma, a four hundred and forty millisecond pause between sentences, and a two hundred and sixty millisecond pause at an em dash. When I read that, my first thought was, who on earth is gonna notice a fifth of a second difference between a comma and an AMdesk? We're on a conscious level. Nobody. On a subconscious level. Every single human being, when you are designing voice first interfaces for high stakes environments, you are constantly battling the uncanny valley. Because humans do not speak in a continuous perfectly spaced monotone stream. We breathe. We hesitate to gather our thoughts. We pause differently when we are appending a thought versus finishing one entirely. The difference between a two hundred millisecond pause and a four hundred millisecond pause is entirely the difference between a tool feeling empathetic and trustworthy versus feeling robotic and unsettling. And this brings us right back to the 150 token output cap we discussed earlier. Oh, because the text is already constrained to be short, it is inherently optimized for voice. You don't have to run it through a secondary summarization prompt to prevent the AI from talking uninterrupted for three minutes. The constraints stack beautifully. It is a master class in holistic system design. And perhaps the best part is that Chris doesn't obscure any of this behind slick marketing copy. In the May updates, he introduced a how PAI works panel. If you literally just ask the AI how are you built, it opens a responsive SVG diagram. It shows you the actual data flow, the voice paths, the ARRA acknowledge chunks, the WordPress proxy, the physical fork between gated and ungated content. It explicitly details the privacy boundaries of the IP location check, proving that there are no shadow accounts being built. It answers the question, do you know where I am? With grounded, transparent engineering facts. It's truly remarkable. We've just traced how PIA takes the exhausting static concept of a traditional portfolio and breathes life into it. It creates a spatial agentic environment that routes you exactly where you need to go, adapting to your specific intent on the fly. It solves the classic show don't tell paradox perfectly. If you are a principal product designer claiming expertise at the intersection of AI and consequential regulated systems, writing a Medium article about it is insufficient. Right. Shipping a secure conversational AI system proves your capability by its very existence. The medium truly is the message. I highly encourage you listening to go try it out. Again, the live embed is at https://feedback-loupe.com/projects/pai/full/. Go throw a ridiculously specific methodology question at it. Try to trick it into hallucinating a job date. See how it intuitively manages the panel system on your phone versus your desktop. But as you navigate that conversation, consider the broader implications. If an AI can dynamically adapt to the intent of a hiring manager, flawlessly manage secure documents, and articulate complex visual artifacts better than a static PDF ever could, well, we have to ask a much larger question. Exactly. How long until the traditional resume format is entirely obsolete? What happens to the job market when your initial screening interview isn't with you, but with a digital agentic clone trained entirely on your career methodologies? Wow. Will we all need to build our own personal museum curators just to stay competitive? It completely redefines what it means to apply for a job. That is definitely something to sit with. Till next time. Thanks for diving deep with us.

Interested in this kind of work?

Get in touch →