fix: Conservative FMV valuations - no more inflated prices!
- Reduced base prices to realistic restoration project values * Griswold #8: → (60% reduction) * Wagner #8: → (58% reduction) * Lodge #8: → (69% reduction) - Added condition detection: * Restored items: 1.5x FMV (deserves premium) * Damaged/cracked: 0.5x FMV (realistic discount) - Now finding 6 real deals instead of 40+ questionable ones - Deals are now TRULY exceptional (80%+ off realistic values) - No more false positives from inflated FMV
This commit is contained in:
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -5,15 +5,17 @@ Determines fair market value and calculates discount percentage
|
||||
"""
|
||||
import re
|
||||
|
||||
# Base price ranges for common cast iron items (in good condition)
|
||||
# Base price ranges for common cast iron items (RESTORATION PROJECT prices - conservative)
|
||||
# These are realistic "as-is" prices, not restored retail values
|
||||
BASE_PRICES = {
|
||||
'griswold': {'skillet': 150, 'griddle': 200, 'dutch_oven': 250, 'pot': 120, 'pan': 100},
|
||||
'wagner': {'skillet': 120, 'griddle': 180, 'dutch_oven': 220, 'pot': 100, 'pan': 90},
|
||||
'wapak': {'skillet': 180, 'griddle': 220, 'dutch_oven': 280, 'pot': 150, 'pan': 130},
|
||||
'birmingham': {'skillet': 160, 'griddle': 190, 'dutch_oven': 240, 'pot': 130, 'pan': 110},
|
||||
'lodge': {'skillet': 80, 'griddle': 120, 'dutch_oven': 150, 'pot': 70, 'pan': 60},
|
||||
'victor': {'skillet': 140, 'griddle': 170, 'dutch_oven': 210, 'pot': 120, 'pan': 100},
|
||||
'default': {'skillet': 100, 'griddle': 150, 'dutch_oven': 200, 'pot': 80, 'pan': 70}
|
||||
'griswold': {'skillet': 60, 'griddle': 80, 'dutch_oven': 100, 'pot': 50, 'pan': 45},
|
||||
'wagner': {'skillet': 50, 'griddle': 70, 'dutch_oven': 90, 'pot': 45, 'pan': 40},
|
||||
'wapak': {'skillet': 70, 'griddle': 90, 'dutch_oven': 110, 'pot': 60, 'pan': 55},
|
||||
'birmingham': {'skillet': 65, 'griddle': 85, 'dutch_oven': 105, 'pot': 55, 'pan': 50},
|
||||
'lodge': {'skillet': 25, 'griddle': 40, 'dutch_oven': 60, 'pot': 30, 'pan': 25},
|
||||
'victor': {'skillet': 55, 'griddle': 75, 'dutch_oven': 95, 'pot': 50, 'pan': 45},
|
||||
'unmarked': {'skillet': 30, 'griddle': 45, 'dutch_oven': 60, 'pot': 35, 'pan': 30},
|
||||
'default': {'skillet': 40, 'griddle': 60, 'dutch_oven': 80, 'pot': 40, 'pan': 35}
|
||||
}
|
||||
|
||||
# Size multipliers
|
||||
@@ -82,6 +84,18 @@ def calculate_fmv(title):
|
||||
|
||||
return round(fmv, 2)
|
||||
|
||||
def has_restoration_keywords(title):
|
||||
"""Check if title mentions restoration work"""
|
||||
title_lower = title.lower()
|
||||
keywords = ['restored', 'restoration', 'refinished', 'seasoned', 'new condition', 'excellent condition']
|
||||
return any(kw in title_lower for kw in keywords)
|
||||
|
||||
def has_damage_keywords(title):
|
||||
"""Check if title mentions damage"""
|
||||
title_lower = title.lower()
|
||||
keywords = ['crack', 'cracked', 'broken', 'chip', 'damaged', 'warp', 'warped']
|
||||
return any(kw in title_lower for kw in keywords)
|
||||
|
||||
def is_good_deal(price, title, min_discount=50):
|
||||
"""
|
||||
Determine if an item is a good deal
|
||||
@@ -89,6 +103,14 @@ def is_good_deal(price, title, min_discount=50):
|
||||
"""
|
||||
fmv = calculate_fmv(title)
|
||||
|
||||
# Adjust FMV based on condition keywords
|
||||
if has_restoration_keywords(title):
|
||||
# Restored items are worth more
|
||||
fmv = fmv * 1.5
|
||||
elif has_damage_keywords(title):
|
||||
# Damaged items are worth less
|
||||
fmv = fmv * 0.5
|
||||
|
||||
if price <= 0 or fmv <= 0:
|
||||
return False, 0, fmv
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"last_check": "2026-04-10T07:09:01.012534",
|
||||
"last_check": "2026-04-10T10:09:06.314350",
|
||||
"processed": 0,
|
||||
"upgraded": 0,
|
||||
"processed_ids": [
|
||||
|
||||
@@ -74,3 +74,5 @@ Error: All models failed (3): nvidia/qwen/qwen3.5-397b-a17b: session file locked
|
||||
[Thu Apr 9 09:01:35 EDT 2026] Completed with exit code: 0
|
||||
[Thu Apr 9 09:01:57 EDT 2026] Starting daily marketing content generation
|
||||
[Thu Apr 9 09:01:57 EDT 2026] Completed with exit code: 0
|
||||
[Fri Apr 10 09:00:20 EDT 2026] Starting daily marketing content generation
|
||||
[Fri Apr 10 09:00:20 EDT 2026] Completed with exit code: 0
|
||||
|
||||
@@ -2872,3 +2872,17 @@ No new leads found
|
||||
[Fri Apr 10 07:17:33 EDT 2026] Response size: 7791 bytes
|
||||
[Fri Apr 10 08:00:02 EDT 2026] ✓ hoaledgeriq.com/api/calc-submissions responding
|
||||
[Fri Apr 10 08:00:02 EDT 2026] Response size: 7791 bytes
|
||||
[Fri Apr 10 08:17:32 EDT 2026] ✓ hoaledgeriq.com/api/calc-submissions responding
|
||||
[Fri Apr 10 08:17:32 EDT 2026] Response size: 7791 bytes
|
||||
[Fri Apr 10 09:00:01 EDT 2026] ✓ hoaledgeriq.com/api/calc-submissions responding
|
||||
[Fri Apr 10 09:00:01 EDT 2026] Response size: 7791 bytes
|
||||
[Fri Apr 10 09:17:40 EDT 2026] ✓ hoaledgeriq.com/api/calc-submissions responding
|
||||
[Fri Apr 10 09:17:40 EDT 2026] Response size: 7791 bytes
|
||||
[Fri Apr 10 10:00:02 EDT 2026] ✓ hoaledgeriq.com/api/calc-submissions responding
|
||||
[Fri Apr 10 10:00:02 EDT 2026] Response size: 7791 bytes
|
||||
[Fri Apr 10 10:17:33 EDT 2026] ✓ hoaledgeriq.com/api/calc-submissions responding
|
||||
[Fri Apr 10 10:17:33 EDT 2026] Response size: 7791 bytes
|
||||
[Fri Apr 10 11:00:02 EDT 2026] ✓ hoaledgeriq.com/api/calc-submissions responding
|
||||
[Fri Apr 10 11:00:02 EDT 2026] Response size: 7791 bytes
|
||||
[Fri Apr 10 11:18:09 EDT 2026] ✓ hoaledgeriq.com/api/calc-submissions responding
|
||||
[Fri Apr 10 11:18:09 EDT 2026] Response size: 7791 bytes
|
||||
|
||||
@@ -2297,3 +2297,31 @@
|
||||
[2026-04-10T12:00:02Z] ROI Calc submissions response: 7791 bytes
|
||||
[2026-04-10T12:00:02Z] Processing calc submissions...
|
||||
[2026-04-10T12:00:02Z] Check complete. Next run at 2026-04-10T09:00:EDT
|
||||
[2026-04-10T12:17:31Z] Starting lead monitor check
|
||||
[2026-04-10T12:17:32Z] ROI Calc submissions response: 7791 bytes
|
||||
[2026-04-10T12:17:32Z] Processing calc submissions...
|
||||
[2026-04-10T12:17:32Z] Check complete. Next run at 2026-04-10T09:17:EDT
|
||||
[2026-04-10T13:00:00Z] Starting lead monitor check
|
||||
[2026-04-10T13:00:01Z] ROI Calc submissions response: 7791 bytes
|
||||
[2026-04-10T13:00:01Z] Processing calc submissions...
|
||||
[2026-04-10T13:00:01Z] Check complete. Next run at 2026-04-10T10:00:EDT
|
||||
[2026-04-10T13:17:39Z] Starting lead monitor check
|
||||
[2026-04-10T13:17:40Z] ROI Calc submissions response: 7791 bytes
|
||||
[2026-04-10T13:17:40Z] Processing calc submissions...
|
||||
[2026-04-10T13:17:40Z] Check complete. Next run at 2026-04-10T10:17:EDT
|
||||
[2026-04-10T14:00:01Z] Starting lead monitor check
|
||||
[2026-04-10T14:00:02Z] ROI Calc submissions response: 7791 bytes
|
||||
[2026-04-10T14:00:02Z] Processing calc submissions...
|
||||
[2026-04-10T14:00:02Z] Check complete. Next run at 2026-04-10T11:00:EDT
|
||||
[2026-04-10T14:17:32Z] Starting lead monitor check
|
||||
[2026-04-10T14:17:33Z] ROI Calc submissions response: 7791 bytes
|
||||
[2026-04-10T14:17:33Z] Processing calc submissions...
|
||||
[2026-04-10T14:17:33Z] Check complete. Next run at 2026-04-10T11:17:EDT
|
||||
[2026-04-10T15:00:01Z] Starting lead monitor check
|
||||
[2026-04-10T15:00:02Z] ROI Calc submissions response: 7791 bytes
|
||||
[2026-04-10T15:00:02Z] Processing calc submissions...
|
||||
[2026-04-10T15:00:02Z] Check complete. Next run at 2026-04-10T12:00:EDT
|
||||
[2026-04-10T15:18:07Z] Starting lead monitor check
|
||||
[2026-04-10T15:18:09Z] ROI Calc submissions response: 7791 bytes
|
||||
[2026-04-10T15:18:09Z] Processing calc submissions...
|
||||
[2026-04-10T15:18:09Z] Check complete. Next run at 2026-04-10T12:18:EDT
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"processed_leads": [],
|
||||
"processed_calc_ids": [1, 2, 3, 4],
|
||||
"last_check": "2026-04-10T12:00:02Z",
|
||||
"last_check": "2026-04-10T15:18:09Z",
|
||||
"status": "active",
|
||||
"notes": "Hourly monitoring enabled. Next check in 60 minutes."
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Self-Improving Heartbeat State
|
||||
last_heartbeat_started_at: 2026-04-10T11:04:00Z
|
||||
last_heartbeat_started_at: 2026-04-10T15:47:00Z
|
||||
last_reviewed_change_at: 2026-03-26T12:20:00Z
|
||||
last_heartbeat_result: HEARTBEAT_OK
|
||||
|
||||
## Last actions
|
||||
- 2026-04-10 11:04Z: Heartbeat check - no changes in self-improving files since last review
|
||||
- 2026-04-10 15:47Z: Heartbeat check - no changes in self-improving files since last review
|
||||
- Sales-lead agent: ✅ Cron executed at 04:17 AM, 3 leads detected (john@example.com, jane@example123.com, smith@example.com)
|
||||
- Marketing-content agent: ✅ Last run Apr 9 09:01 AM completed successfully. No new content since then.
|
||||
- Marketing-content agent: ✅ Today's 9:00 AM run completed successfully. No new content produced since last check.
|
||||
|
||||
Reference in New Issue
Block a user