Connected — schema not applied
Mosser Companies · Internal Tool

Competitor Intelligence

tracking the SF multifamily field, daily

Daily-refreshing pipeline that pulls listings from eight SF operators plus Craigslist, diffs against prior state, and writes a full audit history to Neon Postgres. Operators consume via Excel-on-SharePoint; ad-hoc questions go through a read-only AI Q&A agent.

01 / Pipeline Status

Health

database, schema, seed data

0/8
Operators Seeded
0
Fingerprint Rules
0/6
Tables Applied
Daily Cron 06:00 PT
Diagnostics

Database Connection

Connectedtrue
Schema appliedfalse
Operators0 / 8
Fingerprints0
02 / Coverage

Operator Roster

eight operators plus a separate Craigslist scan

In Scope

SF Multifamily Competitors

2B LivingAppFolio
Gaetani Real EstateAppFolio
Brick + TimberYardi RentCafe
Trinity SFYardi RentCafe
Parkmerced (Maximus)Yardi RentCafe
RentSFNow (Veritas)Custom WP · Playwright
Mosser LivingCustom WP · Playwright
Rentals Inc.Webflow · Playwright

Plus a separate Craigslist SF scan (apartments-for-rent, multifamily only), attributed to operators via the fingerprint dictionary in the fingerprints table.

03 / Setup

Onboarding Checklist

complete before first daily run

Required

Pre-flight

  1. Connect Neon database via Vercel → Storage. Confirm DATABASE_URL populated.
  2. Apply schema: npm run db:apply
  3. Create Cloudflare R2 bucket and add credentials to env vars.
  4. Add GitHub Actions secrets: DATABASE_URL, R2_*, SLACK_WEBHOOK_URL.
  5. Verify daily ETL runs at 06:00 PT via GitHub Actions cron.