Purlus
all work
sys/work/cre-615 · case study

CRE 615: every industry event in one calendar, collected automatically

An event hub for a city's commercial real estate community. It pulls events from dozens of association websites, checks them, and lets organisations and sponsors pay to be seen.

Type
Web app
Built with
Next.js, Firebase, Python
Timeline
Dec 2025 to now
Status
Live
615crecalendar.com
01 · the problem

Events scattered across 29 websites

The local commercial real estate scene runs on events, and every association posts them on its own site. Nobody could see the whole month in one place.

The client wanted one calendar that fills itself, keeps the details right, and pays for itself through organisation listings and sponsors.

02 · what we built

Scrapers, a checker, and a calendar people pay to be on

A scraper per organisation

29 Python scraper modules, one per association, running on their own server on a schedule.

A second opinion on every event

A model reads each source page, quotes where it found each detail, and code checks every value before it goes live.

Public calendar

A fast public calendar with event pages, in a glass-style design built with Framer Motion.

Organisation dashboard

Organisations manage their events, tentative dates, analytics, discounts and billing in one place.

Paid listings and sponsors

Stripe checkout for event fees, featured events, subscriptions and sponsor slots that expire on their own.

Admin control room

Scrape status, extraction runs, sponsors, email campaigns and bug reports, with reminders on scheduled jobs.

03 · by the numbers

Where it stands

29

organisation scrapers feeding one calendar

0

mistakes in a hand check of 38 events the model extracted

24

events the checker found that were not on the calendar yet

131

commits, December 2025 to November 2026

The checker also caught a real bug: event times were being saved five hours late because of a time zone mistake. It was fixed, and on the organisations rechecked afterwards the scrapers now match the checker on every date and time.

04 · stack

What it runs on

Web

  • Next.js 14
  • React
  • TypeScript
  • Tailwind
  • Framer Motion

Data & payments

  • Firebase
  • Firestore
  • Stripe
  • Resend

Collection

  • Python
  • Selenium
  • Gemini
  • n8n
  • Docker
  • Vercel cron
sys/next · your project

Need data from many sites in one place?

Tell us what you want built. You get a written scope and a fixed quote within one business day.