Step 1 — Survey (n=21) before writing a line of code. Tested whether the attributes I was about to build a product around (e.g., laptop policy, seating, vibe, hours, etc.) are actually what people weight when they choose a cafe.
| Signal | Finding | What this meant |
|---|
| Visit frequency | 67% visit cafes ≥1×/week | Realistic, not aspirational. |
| Work-from-cafe | 52% named "study or work" as a top reason | Primary use case is half the sample, not a niche. |
| Laptop-friendly weight | 86% Always/Often weight it | Laptop friendly is the primary filter chip. |
| Seating weight | 86% Always/Often weight it | Ample seating is also a key factor. |
| Hours weight | 71% Always consider hours; "late hours" surfaced unprompted twice | "Open now" option is also necessary. |
| Vibe weight | 76% Always/Often consider vibe | Vibe can vary, but for work purposes, quiet vibe comes first. |
| Pet-friendly / Parking | <15% Always for either | Confirmed dropping both from the primary chip set. |
| Helpfulness of current sources | Mean 3.57 / 5 | The laptop-friendly cafe search experience gap is real! |
"I would be interested in having a way to see what coffee shops are best to study at by answering questions like: is there Wi-Fi? How many tables are there? Can I get seating? Is there a pleasant vibe?"
— UW grad student (F, 25–29)
Step 2 — Shipped a constrained MVP.
☕ Wall 1 · 5-review API cap → Most attributes came back blank.
Google's API legally returns only 5 reviews per cafe. Volume-based approaches were ruled out before they started. Meaning-extraction over fewer reviews became the only honest move.
🫘 Wall 2 · word ≠ meaning → "Peaceful" never matched "quiet."
Exact-keyword search punishes users for not guessing the exact word a reviewer used. The model had to understand "calm," "peaceful," "laid-back" all answer the same question.