AI Powered User Profiles
The Fastest Path Isn't Always the One People Will Take
Overview
I had a model that could fill in a user's entire profile from an uploaded resume, and I argued against using it that way. Testing showed people wouldn't trust data they hadn't seen land, so I designed a review step instead. Adding friction raised completion about 50% and cut setup time about 40%, showcasing my ability to let evidence override the obvious solution.

Problem
Projects weren't being filled with the right resources because profile completion was low. The cost was high: Upwards of 20 fields of manual entry, most of it information users had already written somewhere else. The result was bad matches, and underutilized resources.
Constraints
Resume formats vary wildly, so the extraction had to fail gracefully, not just succeed on clean PDFs.
AI-populated data couldn't silently overwrite what users had entered themselves.
If there were skills pulled from a resume that didn't match our system, it needed to identify and create that.
The solution needed to reduce effort while maintaining user trust and control.
Research
Why: Profile completion was low and incomplete profiles degraded downstream features. The assumed fix was automation: let the model extract everything and populate the profile in one step.
Methods: Interviews with 10 participants, run directly rather than handed to a research partner. Rather than testing a static mock, I built a working prototype in Firebase Studio so participants interacted with real extracted data and saw the model's actual output, including where it got things wrong.
Designing the test: Demos always use the clean example, which is never where things break. I used ChatGPT and Claude to generate realistic edge cases, unusual formats, employment gaps, non-linear career paths, so I could watch what happened when the extraction was imperfect rather than only when it worked.
What we found: Participants didn't object to AI filling in their data. They objected to not seeing it happen. When fields appeared pre-populated, people went back and manually re-verified everything, which erased the time savings automation was supposed to deliver. The trust problem wasn't accuracy, it was visibility.
What changed because of it: I moved from auto-population to an explicit review-and-confirm step. On paper this adds a step to a flow we were trying to shorten. In practice people moved through it faster because they weren't stopping to second-guess. I also rejected a conversational pattern here, despite building a chatbot on another project, because structured review kept people in context and oriented.
Key Decisions
Early on, we considered auto-accepting high-confidence fields. Testing showed users didn't trust data they hadn't seen land, so every extracted field goes through an explicit confirm step. Slightly slower, dramatically more trusted.
AI-generated and manually entered data look different in the UI. We wanted to highlight the skills/entries pulled by AI alongside any existing manual data. After rejecting full-text highlights and having separate sections, I opted for small sparkle icons, and the accept/reject buttons naturally distinguished the AI data from the manual ones. Users were able to quickly understand the difference. This became the trust backbone of the feature.
We deliberately rejected a conversational approach here. Filling a profile is a structured task; embedding AI assistance inside the existing flow beat bolting a chat window onto it. (I made the opposite call on Dela. See that case study for when a chatbot is the right answer.)
Try the flow → Upload a resume, watch the extraction, and review each AI suggestion the way a real user would.
AI proposes, the user disposes.
Recreated demo, rebuilt from scratch in Lovable, production data and branding removed. Interaction reference only.


How I worked
I used Claude to generate realistic edge-case resumes (unusual formats, career gaps, non-linear paths) so I could test the extraction UI against messy real data instead of clean placeholder content.
I built the review-and-confirm flow as a working prototype in Firebase Studio so usability participants corrected real AI-extracted fields instead of imagining it.
The AI generated prototype kept pushing a chatbot interface, which I decided against because the review and confirm flow was faster and kept the users in context.


Outcome
Profile completion rose ~50%: Product analytics compared completed-field rates before and after the feature implementation.
Users built profiles ~40% faster: Based on time-on-task in usability sessions.
User testers said this was a faster and easier way to complete their profiles.
The VP of product was impressed with my decision not to do everything through the chatbot.
