March 23, 202611 min readai-first-projects

Build a Personal Recommendation Engine with AI CLI

Stop trusting 'best of' lists written for affiliate commissions. Learn how to feed your exact constraints into an AI CLI agent and get back ranked recommendations with explanations for why each option fits YOUR specific situation.

DH
Danny Huang

The Problem with "Best Of" Lists

There is a moment in every purchase decision when you realize the internet is not helping you.

You want a coffee machine. Not just any coffee machine -- one that makes espresso AND drip coffee, fits in a kitchen where counter space is measured in centimeters, costs between $200 and $400, and is easy to clean because you already know you will not maintain anything that requires disassembling six parts every morning. You have four constraints. They are all non-negotiable.

So you search. "Best coffee machine 2026." The first result is a list of twelve machines. The article is 3,000 words long. By paragraph three, you notice the same brand appearing in every other recommendation. You scroll to the bottom. There it is: "This article contains affiliate links." The list was not written to solve your problem. It was written to earn a commission.

You try a second article. Same twelve machines in a different order. A third. A fourth. They are all drawing from the same pool, rearranging the same options, and none of them know that your kitchen counter is 45 centimeters deep, or that "easy to clean" means you will abandon the machine the first time it takes more than thirty seconds to rinse.

This is the fundamental problem with generic recommendations: they optimize for the average buyer, and you are not the average buyer. Nobody is. Everyone has a specific constellation of constraints -- budget, space, taste, lifestyle, deal-breakers -- and no article written for a million readers can hold all of yours in mind simultaneously.

But an AI can.

What You Are Building

A reusable recommendation workflow that works like this:

  1. You define your constraints -- budget, must-haves, nice-to-haves, deal-breakers.
  2. The AI searches through options and reasons about each one against your full set of criteria.
  3. You get back a ranked list with explanations for why each recommendation fits your specific situation.

This is not a one-off trick. Once you understand the pattern, you can use it for anything: choosing a gym, picking a SaaS tool for your freelance business, selecting a wine for a dinner party, finding the right online course, deciding which neighborhood to move to. Any decision where you have multiple criteria and too many options.

The key insight is this: the AI's advantage is not knowing more products than Google. Google has more data. The AI's advantage is holding your entire set of constraints in working memory and evaluating every option against ALL of them simultaneously. A human reading reviews does this one constraint at a time and forgets the third one by the time they finish evaluating the seventh option. The AI does not forget.

Prerequisites

  • Claude Code installed and authenticated. If you have not set it up, the first hour tutorial gets you running in under 60 minutes.
  • A Claude Pro subscription ($20/month) or an Anthropic API key.
  • A decision you need to make. Something with at least three criteria and more than five options.

No coding experience required. You will type plain sentences. The AI does the rest.

Step 1: Write Your Constraint Document (10 Minutes)

This is the step that separates a useful recommendation from a generic one. You are going to write down everything that matters to you about this decision. Not what you think you should care about -- what you actually care about.

Open any text editor. Write a document that covers four things:

Must-haves. These are non-negotiable. If an option fails any one of these, it is eliminated. Be specific.

Nice-to-haves. These matter, but you would accept an option that misses one or two of them. Rank them by importance if you can.

Deal-breakers. The inverse of must-haves. Things that instantly disqualify an option. Sometimes these are easier to articulate than what you want.

Context. The situation-specific details that affect the decision. Your kitchen dimensions. Your morning routine. How many people will use the thing. Whether you have tried something similar before and what went wrong.

Here is what a constraint document looks like for the coffee machine example:

# Coffee Machine Decision

## Must-haves
- Makes real espresso (pressurized portafilter at minimum, ideally 15+ bar)
- Also makes drip/filter coffee (not just espresso with water added)
- Price: $200-$400
- Fits on a counter that is 45cm deep
- Easy daily cleaning — nothing that takes more than 30 seconds to rinse

## Nice-to-haves (ranked)
1. Built-in grinder (saves counter space vs separate grinder)
2. Programmable — can set it to brew at 6:45 AM
3. Milk frother included
4. Compact width (under 30cm)

## Deal-breakers
- Proprietary pods or capsules (I want to use any beans)
- Requires paper filters I have to keep buying
- Plastic water reservoir (taste issues after 6 months)

## Context
- Two people drinking coffee, morning only
- Kitchen in a 30-year-old apartment, counter space is extremely limited
- Previously owned a Nespresso — loved the convenience, hated the pod cost
  and the environmental waste. Want the same speed with real beans.
- I will not descale regularly. If it needs monthly descaling to survive,
  I will kill it within a year.

Notice what this document does. It does not ask for "the best coffee machine." It describes a specific person with specific needs. Every constraint is concrete. "Easy to clean" is defined as "under 30 seconds to rinse." "Compact" has a number attached to it. "Budget" is a range, not a vague "affordable."

This specificity is what makes the AI useful. Vague input produces vague output. Specific input produces recommendations that feel like they were written by a friend who knows your kitchen.

Step 2: Feed It to the AI (5 Minutes)

Open your terminal and start Claude Code:

mkdir coffee-decision && cd coffee-decision
claude

Now paste your constraint document and add the instruction:

Here are my constraints for choosing a coffee machine:

[paste your constraint document here]

Based on these constraints, research coffee machines available in 2026
and give me:
1. Your top 3 recommendations, ranked by overall fit
2. For each recommendation: price, dimensions, why it fits my must-haves,
   which nice-to-haves it covers, and any trade-offs I should know about
3. A brief list of options you considered and rejected, with the reason
   each was eliminated
4. One "wildcard" option that breaks one of my constraints but might be
   worth considering anyway, with an explanation of why

Format the output as a clean markdown document I can save and reference later.

Press enter. The AI will work through your constraints systematically. It considers options, checks each one against your full criteria list, and eliminates those that fail. The result is not a regurgitated "top 10" list. It is a reasoned analysis tailored to you.

Step 3: Read the Output Like a Consultant's Report (5 Minutes)

What comes back looks something like this (abbreviated):

# Coffee Machine Recommendations for Your Kitchen

## #1: Breville Barista Express Impress — $350
- **Dimensions**: 31cm W x 40cm D x 38cm H
  ⚠️ At 40cm deep, this is tight on your 45cm counter but fits.
- **Must-haves**: ✓ 15-bar espresso, ✓ includes drip adapter,
  ✓ within budget, ✓ fits counter depth, ✓ removable drip tray
  rinses in 10 seconds
- **Nice-to-haves**: ✓ Built-in conical burr grinder (#1),
  ✗ Not programmable (#2), ✓ Steam wand for milk (#3),
  ✗ 31cm wide, just over your 30cm preference (#4)
- **Trade-off**: 1cm wider than your ideal. The built-in grinder
  is why — it adds width but eliminates a separate appliance.
  Net counter space is actually less than espresso + grinder.
- **Descaling**: Auto-alert every 2-3 months. Uses a tablet you
  drop in — 10 minutes, mostly waiting. Not monthly.

## #2: ...

## Eliminated Options
- DeLonghi Dinamica: $499, over budget
- Gaggia Classic Pro: Excellent espresso but no drip capability
- Breville Bambino: Under $300 but no built-in grinder,
  no drip function
- Nespresso Vertuo Next: Proprietary pods — deal-breaker

## Wildcard: Jura E4 — $580 (over budget by $180)
This breaks your budget constraint. Here is why it might be worth it:
fully automatic, one-button operation, self-cleaning, self-descaling...

Look at what happened here. The AI did not just list machines. It evaluated each one against your specific constraints and told you exactly where the fits and gaps are. The depth measurement is there because you mentioned your counter depth. The descaling note is there because you said you will not do it monthly. The "wildcard" exists because sometimes the right answer is slightly outside the box you drew.

This is the difference between a recommendation and a review. A review tells you about the product. A recommendation tells you about the product and you.

Step 4: Make It a Reusable Workflow

The real power is that this pattern works for any decision. Save your constraint document as a template:

# [Decision Name]

## Must-haves
- [Non-negotiable requirement 1]
- [Non-negotiable requirement 2]

## Nice-to-haves (ranked)
1. [Most important preference]
2. [Second most important]

## Deal-breakers
- [Instant disqualifier 1]

## Context
- [Your specific situation]
- [Relevant past experience]
- [Environmental constraints]

Next time you face a decision -- which project management tool for your three-person team, which neighborhood to rent in, which laptop to buy -- fill in the template and feed it to the AI. The process takes 15-20 minutes from start to a set of ranked, reasoned recommendations.

Here are three more examples of how the same pattern applies:

Choosing a gym. Must-haves: within 15 minutes of home, open before 6 AM, has a squat rack. Nice-to-haves: pool, sauna, month-to-month contract. Deal-breakers: requires a 12-month commitment, no free parking. Context: you work from home, prefer to train at 5:30 AM, have a shoulder injury that means you need cable machines for rehab exercises.

Picking a SaaS tool. Must-haves: under $50/month for a solo user, has an API, supports markdown export. Nice-to-haves: mobile app, Zapier integration. Deal-breakers: no offline mode, stores data only on their servers with no export. Context: you are a freelance consultant, your clients use a mix of tools, you need something that plays well with others.

Selecting a wine for a dinner party. Must-haves: under $30, available at major retailers, pairs with both the lamb and the vegetarian dish you are serving. Nice-to-haves: conversation-starter (unusual region or grape). Deal-breakers: over 14.5% alcohol (half the guests are driving). Context: six guests, mixed experience levels, one guest does not drink red wine.

Each of these becomes a 15-minute exercise: write constraints, paste into Claude Code, get ranked recommendations with reasoning.

Why This Works Better Than Searching

When you search Google for "best coffee machine," you are asking a search engine to guess what you mean by "best." It cannot. "Best" depends on forty variables that are unique to you, and the search engine knows none of them.

When you hand your constraint document to an AI, you are not searching. You are commissioning an analysis. The AI holds all your constraints in working memory -- simultaneously, not sequentially. It does not evaluate the espresso quality and then forget about the counter depth when it moves on to the price. It holds all four at once. It holds all twelve at once. It holds all twenty at once. That is something a human brain struggles to do and a search engine does not even attempt.

The constraint document is the key. Without it, you get generic recommendations. With it, you get recommendations that feel like they came from a friend who has been inside your kitchen, knows your budget, remembers what happened with your last coffee machine, and has somehow also tested every machine on the market.

That friend does not exist. But the workflow does.

What You Learned

  1. Specificity is the input that matters. "Find me the best X" produces garbage. A constraint document with concrete criteria produces useful recommendations.
  2. The AI's advantage is simultaneous evaluation. It holds your entire set of constraints in working memory and checks every option against all of them at once.
  3. The pattern is reusable. Coffee machines, gyms, SaaS tools, wine, neighborhoods -- any decision with multiple criteria and too many options.
  4. Write the constraint document first. The 10 minutes you spend defining what you actually need saves hours of reading sponsored "best of" lists that were never written for you.

The next time you face a decision with too many options, do not Google it. Describe your constraints. Let the AI hold them all in mind at once. Get recommendations that are actually about you.

#ai-cli#claude-code#recommendation-engine#decision-making#beginner#vibe-coding

Related Posts