feat(ai): AI pre-market rent recommendation from regional comparables, supply & demand
- IAIService.recommendPreMarketRent: recommended price + range, verdict (UNDERPRICED/FAIR/AMBITIOUS), drivers, rationale, confidence
- MockAIService: deterministic recommendation from locationIntelligence — regional comp median, vacancy (supply), demand strength + days-on-market, rent trend (forward for pre-market)
- BackendAIService: LLM prompt with market context + mock fallback
- usePreMarketRentRecommendation hook; PreMarketPriceAdvisor component shows the recommendation per released unit with verdict ("zu günstig" when underpriced) + adjustable expected price + "Empfehlung übernehmen"
- Replaces the simple indexed suggestion with a market-driven AI recommendation that flags underpricing
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -176,6 +176,27 @@ export interface FitOutAdvice {
|
||||
estimatedNetInvestment: string
|
||||
}
|
||||
|
||||
// ── Pre-market rent recommendation ─────────────────────────────────────────────
|
||||
|
||||
export interface PreMarketRentInput {
|
||||
city: string
|
||||
assetType: string
|
||||
areaSqm: number
|
||||
currentRentPerSqm: number
|
||||
availableFrom?: string // ISO — Pre-Market liegt in der Zukunft
|
||||
}
|
||||
|
||||
export interface PreMarketRentRecommendation {
|
||||
recommendedPerSqm: number
|
||||
rangeMinPerSqm: number
|
||||
rangeMaxPerSqm: number
|
||||
verdict: 'UNDERPRICED' | 'FAIR' | 'AMBITIOUS' // Bewertung des heutigen Preises
|
||||
deltaVsCurrentPct: number // Empfehlung vs. heutiger Preis
|
||||
drivers: string[] // Vergleichsmiete, Angebot, Nachfrage, Trend …
|
||||
rationale: string
|
||||
confidence: 'LOW' | 'MEDIUM' | 'HIGH'
|
||||
}
|
||||
|
||||
// ── Legacy types (kept for backward compatibility) ────────────────────────────
|
||||
|
||||
export interface CriteriaExtractionResult {
|
||||
@@ -220,6 +241,9 @@ export interface IAIService {
|
||||
// Fit-out investment advice (demand side)
|
||||
generateFitOutAdvice(input: FitOutAdviceInput): Promise<AIResponse<FitOutAdvice>>
|
||||
|
||||
// Pre-market rent recommendation (supply side) — based on regional comparables, supply & demand
|
||||
recommendPreMarketRent(input: PreMarketRentInput): Promise<AIResponse<PreMarketRentRecommendation>>
|
||||
|
||||
// Legacy methods
|
||||
extractCriteria(input: string): Promise<AIResponse<CriteriaExtractionResult>>
|
||||
generateFollowUp(partialNeed: Partial<CreateNeedInput>): Promise<AIResponse<string[]>>
|
||||
|
||||
Reference in New Issue
Block a user