AI-Powered Property Discovery Platform
Production-ready property discovery on a TypeScript monorepo: Next.js frontend, Express BFF, Strapi CMS, PostGIS + Redis, Vertex AI for NL search, and GCP deployment — with Swedish-market auth patterns and an internal Kvick design system.
The Problem
Traditional property search is filter-driven: users must know which filters to set. Natural language — "Find me a 2-bedroom flat near a primary school in Malmö under 3M SEK" — is more natural but hard to implement reliably.
The platform had to turn ambiguous queries into precise structured filters and spatial queries — handling "near", named areas, and map boundaries — while staying editorially flexible for marketing content and ready for a Swedish-market auth model.
Platform Architecture
A TypeScript monorepo with three deployable applications and shared packages for types, validation, API contracts, and a vendored Kvick design system — keeping the public site, API, and CMS aligned as the product evolved.
- Public web — Next.js 15 (App Router), React 18, Tailwind CSS, internationalisation (next-intl), Zod, Google Maps
- API layer — Express BFF with Prisma, OpenAPI contracts, Passport (Google OAuth), and Zod validation
- Content admin — Strapi 5 on PostgreSQL, with a lightweight local database for editorial development
- Shared packages for contracts, utilities, validators, and fallback content across apps
Data, AI & Integrations
- PostgreSQL with PostGIS for geo data; Prisma ORM for schema and migrations
- Redis for caching and sessions
- Heuristic and LLM-assisted query parsing — plain English to structured filters; Vertex AI (Gemini) with optional OpenAI
- Google Maps Platform for geocoding and map visualisation
- Swedish-market authentication patterns: Google OAuth, BankID, and email magic-link sign-in
- Transactional email and Google Cloud Storage for CMS media
- CMS-driven pages rendered on the public site with structured markdown content
Infrastructure & Delivery
- Containerised local and production-like environments (Docker Compose)
- GCP production stack: Cloud Run, Cloud SQL, Memorystore (Redis), load balancing, IAP, Secret Manager
- OpenTelemetry on the API layer for observability
- CI/CD via GitHub Actions — automated lint, typecheck, test, build, and deploy pipelines
- Consistent code quality and bundle-size guardrails across the monorepo
Outcomes
- Production-ready platform delivered — from innovation brief to deployable monorepo
- Natural-language property search pipeline working with PostGIS spatial SQL and geometry queries
- Three-app architecture (web → BFF → data/CMS) with clear contracts and shared packages
- Reusable pattern for LLM + structured database integration on GCP
- Internal Kvick design system integrated across the public experience