Transform your Idealista property search with AI-powered analysis, intelligent scoring, and professional property management.
- π― Overview
- β¨ Features
- ποΈ Architecture
- π Installation
- π Usage
- π§ Development
- π API Reference
- π€ Contributing
Idea-lista is a sophisticated Chrome extension that revolutionizes property search on Idealista.com. It combines advanced data extraction, intelligent scoring algorithms, and comprehensive property management to help you find your perfect home efficiently.
- β‘ Real-time Analysis: Instant property evaluation as you browse
- π§ Intelligent Scoring: Professional algorithm (0-100) based on real estate criteria
- πΎ Smart Management: Save, compare, and organize properties effortlessly
- π Data Export: Export to TSV/Excel for further analysis
- π¨ Modern UI: Beautiful, responsive interface with dark/light themes
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Data Extraction Pipeline β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β 1. Property Details β 2. Amenities β 3. Location β
β β’ Price (β¬/month) β β’ Heating β β’ GPS β
β β’ Size (mΒ²) β β’ Elevator β β’ Floor β
β β’ Rooms/Bathrooms β β’ Furnished β β’ Area β
β β’ Energy Rating β β’ Parking β β’ URL β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Scoring Algorithm β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β π’ Excellent (80-100) β Outstanding properties - Act fast! β
β π΅ Good (60-79) β Very good options - Strong choice β
β π‘ Average (40-59) β Decent properties - Consider β
β π΄ Poor (0-39) β Below average - Skip β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
**Price Priority**: When price is marked as "Essential", it receives a 50% weight premium
to better reflect its critical role in property comparison decisions.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Property Manager β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β π Collection View β π Best Analysis β π Export β
β β’ Score-sorted β β’ Detailed β β’ TSV β
β β’ Quick actions β β’ Advantages β β’ Excel β
β β’ Visual filters β β’ Comparisons β β’ Backup β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Responsive Design: Works on all screen sizes
- Theme Support: Dark/light mode with system detection
- Real-time Updates: Instant feedback on all actions
- Accessibility: Keyboard navigation and screen reader support
- Duplicate Prevention: Automatic detection and handling
- Smart Validation: Ensures data integrity
- Persistent Storage: Chrome storage with sync support
- Export Formats: TSV, JSON, and Excel-ready formats
The Idea-lista system uses a sophisticated architecture with content scripts for data extraction, background scripts for scoring and storage, and a popup interface for property management.
The scoring algorithm processes property data through feature extraction, weight application, and range validation to produce a final score from 0-100.
src/
βββ components/
β βββ ui/ # Reusable UI components
β β βββ button.tsx # Button component
β β βββ card.tsx # Card component
β β βββ dialog.tsx # Modal dialogs
β β βββ input.tsx # Input fields
β β βββ select.tsx # Dropdown selects
β β βββ tabs.tsx # Tab navigation
β β βββ ...
β βββ PropertyCard.tsx # Property display card
β βββ SettingsView.tsx # Configuration interface
β βββ StatisticsModal.tsx # Analytics modal
β βββ VisitManagementView.tsx # Visit tracking
β βββ ...
βββ services/
β βββ scoring-service.ts # Scoring algorithm
βββ store/
β βββ property-store.ts # State management
βββ lib/
β βββ utils.ts # Utility functions
β βββ theme.ts # Theme configuration
βββ App.tsx # Main application
- Chrome browser (version 88+)
- Node.js (for development)
- Git (for cloning)
git clone https://github.com/your-username/idea-lista.git
cd idea-listanpm installnpm run build:extension- Open Chrome and navigate to
chrome://extensions/ - Enable "Developer mode" (top right toggle)
- Click "Load unpacked"
- Select the project directory
- Verify the extension appears in your toolbar
npm run dev:extensionnpm run type-checknpm run lintThe complete workflow from browsing properties to making informed decisions.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Property Analysis β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β π Beautiful 2-bedroom apartment in Madrid β
β π Location: Salamanca, Madrid β
β π° Price: β¬1,200/month β
β π Size: 75mΒ² β
β ποΈ Rooms: 2 | πΏ Bathrooms: 1 β
β π Score: 85/100 (Excellent) β
β β
β [β Add to Collection] [π View Analysis] [π Open Link] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Property Manager β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β π Statistics: 12 properties | Avg Score: 72 β
β β
β π Best Property: 85/100 - β¬1,200/month β
β π΅ Good Options: 3 properties (70-79) β
β π‘ Average: 5 properties (40-69) β
β π΄ Below Average: 3 properties (0-39) β
β β
β [π Export Data] [βοΈ Settings] [ποΈ Clear All] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Auto-Scroll to Current Property: When you open the popup while on a property page, it automatically scrolls to and highlights that property in your collection
- Smooth Scrolling: Seamless navigation with smooth scroll animations
- Visual Highlighting: The current property gets a subtle highlight effect for easy identification
- Quick Access: Instantly find the property you're currently viewing in your saved collection
- Click "π View Analysis" to see detailed scoring breakdown
- Compare properties side-by-side
- Understand why a property scored high/low
- Export to TSV format for Excel analysis
- Include all extracted data points
- Sort by score, price, or location
- Customize scoring weights
- Set property type preferences
- Configure export options
Score = Ξ£(Feature_Weight Γ Feature_Score) / Max_Possible_Score Γ 100
Where:
- Feature_Weight: 0 (Irrelevant), 1 (Valuable), 2 (Essential)
- Price_Weight: 3 when Essential (50% premium) to reflect decision-making priority
- Feature_Score: 0-1 based on how well it matches preferences
- Max_Possible_Score: Sum of all relevant feature weights (including price premium)
| Factor | Weight | Description |
|---|---|---|
| Price | Essential (3)* | Lower prices score higher within range |
| Size | Essential (2) | Bigger properties score higher |
| Rooms | Essential (2) | More rooms score higher |
| Bathrooms | Essential (2) | More bathrooms score higher |
| Heating | Essential (2) | Critical for comfort |
| Elevator | Essential (2) | Important for accessibility |
| Furnished | Valuable (1) | Adds convenience |
| Parking | Valuable (1) | Important for cars |
*Price gets a 50% premium when marked as essential (2 Γ 1.5 = 3) to reflect its critical role in decision-making
idea-lista/
βββ src/ # Source code
β βββ components/ # React components
β βββ services/ # Business logic
β βββ store/ # State management
β βββ lib/ # Utilities
βββ content.js # Content script
βββ background.js # Background script
βββ popup.html # Popup interface
βββ manifest.json # Extension manifest
βββ package.json # Dependencies
βββ README.md # Documentation
- React 18: Modern UI framework
- TypeScript: Type-safe development
- Tailwind CSS: Utility-first styling
- shadcn/ui: High-quality components
- Zustand: Lightweight state management
- Manifest V3: Latest Chrome extension API
- Content Scripts: Page interaction
- Background Scripts: Data processing
- Chrome Storage: Persistent data
# Development
npm run dev # Start development server
npm run dev:extension # Build extension for development
# Building
npm run build # Build for production
npm run build:extension # Build extension
npm run verify:extension # Verify build
# Quality
npm run lint # Run ESLint
npm run type-check # TypeScript checking- Strict mode enabled
- No
anytypes - Proper interface definitions
- Generic type usage
- Functional components
- Hooks for state management
- Proper prop typing
- Component composition
- Tailwind utility classes
- Component-scoped styles
- Responsive design
- Dark/light theme support
interface PropertyStore {
// Properties
properties: Property[]
currentConfigs: PropertyTypeConfigs
// Actions
addProperty: (property: Property) => void
removeProperty: (id: string) => void
updateProperty: (id: string, updates: Partial<Property>) => void
clearProperties: () => void
importProperties: (properties: Property[]) => void
exportProperties: () => Property[]
}interface Property {
id: string
title: string
price: number
location: string
size?: number
squareMeters?: number
rooms?: number
bathrooms?: number
floor?: string
heating?: boolean
elevator?: boolean
furnished?: boolean
parking?: boolean
score?: number
url: string
imageUrl?: string
createdAt: Date
updatedAt: Date
}class ScoringService {
calculateScore(property: Property): number
updateConfig(type: PropertyType, config: ScoringConfig): void
getDefaultConfigs(): PropertyTypeConfigs
}interface ScoringConfig {
weights: {
price: number
size: number
rooms: number
bathrooms: number
heating: number
elevator: number
// ... other factors
}
ranges: {
priceRange: { min: number, max: number }
sizeRange: { min: number, max: number }
roomRange: { min: number, max: number }
bathroomRange: { min: number, max: number }
}
}interface PropertyInfo {
title: string
price: number
location: string
size?: number
rooms?: number
bathrooms?: number
// ... other extracted data
}
function extractPropertyInfo(): PropertyInfofunction injectPropertyAnalyzer(info: PropertyInfo): void
function updateAnalyzerUI(score: number): void- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes
- Run tests and linting
npm run lint npm run type-check
- Commit your changes
git commit -m 'Add amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- Follow TypeScript best practices
- Use meaningful variable names
- Add JSDoc comments for functions
- Keep functions small and focused
- Write unit tests for new features
- Test edge cases and error handling
- Ensure cross-browser compatibility
- Update README for new features
- Add inline code comments
- Document API changes
When reporting issues, please include:
- Browser version and OS
- Steps to reproduce
- Expected vs actual behavior
- Console error messages
- Screenshots if applicable
This project is licensed under the MIT License - see the LICENSE file for details.
- Idealista.com for providing the property data
- Chrome Extension API for the platform
- React and TypeScript communities
- shadcn/ui for the beautiful components
Made with β€οΈ for property hunters everywhere
Transform your property search with professional-grade analysis and management tools! π β¨