Commit Graph

127 Commits

Author SHA1 Message Date
Nitzan Pomerantz 11512045dd Extract magic numbers into named constants
Define module-level constants for market activity, volatility, and liquidity
thresholds. This improves code readability and makes threshold values easier
to maintain and adjust in the future.

Constants added:
- ACTIVITY_VERY_HIGH_THRESHOLD, ACTIVITY_HIGH_THRESHOLD, etc.
- VOLATILITY_VERY_VOLATILE_THRESHOLD, VOLATILITY_VOLATILE_THRESHOLD, etc.
- LIQUIDITY_VERY_HIGH_THRESHOLD, LIQUIDITY_HIGH_THRESHOLD, etc.

Addresses PR #2 review comments on lines 1084 and 1224.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 19:22:03 +03:00
Nitzan Pomerantz 2968711307 Complete Phase 2: Market Analysis, Filtering & Documentation
This commit implements all Phase 2 functionality with architectural
improvements over the original plan.

## Phase 2.1: Property Valuation Data 
- filter_deals_by_criteria() with comprehensive filtering
- calculate_deal_statistics() for statistical aggregations
- _extract_floor_number() for Hebrew floor parsing
- _calculate_std_dev() helper function
- MCP tools: get_valuation_comparables, get_deal_statistics

## Phase 2.2: Market Activity & Investment Analysis 
- calculate_market_activity_score() - deal frequency & velocity
  * Activity score (0-100), trend analysis, monthly distribution
  * Classifies markets: very_high, high, moderate, low, very_low
- analyze_investment_potential() - price trends & stability
  * Price appreciation rate via linear regression
  * Volatility score using coefficient of variation
  * Investment score combining appreciation & stability
- get_market_liquidity() - turnover & liquidity metrics
  * Quarterly/monthly breakdowns, velocity scoring
  * Trend direction, most active periods
- MCP tool: get_market_activity_metrics (unified tool)

## Phase 2.3: Enhanced Deal Filtering 
- Property type, room count, price, area, floor filtering
- All integrated into existing tools
- Hebrew floor number parsing support

## Testing 
- Added 15 comprehensive unit tests (all passing)
- Coverage: market activity, investment analysis, liquidity, filtering
- Edge cases: empty data, invalid dates, insufficient data

## Documentation 
- Created CLAUDE.md (~250 lines) - AI agent guidance
  * Development commands, architecture overview
  * Product vision from USECASES.md
  * Available tools with status indicators
- Updated TASKS.md - Phase 2 marked 100% complete

## Architectural Improvements
- 1 unified MCP tool instead of 6 separate tools (simpler API)
- 1 flexible filtering function instead of 3 (more composable)
- All logic in govmap.py (no new files, better cohesion)
- ~955 lines added with comprehensive documentation

## Design Principles Followed
 MCP provides data, LLM provides intelligence
 No predictions - only statistical calculations
 Comprehensive error handling & input validation
 Well-documented with detailed docstrings

Phase 2 Progress: 100% complete (60% overall project completion)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 18:51:50 +03:00
Nitzan Pomerantz 53e730ea66 Merge pull request #1 from nitzpo/comprehensive-plan-phase-1
Comprehensive-plan-phase-1
2025-10-23 00:12:13 +03:00
Nitzan Pomerantz d9e42bea17 Some more small fixes 2025-10-23 00:11:41 +03:00
Nitzan Pomerantz 49bfc7b940 CR Fixes and update markdownlint 2025-10-22 23:59:07 +03:00
Nitzan Pomerantz 7780d89bb4 Update tasks and plan 2025-10-19 01:02:36 +03:00
Nitzan Pomerantz 85f52a8108 Main updates of Phase 1 2025-10-19 00:58:46 +03:00
Nitzan Pomerantz b844760147 Remove old file 2025-10-19 00:58:27 +03:00
Nitzan Pomerantz e0dacbc5b9 Fix requirements 2025-10-19 00:58:20 +03:00
Nitzan Pomerantz c71f950eb7 Added documentation 2025-10-19 00:58:11 +03:00
Nitzan Pomerantz ffd7c84aa7 Added plan 2025-10-19 00:57:50 +03:00
Nitzan Pomerantz fb1f276a80 Add amenities to usecases 2025-10-19 00:02:15 +03:00
Nitzan Pomerantz 055b2bcc2a Add markdownlint 2025-10-19 00:02:06 +03:00
Nitzan Pomerantz 9ee5372b1c Another iteration 2025-07-14 14:26:53 +03:00
Nitzan Pomerantz 650048445f Optimization because of long running times 2025-07-14 13:40:36 +03:00
Nitzan Pomerantz 80dfaa28f0 Improving parameters 2025-07-14 13:12:44 +03:00
Nitzan Pomerantz eb4bf3894c Use cases guide 2025-07-13 01:07:54 +03:00
Nitzan Pomerantz 4f3b74ceaf Refactor fastmcp 2025-07-13 01:05:16 +03:00
Nitzan Pomerantz dd6d78b48b Refactor govmap 2025-07-13 01:03:15 +03:00
Nitzan Pomerantz a1fa75a878 mcp clean up 2025-07-13 00:56:47 +03:00
Nitzan Pomerantz d8c18cb2f7 mcp second iteration 2025-07-13 00:50:51 +03:00
Nitzan Pomerantz 76bdc323df MCP server first iteration 2025-07-12 22:11:12 +03:00
Nitzan Pomerantz 1f1f4fc0ec Added tests 2025-07-12 17:48:50 +03:00
Nitzan Pomerantz f422aeaa79 First iteration 2025-07-12 17:45:54 +03:00
Nitzan Pomerantz f3d3a8efd4 Update gitignore for python 2025-07-12 17:44:48 +03:00
Nitzan Pomerantz f5ba5bd5c1 Commit start prompt that was used by gemini to generate start2 prompt for claude 4 2025-07-12 17:43:43 +03:00
Nitzan Pomerantz f199defdf7 Initial commit 2025-07-12 12:27:22 +03:00