Your phone reminds you the day of, too late to give anything good. I designed PickPal and directed its full-stack build with Claude Code: idea to private beta in 7 days.
PickPal helps you land on a thoughtful gift for the people who matter, every time. It centralizes who they are (interests, notes, sizes, important dates) and, when an occasion nears, generates AI ideas matched to that specific person and moment. I designed all of it, then directed the full build with Claude Code: design system, copy, and full stack, shipped to a private beta of real users.
The Problem
Two chained problems: forgetting the date (you're reminded the day of, too late for anything thoughtful) and, even in time, not knowing what to give. Faced with a blank, you default to the generic last-minute pick.
The Solution
A web app pairing a date tracker with an AI gift advisor: add the person, the occasion, and the budget, and get 9 personalized ideas with direct links to buy.
Product Thinking
Where the idea came from
PickPal started as my own problem, and informal conversations with friends and family kept surfacing the same pattern. Before writing any code I mapped how people patch this today (phone reminders, wishlists, a last-minute search), and none closed the loop from knowing the date to knowing the gift. Lightweight validation, not formal research, but consistent enough to build on.
Existing Alternatives & Their Gaps
Of the four common workarounds, only PickPal covers the full chain: from anticipating the date to a concrete idea that fits the person and the budget. This is my own scoring of my own product, so read my column as intent rather than an audit.
Capability
PickPal
Phone reminders
Amazon Wishlists
Google search
Reminder apps
Reminds in advance
Suggests gift ideas
Keeps the surprise
Personal context (interests, sizes)
Aware of occasion & budget
Learns from your usage
Target User
The Thoughtful Gifter
Family, partners, close friends
Profile
Someone who invests in their relationships and wants their gifts to mean something. Not a productivity tool or a CRM, they want to come through for people.
Goals
Give thoughtful, personal gifts
Anticipate dates that matter
Have the gift say something about the person
Frustrations
Freezing up exactly when it matters most
Generic, last-minute picks
Going over budget
Idea to Product
The Core Insight
The real pain isn't forgetting, it's the decision paralysis that comes after you remember. Phones already solve the reminder problem.
One shape, almost obvious from the insight: a date tracker plus an AI gift advisor, so the reminder and the decision live in the same tool.
I ruled out the CRM, productivity-app and social-network framings early, because each one pulls a product toward cold contact lists and dashboards. PickPal had to stay personal and warm, and every later decision had to defend that line.
Directing the build
I'm a product designer and I don't write code. Every product and design call was mine, down to the database schema; Claude Code wrote the implementation.
Seven days, first commit to private beta
7 days
1
Map the problem
Lightweight validation, before a line of code
2
Full-stack build
Next.js · Convex · Clerk · Gemini · Resend
3
Design language
Paper-notebook warmth, on purpose
4
Private beta
May 11, 2026 · 10+ real users
Tech Stack & Pipeline
Tech Stack
The foundation is Next.js — one framework for both the interface and the server endpoints (the API routes). So the front end and the sensitive logic (calling the AI and validating its response) live in the same project, with no separate backend to maintain.
On top of that, the product needed four more things, so I picked one tool for each:
Convex
Store the data
A real-time database. The dates and people you save update live, with no loading states to design. Feeling instant was the whole point.
Clerk
Accounts & security
Auth, sign-in and Google login out of the box. A trustworthy first screen without building it from scratch.
Gemini 2.5 Flash
Generate the ideas
Fast and low-cost (a month of searches costs under a cent), with every response validated before it shows.
Resend
Event reminders
Transactional email that sends the reminder before each date.
Pipeline
The person's profile, with their tastes, what they dislike and the gifts you've already given, goes into Gemini. Before it reaches you, the response runs through an automatic filter that checks three things, that it's well presented, that it follows the rules and that the stores are valid. Anything that fails is discarded and generated again.
CONTEXT
The person’s profile
Occasion and budget
Gift history
Gemini 2.5 Flash
Suggests ideas from the context
Automatic filter
Format: Every idea has a title, reason, price and link
Rules: No duplicates and within budget
Stores: Only links to verified stores
If a check fails, the idea is discarded and regenerated
If a check fails, the idea is discarded and regenerated
RESULT
9 ideas that passed all 3 checks
Design System & Visual Identity
PickPal is about the people you love, so I built it to feel like a warm paper notebook, not a SaaS product. That one idea runs through every color, typeface, component and line of copy.
Concept & Intent
My references were Things 3, a personal Notion and good stationery. That was a deliberate bet on how the product should feel, made before any screen existed.
Every visual choice had to pass one test. Would it belong in a notebook or in a dashboard? Anything that felt like Linear, Material or Stripe was wrong by definition.
Palette
Lightwarm aged paper
primary
#2D4033
accent
#D97757
surface
#FBF7EE
Darkdeep brown, never black
primary
#4F6E55
accent
#DE9270
surface
#2A241F
Typography
Aa
Fraunces
serif · headings only
Aa
Geist
sans · body & UI
Voice & copy
Yes
The people who matter to you
Your loved ones
All quiet ahead
No
Your contact list
AI-powered notifications
Too many exclamation marks
We talk about people, not a CRM.
Component decisions
Cards lift like paper
The whole card is clickable.
Pareja
María
Intereses
PasearFloresPelículas de terror+10
resting
Amigo/a
Pablo
Intereses
VideojuegosCorrerCalistenia+1
↑ on hover
Empty states with a voice
Every empty state has a name and a clear way out.
Una libreta en blanco
Aún no has añadido a nadie. Empieza por las personas que te importan.
Añadir ser querido
Autosave, no save button
It saves on its own when you leave each field.
María
Cocina, senderismo, vino…
No le gusta el cilantro. Talla 38…
Guardado
How It Works
Three steps: write down who someone is, add the dates that matter, and get ideas you can actually buy.
Step 01
Add your loved ones
Create a profile for each person who matters: name, relationship, interests, free-form notes, sizes, and things they don't like. Everything in the profile feeds the generation prompt: interests steer what the AI suggests, dislikes steer what it avoids.
Step 02
Track their dates with budgets
For each person, add the occasions you want to remember, birthday, anniversary, graduation, or any date that matters to you. Each occasion has its own budget: you can spend differently on the same person's birthday and at Christmas.
Step 03
From the agenda to 9 ideas in one click
The dashboard lists every upcoming date ordered by days remaining, with a 30 / 60 / 90-day filter and optional email reminders. Open one, pick the gift type (physical product, experience, time together, or surprise me), and the AI returns 9 ideas tailored to that profile and that budget, each with a short rationale, a price range, and chips linking to the most relevant stores.
Key Product Decisions
Budget per Occasion, Not per Person
A birthday and Mother's Day for the same person deserve different money, so the budget lives on the occasion. Each one pulls ideas tuned to that moment instead of a blanket "up to €50".
Four Gift Types
For many people, the best gift isn't something you buy. That's why the gift type changes the AI prompt and the stores: "Time together" suggests plans and handmade things; "Experience" points to restaurants or workshops.
Smart Discard with Category Memory
A thumbs-down stores the title and its category, so the next prompt learns the pattern behind what doesn't fit this person rather than only the one idea you skipped.
A Rate Limit That Only Counts Successes
10 generations a day, but only the ones that work count. If Gemini fails mid-request, you retry without losing quota: nobody pays for an infrastructure failure.
Multi-Store Search with Per-Idea Intelligence
The AI picks 1–3 stores per idea instead of applying one global preference, so a local artisan honey never sends you to AliExpress. You only see the shops you saved as favourites.
The 11 stores were picked from the start for a shared trait — each works as a marketplace carrying a multitude of brands — so any single idea can point to the most relevant one:
Wireframe of the 9-ideas grid after a generation: a two-line title, category tags, a short rationale, an aligned price and 1–3 store chips per idea; a thumbs-down discards it and the AI learns.
Beta & Learnings
PickPal launched to private beta on May 11, 2026, one week after the first commit. A closed group of friends and family is using it in real conditions; their feedback drives the iterations that follow.
Closed beta study: friends & family
The beta had to answer one thing: does someone new grasp PickPal and complete the critical flow (add a loved one → reach their 9 ideas) without help, and where does friction show up in real use. Feedback came in through a persistent "Tell me" button on every screen and short calls watching testers use the app on their own phone.
Participants
10
close users
Real use (a genuine birthday next week) and unfiltered feedback.
24–58
age range
Among them, both extremes: last-minute impulse gifters and early planners.
~40
observations
Logged from the in-app "Tell me" button and the calls.
What changed after the beta
Of those ~40 observations, these four moved the flow the most. I prioritised by impact and effort and iterated live: after each change, the person who reported it re-tested it:
Taste suggestions
What I observed
Filling a loved one’s tastes from a blank field was slow, and the thinnest profiles produced the most generic ideas. Several testers added one or two tastes and stopped.
What I changed in the app
Added taste suggestions inferred from what’s already saved for that person, plus type-ahead autocomplete, so adding a taste is one tap, not a free-text chore.
Favourite brands
What I observed
Testers with a brand-loyal loved one ("he only wears Nike", "she always buys at Sephora") found generic ideas useless and kept asking where to actually buy them.
What I changed in the app
Added favourite brands per loved one (logos pulled via the Brandfetch API). Ideas tied to a saved brand now show a dedicated button that opens that exact store with the search already applied.
Idea imagery
What I observed
Text-only idea cards felt flat and made each idea hard to picture at a glance.
What I changed in the app
Integrated the Pexels API to attach a stock image matched to each idea’s name; when no good match exists, the slot falls back to a representative icon instead of an empty frame.
Event selection
What I observed
Opening "generate ideas" from a loved one’s profile (not from the agenda) preselected no occasion and left the generate button disabled, so testers thought the app was broken.
What I changed in the app
Now a single upcoming event is preselected automatically; with several events the button stays active and, on tap, prompts the user to choose which occasion to generate for.
n=10 over two weeks: this validates the flow and surfaces obvious friction, not market demand or retention. I asked for "the flaw, not the praise" and weighted behaviour over stated opinion.
Key Learnings
Design for two distinct emotional states
Two very different moments: calm setup (creating a profile, adding dates and interests) and urgency mode (the birthday is tomorrow, I need an idea now). The UI has to serve both: the first patient and exploratory, the second direct and fast.
Voice is product positioning
Calling them "loved ones" instead of "contacts" is a statement about what PickPal is and who it is for. A single cold empty state can undo it, so the voice rules live in the design system rather than in my head.
Directing the build keeps the design intent intact
I don't write code, so I directed the whole build with Claude Code, from design tokens to database schema. Holding the intent end to end removes the translation loss between what's designed and what ships. The flip side is the temptation to keep iterating technically instead of watching users. The most important work after shipping is listening, not refactoring.