Product Spec Behavioral Finance

Pre-Buy Decision Coach

A behavioral finance web app that guides users through a structured 5-step worksheet to overcome availability bias — before they spend a dime.

TypeInteractive Web App
Screens4 Core Views
StackReact + Node + Postgres
StatusOpen for Build
My Decisions
Yoga Mat — $40
Savings · Need · 100 uses ✓ Buy
$5 Challenge: $0.40/usePasses
Bread Maker — $80
Emergency Fund · Want · 8 uses ✗ Don't Buy
$5 Challenge: $10.00/useFails
Kitchen Gadget — $45
Paycheck · Want · 10 uses ⚠ Reconsider
$5 Challenge: $4.50/useBorderline
"Just because we can picture something being used doesn't mean it deserves space in our home." The Availability Bias Problem

Five steps to overcome availability bias

Our brains quickly generate vivid scenarios of using an item — making the purchase feel necessary. These five steps slow that process down.

01
Be On the Lookout
Recognize when your brain is generating convincing "I'll use this" scenarios. Awareness is the first defense.
02
Possibility vs. Probability
Stop asking "Can I imagine using this?" and start asking "How likely am I to actually use this?" Rate it High, Medium, or Low.
03
What Would I Do Instead?
Name the alternative: borrow, rent, use something else, or pay for a service. There's always another way to solve the problem.
04
Pause Before Purchase
Commit to waiting 24–48 hours. The app tracks the gap between "I want it" and "I decided." Time is clarity.
05
Picture Life Without It
Imagine scenarios where you didn't buy it. What would you do with the money? The space? Your mental bandwidth?

The $5 Challenge
Calculator

Every purchase is evaluated against a cost-per-use threshold. If each time you use the item costs more than $5, it's probably not worth it — and the app tells you exactly why.

The formula is simple: Price ÷ Estimated Uses = Cost Per Use. The challenge is being honest about the estimated uses.

  • Live calculation updates as you type
  • Green / red pass/fail indicator
  • Weighted into final decision score
$5 Challenge Calculator
Item Price$60.00
Times I'll Use It15 times
Cost Per Use$4.00
✓ Passes the $5 Challenge $4.00
Examples
$80 bread maker ÷ 8 uses$10.00 ✗
$40 yoga mat ÷ 100 uses$0.40 ✓
$200 coffee maker ÷ 600 uses$0.33 ✓

Money source matters

Where the money comes from changes everything. The app prompts users to classify their funding source — and flags dangerous patterns like raiding an emergency fund for a want.

Paycheck / Savings / Side Gig — safe for planned purchases
Emergency Fund / Credit — flagged for wants
Money Source + Need / Want
PAYCHECK
Safe for planned purchases
SAVINGS
OK if emergency fund is intact
SIDE GIG
Great for discretionary items
EMERGENCY FUND
⚠ Only for true needs
CREDIT CARD
⚠ Risky unless paid in full immediately

Turn purchases into rewards

Instead of impulse-buying, users can designate an item as a reward for completing a meaningful goal — turning procrastination fuel into genuine motivation.

Define the reward item

Check "Is this a reward?" to unlock a goal field. The item is held in a "pending reward" state until the goal is marked complete.

Name your goal

Write the specific task: "Complete the online course," "Declutter the garage," "Finish the Q1 report." Specificity drives follow-through.

Earn the reward

Only after the task is marked complete does the item unlock for purchase — still subject to all five decision-framework checks.

Reward must still pass the framework

A reward that fails the $5 challenge or is funded by an emergency fund is still rejected. The reward designation adds motivation — not a bypass.

Database schema

Two core tables. All purchase decisions are stored server-side and linked to an optional email. Admins can export the email list as CSV.

users_emails
iduuid pk
emailstring uniquevalidated, required
created_attimestamp
purchase_items
iduuid pk
item_namestringrequired
categorystring
pricedecimalin dollars
money_sourceenumPaycheck / Savings / Side Gig / Emergency / Credit
need_or_wantenumNeed / Want
times_use_estimateinteger
cost_per_usedecimalcomputed: price ÷ uses
passes_5_challengebooleancost_per_use ≤ $5
step1–5 fieldstext / enumavailability bias steps
final_decisionenumBuy / Reconsider / Don't Buy
is_reward_itemboolean
reward_task_goaltext
created_at / updated_attimestamp

REST endpoints

A minimal, clean REST API surfaces all app functionality. The admin export endpoint should be protected before going to production.

POST
/emailsCapture and store a user's email address. Validates format, prevents duplicates. Returns success message on the landing screen before revealing the main app.
POST
/itemsCreate a new purchase decision record. Requires item_name, price, money_source, need_or_want, and times_use_estimate. Computes cost_per_use and passes_5_challenge server-side.
PUT
/items/:idUpdate an existing item. Used when the user reopens a worksheet to edit details or change their final decision. Recomputes cost_per_use on save.
GET
/itemsReturn all purchase items for the dashboard. Supports query params for filtering by final_decision, need_or_want, and sorting by cost_per_use or date.
GET
/admin/emails/exportReturns all collected emails as a CSV download. ⚠ Must be protected with authentication before production deployment.

Green, Yellow, Red

Every item gets a computed recommendation based on five weighted inputs. The result is shown as a clear, color-coded badge with plain-language reasoning.

🟢
BUY
  • High probability of use
  • Waited 24–48+ hours
  • Need — or high-value want
  • Passes $5 challenge
  • Funded from paycheck, savings, or side gig
🟡
RECONSIDER
  • Medium probability of use
  • Borderline $5 challenge
  • Want — but safe funding source
  • Alternatives not yet explored
  • Action: wait longer or increase use estimate
🔴
DON'T BUY
  • Low probability of use
  • Fails $5 challenge significantly
  • Want funded from emergency fund
  • Haven't waited 24 hours
  • Better alternatives already named
Optional Weighted Scoring (tie-breaker)
Money Source
25 pts max
Need vs. Want
25 pts max
$5 Challenge
25 pts max
Probability
25 pts max
80+ pts = Green Light  ·  50–79 pts = Yellow Light  ·  Below 50 = Red Light

30-Day Reflection

30 days after any decision — buy or don't buy — the app prompts a reflection. This closes the feedback loop and teaches users their own purchasing patterns over time.

After Not Buying
Did you miss this item?
Did you solve the problem another way?
What did you do with the money instead?
How much space / mental energy did you save?
Key Insight →
After Buying
How often are you actually using it?
Was it worth the money?
Is it taking up more space than expected?
Any regrets?
Key Insight →

Collect user emails
on every sign-up

The landing screen requires an email before revealing the full app. Emails are stored in a dedicated database table and exportable as CSV at any time from the admin panel.