engineering · Since 2023
ASG OS
for Alex Stoykov Group · Compass
The production platform behind a Chicago real estate team that scaled from 10 to 32 agents on top of it: one Postgres system of record, a typed API serving every surface, and an AI agent that drafts listing marketing for human review.


A top-performing Chicago real estate team was growing faster than its tooling. Every page ran its own script against a third-party API, every listing lived in someone's head or a scattered doc. As Marketing Director I built ASG OS: 15,000 lines of TypeScript, 27 database migrations, and 97 API endpoints of connective tissue that let the team triple without tripling overhead.
Role
Marketing Director · Systems Architect
Production
Since 2023
Scope
01
Pre-production
Mapped every workflow the team actually ran (listings from signed to marketed, agent onboarding, marketing requests) and designed the system around them. The core decision: replace the sprawl of per-page scripts with one Supabase Postgres system of record, so every surface reads from the same fast, relational data.
02
Production
Built the platform in TypeScript on Fastify: ten external connectors (CRM, MLS, Drive, Asana, Acuity), fourteen scheduled sync jobs with full run audits, row level security on every table, and an AI agent that drafts on-brand, Fair-Housing-aware listing marketing with a hard cost ceiling per run. Plus a Raspberry Pi kiosk driving the office TV dashboard.
03
Creation & Deliverables
The team scaled from 10 to 32 agents on this infrastructure. Marketing support that once required constant coordination now runs as a system: seller intake spawns the CRM record, the Asana project, and a drafted marketing package before anyone touches a keyboard, and a human reviews everything before it ships.
Client words
“Tim excels at creating and refining critical marketing assets, from listing presentations to agent brag books. He demonstrates a meticulous commitment to Compass brand standards and proactively integrates company tools into client-facing materials.”
The system in numbers
from the repo15,135
Lines of TypeScript across 78 backend modules
27
SQL migrations, RLS-hardened Postgres schema
97
API endpoints across serving and admin routes
10 + 14
External connectors + scheduled sync jobs
How it works
one system of recordSix external systems sync on a schedule into one database, and every surface reads from there through one typed API. The site got fast, an upstream outage stopped breaking anything, and every tool finally agrees on the same numbers. An AI agent drafts on-brand listing marketing from verified facts only, always for human review.
↓ scheduled sync
One database, one API
system of record · photo CDN · role-based access
↓ everything below
The surfaces
real captures, live dataWebsite Redesign


The new public site. Live inventory straight from the platform, the team's film, real client reviews, and neighborhood guides, all served by the same API as the internal tools.
The office TV
raspberry pi kiosk
Live team performance, on the wall
The leaderboard runs on a Raspberry Pi I wired behind the office TV: a dependency-free Node server boots on power-up via systemd, launches the dashboard fullscreen in kiosk mode, and refreshes itself from the same API as everything else. Anyone on the team can switch views from their phone through a small remote-control web app the Pi serves on the local network, and updates deploy over SSH with one script. Volume, closings, pending deals, and upcoming closings, always current, no laptop attached.