All notable changes to Subasto (formerly Argentina Auction Radar) are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Website: subasto.com.ar
-
USDC Micropayments on Base - Credit system with volume packages
- $1 → 50 credits, $5 → 300 credits, $10 → 700 credits, $50 → 4000 credits
- On-chain verification via Base RPC
- Credit balance tracking per wallet
/api/v1/credits/buyand/api/v1/credits/balanceendpoints
-
Referral System - 10% commission on referred purchases
- Unique referral codes per user
- Leaderboard and stats tracking
/api/v1/referral/*endpoints
-
Hot Deals Scoring - 100-point algorithm for opportunity ranking
- Discount weight (40%), source reliability (20%), time urgency (15%)
- Category demand (15%), price bracket (10%)
data/hot_deals.jsonwith pre-scored opportunities
-
AI Opportunity Analysis - Claude Haiku integration
- Per-listing analysis for $0.005/request
- Market comparison, flip potential, risk assessment
/api/v1/analyzeendpoint
-
Smart Search - Natural language queries
- "cars under 10k near buenos aires"
- Category, price, location extraction
/api/v1/searchendpoint
-
Telegram Bot - Full-featured auction alerts
/start,/search,/alerts,/digestcommands- Daily/weekly digest delivery
- Price drop and new listing alerts
src/telegram/module
-
Email Digest System - Scheduled summaries
- Daily at 08:00, weekly on Mondays
- HTML templates with top opportunities
- GitHub Actions workflow for automation
-
Webhook Notifications - For external integrations
- Register webhook URLs for events
- New listings, price changes, ending soon
/api/v1/webhooks/*endpoints
- Interactive Map - Leaflet.js with OpenStreetMap
- No API key required
- Filter auctions by distance from user
- Geocoded auction locations
site/js/location.js
-
Bulk Export API - Multiple formats
- CSV export with all fields
- Excel export with formatting
- PDF export with styling
/api/v1/export/*endpoints
-
Historical Price Tracking - Price change monitoring
- Daily snapshots in
data/history/ - Price change detection and alerts
- Trend analysis over 90 days
- Daily snapshots in
-
PWA Support - Install as mobile app
- Service worker for offline access
- App manifest with icons
- Push notification ready
-
Multi-Language - i18n support
- Spanish (default), English, Portuguese
site/locales/*.jsontranslation files- Language switcher in header
-
Educational Guides - 7 comprehensive pages
- How judicial auctions work
- Costs and commissions explained
- Strategies for winning
- Post-auction checklist
- Province-specific information
-
Investment Calculator - ROI projection tool
- Input purchase price, renovation costs
- Estimate resale value and timeline
- Calculate ROI percentage
-
Profit Calculator Widget - Embeddable tool
- For external sites
site/widgets/calculator.html
-
Social Sharing - Share auctions easily
- Twitter/X, Facebook, WhatsApp, LinkedIn
- Copy link button
site/js/share.js
-
Analytics Dashboard - Usage statistics
- Source performance metrics
- Category distribution
- Price trends visualization
-
Rate Limiting - API protection
- Upstash Redis for distributed limiting
- Per-IP and per-wallet limits
- Abuse prevention system
-
API Protection - Security hardening
- Request logging
- CAPTCHA support for suspicious activity
- Anti-replay protection
- MercadoLibre Price Comparison - API integration rejected
- Real-Time Polling Updates - Not true real-time on static hosting
- 137 new files, ~60,000 lines of code
- TypeScript serverless functions on Vercel
- Python analysis scripts
- Comprehensive API documentation
- General Goods Category - New category capturing 45% of listings
- Furniture: desks, chairs, tables, cabinets
- Clothing & Textiles: all apparel, footwear, linens
- Appliances: kitchen, laundry, heating/cooling
- Electronics: TVs, computers, phones, printers
- Tools: hand tools, power tools
- Construction Materials: doors, windows, tiles, paint
-
IVA Calculation Fixed - Now 21% on base price (not commission)
- Judicial: Base + 3% comisión + 0.25% arancel + 21% IVA s/base
- Private: Base + 10% comisión + 21% IVA s/base
- Example: $100k base → $124,250 total (was $103,880)
-
Category Distribution Improved
general_goods: 45% (NEW)real_estate: 30%vehicles: 15%machinery: 6%other: 4% (was 50%!)
-
Entre Ríos Duplicates - Deduplicated by title+price
- Same KWID auction was appearing 13 times
- Now shows 1 unique listing per auction
-
Vehicle Detection - Added 50+ missing keywords
- Renault models: KWID, Captur, Clio, Duster, etc.
- Motorcycle brands: Corven, Motomel, Zanella, Bajaj, etc.
- Chevrolet models: Corsa, Classic, Agile, Meriva, etc.
- VW variants including common typo "wolkswagen"
-
Real Estate Detection - Added location patterns
- "vivienda", "dpto", "nuda prop", "derechos"
- Neighborhood indicators: "b°", "bº"
- Córdoba locations: Unquillo, Bella Vista, La Granja, etc.
- New
general_goods_keywordsarray with 150+ keywords - Category detection order: real_estate → vehicles → machinery → general_goods → other
- Frontend: green color scheme for general_goods category
- Dashboard card and filter button for general_goods
-
SEO & Agent Discovery
robots.txtwith AI crawler hintssitemap.xmlfor search engines.well-known/ai-plugin.jsonfor ChatGPT/Claude plugin discovery- Schema.org structured data (WebApplication)
- Enhanced meta tags with agent-friendly keywords
- OpenAPI spec updated with marketing descriptions
-
Marketing Content
- "How to Make Money" section in README
- Value proposition: "30-70% below market"
- Profit examples and strategies
- IVA clarification note
- Updated keywords: "cents on dollar", "cheap assets", "liquidation sales"
- OpenAPI descriptions focus on ROI and profit potential
- README header emphasizes value proposition
-
Pay-Per-Request API for AI Agents - Programmatic access with USDC micropayments on Base network
/api/v1/price- Free endpoint showing pricing and payment instructions/api/v1/premium- Curated premium picks (~12) - $0.01 USDC/api/v1/opportunities- Hot deals 40%+ discount (~70) - $0.02 USDC/api/v1/auctions- All 864+ listings - $0.05 USDC- On-chain payment verification via Base RPC
- Anti-replay protection (tx hashes can only be used once)
- OpenAPI 3.1 spec at
/api/v1/openapi.jsonfor agent discovery
-
API Section on Homepage - Interactive documentation at
/#api- Pricing cards for all endpoints
- Step-by-step payment flow
- Technical details (network, token, wallet)
- Example response preview
-
IVA & Fees on Auction Prices - Total cost now includes all fees
- IVA 21% calculated on commission
- Judicial: Base + 3% comisión + 0.25% arancel + IVA
- Private: Base + 10% comisión + IVA
- Breakdown shown in listing cards
- Vercel serverless functions in TypeScript
- Payment verification using viem library
- Volume-based pricing (smaller datasets cost less)
- USDC contract:
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913(Base) - Payment wallet:
0x29E007249b744892a1da17F4289f75cfC871d6Fe
- Adrián Mercado Lot Extraction - Individual lots now extracted from multi-lot auctions
- Parses embedded JSON data from auction pages
- Extracts lot title, description, price, and images
- Converts ARS prices to USD using blue dollar rate
- 171 new lots extracted across 10 auctions
- Domain Live - subasto.com.ar nameservers configured and active
- Total lots: 31 → 202 (+550%)
- Auctions with lots: 8 → 18
-
SEO & Social Media Optimization
- Open Graph meta tags for Facebook/LinkedIn sharing
- Twitter Card meta tags for Twitter sharing
- Meta description with Spanish keywords
- Canonical URL, robots directive, Spanish language (
lang="es")
-
Favicon & Branding
- SVG favicon with compass/radar design
- PNG favicons (32x32, 16x16, 180x180 apple-touch-icon)
- OG image (1200x630) for social sharing
- Theme color (#eab308 yellow)
-
Currency Selector in Header
- ARS/USD toggle moved from floating button to navigation bar
- Price range slider updates to show ARS values when selected
- All prices dynamically convert based on blue dollar rate
-
Mobile Navigation
- Hamburger menu for mobile devices
- Slide-down navigation menu
- Menu closes when link is clicked
-
Calendar Shows Closing Dates
- Auctions grouped by
ends_at(closing date) instead of start date - Past dates filtered out (only future auctions shown)
- Time display shows "Cierra: HH:MM" (Closes at)
- Auctions grouped by
-
Ended Auctions Filtered
- Server-side:
generate_site.pyskips auctions whereends_at < now - Client-side: JavaScript also filters expired auctions on load
- Listings reduced from 873 to 864
- Server-side:
-
Judicial Source Priority in Opportunities
- Judicial sources get +100 points in opportunity ranking
- Priority private sources get +40 points
- Same discount = judicial ranks higher
-
Mobile Performance
- Disabled hover scale/zoom effects on touch devices
- Uses
@media (hover: hover)for desktop-only effects - Eliminates scroll lag and jank on mobile
-
Torno Automático Pricing
- Added specific lathe types with accurate prices:
torno automatico: $1,500-6,000 (typical $3,500)torno revolver: $2,000-8,000 (typical $4,000)torno paralelo: $3,000-15,000 (typical $6,000)torno cnc: $15,000-80,000 (typical $35,000)
- Generic
tornoreduced to $3,000-40,000 (typical $8,000)
- Added specific lathe types with accurate prices:
-
GMT-3 Time Display
- Restored missing
gmt3-timeelement in header - Fixed JavaScript error from null element reference
- Restored missing
-
Category Detection Order - Real estate keywords now checked before machinery
- "TERRENO EN SECTOR INDUSTRIAL" now correctly categorized as
real_estate - "GRUPO ELECTROGENO HONDA" correctly categorized as
machinery - Removed generic "industrial" keyword to avoid false positives
- "TERRENO EN SECTOR INDUSTRIAL" now correctly categorized as
-
Banco Ciudad Currency - USD prices no longer misdetected as ARS
- Scraper now detects
U$Sprice format before checking payment terms - Site generation adds heuristic for real estate listings > $50k USD
- Scraper now detects
-
Agusti Logo Images - Filtered out branding images
home_agusti_subastas_X.pngandEmpresas/logos now excluded- Product images from
imagenes.agustisubastas.com.ar/dtsImages/Lotes/shown instead
-
Market Price Accuracy - More realistic pricing for specific equipment
- Small presses (20-ton): $3,000-8,000 typical instead of $15,000
- Portable Honda generators: $800-1,200 typical instead of $20,000
- Added specific entries for
prensa 20 ton,prensa de temple,prensa hidraulica
- New Name: Subasto (formerly Argentina Auction Radar)
- New Domain: subasto.com.ar
-
Lot-Level Data Architecture - Browse individual lots within auctions
- New
LotItemdataclass with full lot details - Banco Ciudad scraper extracts 31 lots across 8 auctions
- Flat
lots[]array in API for easy browsing lot_statsmetadata in listings.json
- New
-
AI Analysis Pipeline (optional, requires Anthropic API key)
scripts/analyze_lots.py- Batch analyze lots with Claude Haikusrc/analysis/lot_analyzer.py- Extract specs, market value, opportunity scoresrc/analysis/lot_filter.py- Filter lots worth analyzing (price range, category)
-
Currency Utilities
src/utils/currency.py- Blue dollar rate fetching from dolarapi.combase_price_usdfield on all listings for USD comparisonbase_price_arsfield on USD listings for ARS display
-
Source Ranking
- Judicial sources (CSJN, SCBA, Córdoba, Entre Ríos) ranked first (+500 points)
- Priority private sources (Banco Ciudad, Global Remates, Adrian Mercado) ranked second (+300 points)
source_typefield: "judicial" or "private" for frontend filtering
-
New Scrapers
- Córdoba Judicial (508 listings via REST API)
- Entre Ríos Judicial (13 listings)
- Agusti Subastas (106 listings with 43 opportunities)
- Total listings: 227 → 873 (+285%)
- Judicial listings now represent 71% of total (621/873)
- Banco Ciudad scraper enhanced with lot-level extraction
- New files:
scripts/explore_banco_ciudad.py- API discovery for BC endpointsscripts/analyze_lots.py- Batch AI analysis runnersrc/analysis/__init__.py,lot_filter.py,lot_analyzer.pysrc/utils/__init__.py,currency.py
- Modified
src/scrapers/base.pyto preserve lots inanalyze_opportunity() - Modified
scripts/generate_site.pyfor dual-view output (auctions + lots)
- Curated Premium Opportunities - Hand-researched high-value deals beyond automated scraping
- New
data/curated/premium_opportunities.jsonfor manually researched opportunities - Premium opportunity detection using parallel AI agent research
- Premium listings get +200 priority score, always appear in top 5
- New fields:
is_premium,premium_type,why_premium,estimated_value_usd - Top opportunities expanded from 3 to 5 to showcase premium content
- Parallel AI Agents - Multiple specialized agents search simultaneously:
- Industrial machinery auctions (CNC, presses, forklifts)
- Company liquidations and bankruptcies
- Agricultural equipment deals
- Vehicle fleet renewals
- Premium real estate opportunities
- Web Research - Agents search news, auction houses, government bulletins
- Market Analysis - Cross-reference auction prices with market values
- Curation - Best opportunities compiled into
premium_opportunities.json
| Type | Description |
|---|---|
factory_liquidation |
Complete factory closures with equipment |
heavy_equipment |
Cranes, bulldozers, excavators |
automation |
Robots, warehouse systems, CNC |
fleet_liquidation |
Corporate vehicle fleet renewals |
bankruptcy |
Court-ordered asset sales |
corporate_fleet |
Telecom, energy company vehicles |
real_estate_deal |
Properties 40%+ below market |
brand_acquisition |
Business brands + equipment |
government_surplus |
Provincial/municipal equipment |
- Premium opportunities loaded from
data/curated/directory - Discount estimates parsed from ranges (e.g., "45-55%" → 50%)
- Before-March detection for time-sensitive deals
- Premium count tracked in
listings.jsonmetadata
- Market prices now use real data - No more fake multipliers
- Market prices scraped from Autocosmos (vehicles) and ZonaProp (real estate)
- Discount/market value only shown when real comparable data exists
- If no market data found, comparison section is hidden (not fake estimates)
src/market/autocosmos.py- Vehicle price scrapersrc/market/zonaprop.py- Real estate price scrapersrc/market/price_manager.py- Manages price fetching and cachingdata/market_prices.json- Cached market prices
- Removed hardcoded
MARKET_MULTIPLIERSthat showed unrealistic discounts - Frontend now checks for
auction.market_databefore showing comparisons - "Best Deals" section only shows items with real market data
- Market price fetching runs during daily scrape at 00:00 GMT-3
- Best-effort fetching - scraper continues if external sites unavailable
- Price confidence scoring based on sample size and variance
- UnicornStudio animated background - Beautiful flowing yellow/gold glowing light effect
- Lenis smooth scroll - Professional smooth scrolling for anchor navigation
- ads.txt - Google AdSense publisher verification file
- Background uses UnicornStudio aura effect with
saturate-200 hue-rotate-180 - Warm yellow glow with gradient mask overlay
- Improved scroll behavior with GSAP ScrollTrigger integration
- SCBA dates now use "Inicio de inscripción" (registration start) instead of end date
- SCBA date extraction now fetches detail pages for 100% date coverage (90/90 listings)
- Dates include time component (e.g., "2026-02-03T09:00:00")
- UnicornStudio project:
FixNvEwvWwbu3QX9qC3F - Smooth anchor link scrolling with 80px navbar offset
- Opacity-70 with subtle gradient overlay for readability
- Date extraction for Global Remates (85% coverage)
- Date extraction for Adrian Mercado (28% coverage)
- Date extraction for SCBA scraper
- Calendar now displays 70+ auctions with dates across 21 unique dates
- Global Remates titles no longer show "Su Oferta" button text
- Title cleaning removes dates, "Incremento", and noise patterns
- Calendar uses both
ends_atandstarts_atfields
- Global Remates scraper title extraction (skip button text)
- Calendar date display to use
starts_atas fallback
- Video background from Pixabay (city/buildings theme)
- Banco Ciudad scraper improved title parsing
- Remove "Previous", "Next", date patterns from titles
- Interactive calendar with month/year navigation
- Clickable dates showing auction counts
- Selected date detail panel with auction list
- Spanish localization for calendar
- Quality-based ranking system for auctions
- Auctions with images ranked higher (+100 points)
- Price presence adds +50 points
- End date adds +30 points
- Description quality scoring
- De la Fuente scraper cleaned (removed rural.com.uy junk data)
- Filter generic "Remate #XXX" titles
- Corporate footer branding: Memola Medios S.A.S.
- Professional CUIT display format
- Complete README rewrite with technical documentation
- System architecture diagram
- Scraping methods documentation
- Local development guide
- MIT License file
- CSJN image extraction (skip ribbon.png, prioritize AuctionImages)
- SCBA scraper: Playwright for JS rendering (90 listings)
- Banco Ciudad scraper: Playwright for Angular (46 listings)
- Global Remates scraper: Correct URL patterns (33 listings)
- Total listings increased from 121 to 270
- Google Analytics 4 integration (gtag.js)
- Google AdSense script
- GitHub Actions workflow for daily scraping (00:00 GMT-3)
- Sitio de Tiendas scraper (ecommerce businesses)
- Solana donation wallet address
- Automated daily updates via cron job
- Cost breakdown with commission estimates
- Live countdown timers to auction end
- Total cost calculation (base + fees)
- Image extraction prioritizes product photos
- Skip logo/icon/avatar images
- Search functionality (title, description)
- Category filters (vehicles, real estate, machinery)
- Source filters
- Calendar view of auction dates
- Price comparison indicators
- GMT-3 timezone display
- Manual update button
- Scrollable listing sections
- Simplified live auction feed
- Vercel deployment configuration
- Initial project structure
- Base scraper class with async HTTP client
- AuctionListing data model
- Scrapers for 7 sources:
- CSJN (Corte Suprema)
- SCBA (Buenos Aires Province)
- Adrian Mercado
- Banco Ciudad
- Global Remates
- BidBit
- JSON storage system
- Static site generator
- Basic HTML dashboard with Tailwind CSS
| Version | Date | Highlights |
|---|---|---|
| 1.8.0 | 2026-02-22 | Value-first release: USDC credits, Telegram bot, maps, PWA, i18n, AI analysis, 137 new files |
| 1.7.0 | 2026-02-22 | General goods category (45%), IVA fix (21% on base), Entre Ríos dedup, 150+ new keywords |
| 1.6.1 | 2026-02-21 | SEO audit, agent discovery, marketing content, profit strategies |
| 1.6.0 | 2026-02-21 | USDC API for agents, IVA/fees on prices, API docs on homepage |
| 1.5.1 | 2026-02-21 | Adrián Mercado lot extraction (171 lots), domain live at subasto.com.ar |
| 1.5.0 | 2026-02-21 | SEO/social meta tags, currency selector in header, mobile optimization, calendar shows closing dates |
| 1.4.1 | 2026-02-21 | Category detection fixes, market price accuracy, Agusti logo filtering |
| 1.4.0 | 2026-02-21 | Rebrand to Subasto, lot-level architecture, 873 listings, AI analysis pipeline |
| 1.3.0 | 2026-02-21 | Curated premium opportunities via AI agent research |
| 1.2.0 | 2026-02-21 | Real market prices from Autocosmos/ZonaProp, no fake estimates |
| 1.1.0 | 2026-02-21 | UnicornStudio animated background, smooth scroll, SCBA 100% dates |
| 1.0.0 | 2026-02-21 | Stable release, date extraction, 227 listings |
| 0.12.0 | 2026-02-21 | Fix Global Remates titles |
| 0.11.0 | 2026-02-21 | Video background |
| 0.10.0 | 2026-02-21 | Interactive calendar |
| 0.9.0 | 2026-02-21 | Quality ranking |
| 0.8.0 | 2026-02-21 | Corporate branding |
| 0.7.0 | 2026-02-21 | Documentation |
| 0.6.0 | 2026-02-21 | Fix scrapers (270 listings) |
| 0.5.0 | 2026-02-20 | Analytics |
| 0.4.0 | 2026-02-20 | GitHub Actions |
| 0.3.0 | 2026-02-20 | Cost breakdown |
| 0.2.0 | 2026-02-20 | Search & filters |
| 0.1.0 | 2026-02-20 | Vercel deploy |
| 0.0.0 | 2026-02-20 | Initial commit |