← Back to Portfolio

Case Study · Android · Kotlin

Gift Guide

A Kotlin/Jetpack Compose app that helps people find thoughtful gift ideas through guided prompts and personalized suggestions, instead of endless scrolling through generic lists.

Role

Solo designer & developer

Timeline

Independent project · 2025

Skills

Interaction design, Android, UX writing, state management

Stack

Kotlin, Jetpack Compose, ViewModel, local persistence

Gift Guide Android app mockups

Overview

The problem

Buying gifts is hard because it’s completely open-ended. People bounce between tabs, search “gift ideas,” and scroll through generic lists that rarely match the person they’re shopping for.

Gift Guide flips that by asking a few natural questions about the recipient and turning that into a small, focused set of suggestions that feel made for that person.

What I set out to do

Natural input

Let people describe the recipient in their own words, not just filters.

Specific ideas

Make each suggestion clearly connected to the description they gave.

Real planning

Support saving and revisiting ideas instead of a one-time search.

Calm interface

Keep the UI quiet and readable, not noisy or “salesy.”

Core Experience

The app is built around three simple pieces: describing the person, getting ideas, and saving what resonates.

1

Describe the person

The entry screen asks a few short prompts:

  • Who is this for?
  • Occasion (birthday, graduation, “just because”…)
  • Interests & personality
  • Budget range

Inputs use flexible text areas and microcopy like “How would you describe them to a friend?” to keep things casual.

2

Review suggestions

After submitting, Gift Guide turns the description into a curated set of ideas. Each card shows:

  • A concise title (e.g., “Custom recipe journal”)
  • A short explanation tied to the description
  • An optional price note or flexibility hint

The layout is a vertical list of cards—no clutter, clear spacing, easy to scan.

3

Save lists for later

Tapping “Save” adds the idea to a local list on the device. Users can:

  • See all saved ideas across people
  • Filter by person or occasion
  • Mark items as purchased once they’re used

There’s no account or sync on purpose—the app behaves more like a planning notebook than a store.

Design Decisions

Two-tab structure

The app uses a simple “New Ideas / Saved” tab layout so people always know where live results and long-term planning live. No hidden drawers or deep menus.

Readable, quiet cards

Suggestions are designed like small index cards: clear title, one or two lines of explanation, and consistent spacing. The focus is the content, not decorative UI.

Helpful empty states

When there are no saved ideas yet, the app explains what will show up there and gives a direct call to action: “Create your first gift search.” This teaches the feature instead of leaving it blank.

Non-blocking feedback

Saving an item uses a subtle confirmation instead of a modal. The user stays in the flow of exploring ideas instead of being interrupted.

Architecture & Implementation

Under the hood

  • Jetpack Compose for the UI, with state hoisted into ViewModels.
  • ViewModel + state holders to manage inputs, loading, and suggestion results in a single source of truth.
  • Local persistence (Room/DataStore) to store saved ideas, recipients, and simple metadata.
  • A small recommendation endpoint that turns the recipient description into a list of ideas.

Why it’s structured this way

Keeping logic in ViewModels and using a single recommendation endpoint means the UI stays mostly declarative: each screen just renders its current state.

Local persistence is intentionally simple—no auth, no accounts—so the app is easy to install, try, and keep as a lightweight tool during holidays or big events.

What I’d Explore Next

Compare shortlists

Let users pin a few ideas and compare them side by side—pros, cons, and how they connect back to the recipient’s description.

Lightweight sharing

Generate a simple, shareable shortlist link so people can plan gifts with friends or family without needing full accounts.

On-device “nudges”

Let users nudge a set of ideas (“more practical”, “more handmade”, “more playful”) without re-entering everything.

Back to Portfolio