This website requires JavaScript.
c972392b78
feat: OpenRouter-ready AI service — all 11 methods implemented
Benjamin Sutter
2026-05-24 12:43:51 +02:00
723f553939
refactor: move PipelineItems from Zustand to Provider→Service→React Query
Benjamin Sutter
2026-05-24 12:32:57 +02:00
0582031930
test: Vitest test infrastructure + 52 unit tests for matching engine
Benjamin Sutter
2026-05-24 02:33:12 +02:00
713ef3ec08
docs: engineering governance — CLAUDE.md, ARCHITECTURE.md, CODE_REVIEW_CHECKLIST.md
Benjamin Sutter
2026-05-24 02:10:30 +02:00
ad84fe8289
fix: rename compareUtils.ts → compareUtils.tsx (contains JSX)
Benjamin Sutter
2026-05-24 01:54:46 +02:00
ce67da73b3
perf: memoize expensive list computations + memo on grid/list items
Benjamin Sutter
2026-05-24 01:53:03 +02:00
86bdf142b4
refactor: consolidate duplicated UI score/color/badge logic into lib/
Benjamin Sutter
2026-05-24 01:47:08 +02:00
5d53f35dea
refactor(state): clean layoutStore, add selectors, centralise STALE constants
Benjamin Sutter
2026-05-24 01:30:44 +02:00
eedee83b49
refactor: extract SignalSourcesSection from FutureAvailabilityContextPanel (314 → 227 lines)
Benjamin Sutter
2026-05-24 01:18:49 +02:00
01c0f8b06f
refactor: extract helpers from 3 match-detail/match-card components
Benjamin Sutter
2026-05-24 01:16:32 +02:00
c6055f0611
refactor: extract CompareTableBody from Compare.tsx (441 → 147 lines)
Benjamin Sutter
2026-05-24 01:13:59 +02:00
a3fc213916
refactor: extract helpers from ReminderDetailDrawer + OfferCreationWizard
Benjamin Sutter
2026-05-24 01:10:31 +02:00
ee71ecc881
refactor: extract sub-components from PropertyMarketSignalsTab + NegotiationInsightsPanel
Benjamin Sutter
2026-05-24 01:08:45 +02:00
f0988b7250
refactor: extract constants + mapper from NewListing.tsx (526 → 442 lines)
Benjamin Sutter
2026-05-24 01:05:57 +02:00
0bacd188d6
refactor: split AppShell, match-detail panels, extract useCompareData
Benjamin Sutter
2026-05-24 01:00:38 +02:00
ae82d0e6a0
refactor: split PropertyDetail, Anfragen, AISearch god components
Benjamin Sutter
2026-05-24 00:55:55 +02:00
4d4ea6d2ff
refactor: split PropertyDetailView (998→192 lines) and MatchDetail (464→236 lines)
Benjamin Sutter
2026-05-24 00:48:13 +02:00
6515acb7f0
feat: unified error handling + AI service modularisation
Benjamin Sutter
2026-05-24 00:32:01 +02:00
efc72b720e
fix: P0 stabilisation — score modifiers, logout cache clear, provider isolation, mutation error feedback
Benjamin Sutter
2026-05-24 00:13:14 +02:00
22c195b4a5
refactor: split large page components + taxonomy/HeatBadge/FutureAvailability improvements
Benjamin Sutter
2026-05-23 23:36:03 +02:00
72e4f08900
fix: Compare→Pipeline flow, pipeline card navigation, remove floating AI button
Benjamin Sutter
2026-05-22 22:11:29 +02:00
6a6ff7f2e2
feat: Pipeline↔Anfragen integration + Compare→Pipeline + KI stage detection
Benjamin Sutter
2026-05-22 21:42:21 +02:00
a002597f5b
feat: drag & drop for Pipeline Kanban columns (@dnd-kit)
Benjamin Sutter
2026-05-22 21:34:00 +02:00
de00f758e9
feat: merge Merkliste into Pipeline (SAVED stage) + Anfragen chat page
Benjamin Sutter
2026-05-22 21:31:30 +02:00
76f9927c7c
fix: UX polish — score formula, role badges, compare view, page titles
Benjamin Sutter
2026-05-22 21:05:36 +02:00
9f7062d137
feat: UC-A/B/C demo — 50 mock properties, district scoring, gold/silver cards visible
Benjamin Sutter
2026-05-22 20:31:30 +02:00
98b4a1146b
feat: soft factor enrichment from Swiss location intelligence
Benjamin Sutter
2026-05-22 11:04:51 +02:00
f82194ea7f
fix: always show all 9 soft factors in score breakdown
Benjamin Sutter
2026-05-22 10:21:35 +02:00
030d861ed5
fix: restore WEIGHTING_KEYS import in WeightingEditor
Benjamin Sutter
2026-05-22 10:16:36 +02:00
0de48a14d7
feat: split WeightingEditor into Harte / Weiche Kriterien sections
Benjamin Sutter
2026-05-22 10:13:46 +02:00
9f877614c1
fix: soft factor scores use 0-1 scale matching the scoring engine
Benjamin Sutter
2026-05-22 10:11:18 +02:00
955da564a0
fix: invalidate properties cache after listing creation
Benjamin Sutter
2026-05-21 21:22:34 +02:00
c9324e9cc8
feat: expand NewListing with AI, soft factors, hard facts, images + MyListings manager
Benjamin Sutter
2026-05-21 21:19:45 +02:00
0dac528f98
fix: remove Quelle & Herkunft panel from demand MatchDetail
Benjamin Sutter
2026-05-21 21:12:33 +02:00
67d3d06a53
feat: Inserat erstellen — direct listing flow for units and standalone
Benjamin Sutter
2026-05-21 21:10:41 +02:00
531c88cfb6
fix: weighting sliders in 2-column grid layout
Benjamin Sutter
2026-05-21 20:59:09 +02:00
ba910806d6
feat: expose all 13 scoring criteria as weighting sliders
Benjamin Sutter
2026-05-21 20:58:01 +02:00
113274cfc7
fix: remove need selector chip strip from results page
Benjamin Sutter
2026-05-21 20:51:59 +02:00
d8cce96bd8
fix: hide 'Neue Suche' entries from need selector chips
Benjamin Sutter
2026-05-21 20:50:22 +02:00
11ecd5d900
fix: need selector on results page + retail budget parsing
Benjamin Sutter
2026-05-21 20:47:14 +02:00
27c53f3af1
feat: score transparency on all cards + budget parser fix
Benjamin Sutter
2026-05-21 20:41:46 +02:00
34a4dcfb29
feat: unit-first architecture — floor + street as primary card title
Benjamin Sutter
2026-05-21 11:19:13 +02:00
a39c6ed200
fix: property-level scoring for multi-unit properties + multi-unit chip
Benjamin Sutter
2026-05-21 00:30:03 +02:00
e2ec1b1dc9
feat: add 'Zur Einheit →' CTA on all VERIFIED_PORTFOLIO cards
Benjamin Sutter
2026-05-21 00:17:20 +02:00
69b96f293a
refactor: remove Schattenmarkt from all user-visible UI strings
Benjamin Sutter
2026-05-21 00:11:35 +02:00
99e99d66c5
feat: unit-level matching architecture — match against Einheiten, not Objekte
Benjamin Sutter
2026-05-20 20:03:54 +02:00
d902feb6c0
feat: Objekt→Einheit architecture — unit-level pre-market, property detail page, click-through from cards
Benjamin Sutter
2026-05-20 19:47:59 +02:00
66aabde1dc
fix: synthetic scoring — budget unit mismatch + PRE-MARKET VERIFIED in demand feed
Benjamin Sutter
2026-05-20 19:29:06 +02:00
dd2eb9be3f
feat: add prop-037 + match-063/064 — PRE-MARKET VERIFIED for Bern Retail search
Benjamin Sutter
2026-05-20 18:18:12 +02:00
d2d2f5f1bb
feat: enable Pre-Market Matching on 7 more portfolio properties — 10 active signals total
Benjamin Sutter
2026-05-20 17:59:07 +02:00
8f7372157c
feat: Pre-Market Intelligence UX rework — institutional positioning
Benjamin Sutter
2026-05-20 17:50:37 +02:00
67c0701bfe
fix: remove EXPANSION fake properties and their matches from mock data
Benjamin Sutter
2026-05-20 16:10:23 +02:00
0dc04a14c5
fix: MarketLeads zeigt 0 Leads — Provider liest live aus Mock-Daten
Benjamin Sutter
2026-05-20 16:02:32 +02:00
b0ad6643ff
feat: Future Availability — Logiktrennung Supply/Demand + Markt-Leads
Benjamin Sutter
2026-05-20 15:56:29 +02:00
5fe15bac62
feat: Future Availability Intelligence — rebrand & card redesign
Benjamin Sutter
2026-05-20 13:06:16 +02:00
d5a4862a28
feat: redesign Schattenmarkt card & detail view for explainability
Benjamin Sutter
2026-05-20 12:39:12 +02:00
9f391d17cb
feat: Reminder Manager + Schattenmarkt-Freigabe + mock data overhaul
Benjamin Sutter
2026-05-20 11:52:24 +02:00
0663757cde
fix: Schattenmarkt bypass source filter + bump external/maison match scores for all tiers
Benjamin Sutter
2026-05-19 23:10:41 +02:00
3756675b6f
feat: add Maison Work source type, rename ExternalMarket to Direktinserat, hide own portfolio from demand search by default
Benjamin Sutter
2026-05-19 23:02:05 +02:00
a521155bb2
feat: mix Schattenmarkt into result tiers, add filter toggle
Benjamin Sutter
2026-05-19 22:36:27 +02:00
b6f65f4763
feat: hide workspace switcher when user has only 1 workspace
Benjamin Sutter
2026-05-19 20:41:40 +02:00
86051c6f01
feat: workspace tabs as side-by-side segmented control in sidebar
Benjamin Sutter
2026-05-19 20:40:12 +02:00
315733a423
feat: reduce demo role switcher to Verwaltung + Bürosuche only
Benjamin Sutter
2026-05-19 20:37:20 +02:00
a36a827564
feat: reduce demo login to Verwaltung + Bürosuche only
Benjamin Sutter
2026-05-19 20:35:55 +02:00
d15a13e485
feat: remove Administration workspace — keep only Verwaltung + Suche
Benjamin Sutter
2026-05-19 20:32:41 +02:00
d22e72f945
feat: move Markt Intelligence from Administration to Verwaltung (under Datenpflege)
Benjamin Sutter
2026-05-19 20:28:36 +02:00
f0e58f5f7a
feat: unit-level matching — each floor lettable independently or as bundle
Benjamin Sutter
2026-05-19 20:24:17 +02:00
7cda66f98a
fix: convert strings with Swiss apostrophes (3'000, 2'500, 1'500) to template literals
Benjamin Sutter
2026-05-19 20:09:54 +02:00
18a7f146b0
fix: replace smart quotes with ASCII quotes in mock data files
Benjamin Sutter
2026-05-19 20:01:29 +02:00
13553f60a0
fix: close spec gaps — delete InquiryStatusBadge, extend match reasons, full field keys
Benjamin Sutter
2026-05-19 19:57:16 +02:00
b4d398270f
feat: Anfragencenter Parts A–E — read/unread, prep wizard, offer flow, report preview
Benjamin Sutter
2026-05-19 19:20:13 +02:00
279b55d70e
feat: Bericht erstellen shows full PDF preview before download
Benjamin Sutter
2026-05-19 16:17:00 +02:00
7800d127fe
fix: BerichtDialog, images, and add property number + floor/unit structure
Benjamin Sutter
2026-05-19 16:14:22 +02:00
0651333030
feat: clickable NeedMatchCard in Matchability tab navigates to Anfragencenter
Benjamin Sutter
2026-05-19 16:05:18 +02:00
18f4b2b37a
feat: navigate from Marktsignale tab to Anfragencenter latente Anfragen
Benjamin Sutter
2026-05-19 16:00:00 +02:00
c0f50344e0
fix: replace toast with mock PDF generation dialog in Marktsignale tab
Benjamin Sutter
2026-05-19 15:53:15 +02:00
920ce8eb09
feat: Verwaltungszugang refactor — lease data, 3-tab detail, market signals
Benjamin Sutter
2026-05-19 15:43:52 +02:00
52a2693cad
fix: move map from header into Übersicht tab content
Benjamin Sutter
2026-05-18 22:18:39 +02:00
73ff758f03
feat: add 'Produkttour starten' to user menu
Benjamin Sutter
2026-05-18 22:14:06 +02:00
14badd1ca8
feat: all 4 UX priorities — wizard, examples, onboarding, pipeline
Benjamin Sutter
2026-05-18 22:09:06 +02:00
9cf3e72033
feat: Schattenmarkt UX — separate section, relevance bridge, source links
Benjamin Sutter
2026-05-18 21:59:08 +02:00
b5cdb0353b
feat: Schattenmarkt cards — source pills, probability bar, AI summary
Benjamin Sutter
2026-05-18 21:49:27 +02:00
5391ad0ae5
fix: image above map stacked vertically in PropertyDetailView (160px + 120px)
Benjamin Sutter
2026-05-18 21:35:36 +02:00
a75818b983
feat: full responsive layout — mobile sidebar, stacked panels, fullscreen drawers
Benjamin Sutter
2026-05-18 21:24:00 +02:00
259b4e3c68
fix: compact side-by-side image+map in PropertyDetailView drawer (140px)
Benjamin Sutter
2026-05-18 21:11:38 +02:00
732231ce13
fix: always show tab scroll buttons in PropertyDetailView — Aktivitätslog sichtbar
Benjamin Sutter
2026-05-18 18:26:20 +02:00
fdf4de37db
feat: Aktivitätslog tab in PropertyDetailView — per-property timeline
Benjamin Sutter
2026-05-18 18:12:50 +02:00
c4c29ef7d3
feat: F030 Anfragencenter — Aktive & Latente Anfragen + Angebot-Wizard
Benjamin Sutter
2026-05-18 18:03:05 +02:00
05ac0083b2
feat: Steuerlast-Kriterium, ImmoScout-Layout, Gold/Silver/Bronze-Trennung
Benjamin Sutter
2026-05-18 14:14:10 +02:00
5b917bd619
feat: embedded interactive map in property + match detail views
Benjamin Sutter
2026-05-18 13:34:57 +02:00
c75d3c8121
feat: F029 intelligence card system — premium AI-native CRE cards
Benjamin Sutter
2026-05-18 13:25:27 +02:00
0f8a8ecd2f
feat: F028 strategic UX refocus — decision co-pilot redesign
V2
Benjamin Sutter
2026-05-17 14:16:21 +02:00
9e7a09f8a2
feat: F027 screen-level decision design — DecisionContextPanel + Properties + Results
Besu
Benjamin Sutter
2026-05-17 13:56:12 +02:00
4429a7890a
feat: F026 final assembly — ActivityTimeline, expanded demo event log
Benjamin Sutter
2026-05-17 13:50:33 +02:00
2da62a4861
feat: F025 button & action logic audit — global toast, confirm dialog, wired mutations
Benjamin Sutter
2026-05-17 13:42:30 +02:00
30e840489d
feat: F024 global AI assistant — contextual decision intelligence drawer
Benjamin Sutter
2026-05-17 13:27:33 +02:00
71f4b1eeb6
feat: F019 AI monitoring layer — output transparency & governance workspace
Benjamin Sutter
2026-05-17 13:11:35 +02:00
5d3323617c
feat: F018 human review queue — 2-panel governance workspace
Benjamin Sutter
2026-05-17 13:03:34 +02:00
1d0cb8b154
feat: F017 data quality system — trust layer across all decision surfaces
Benjamin Sutter
2026-05-17 12:51:35 +02:00
e0fe238c26
fix: correct typo Gesuch → Gesucht in NeedAlignmentPanel
Benjamin Sutter
2026-05-17 01:01:38 +02:00