Every Monday, somebody on your team opens twelve browser tabs and writes down what the comps are charging. It takes forty minutes, it's stale by Wednesday, and the one week they skip it is the week the property down the street goes to two months free.
You can automate that. Not the judgment part, the collection part. What you're building today is a system that checks your comps on a schedule, tells you what changed, and drops a short written brief in your inbox before your first meeting. You'll still decide what to do about it. You just won't be the one taking attendance.
What you're actually building
Three pieces, and none of them require a developer.
A watcher that pulls public information from comp websites and ILS listings on a schedule. A comparer that holds last week's snapshot next to this week's and flags the deltas. A writer that turns those deltas into three sentences a human wants to read.
Most people skip straight to the writer, ask ChatGPT "what are my competitors charging," and get a confident hallucination about a property that closed in 2019. The model has no live access to your submarket unless you give it one. Order matters here.
Step one: define the watch list like a leasing person, not a spreadsheet person
Open a doc. For each comp, write down:
- Property name and the exact URL of its floor plan or pricing page
- Its ILS listing URL on whichever ILS you actually pay for
- Which of your floor plans it competes with (not "1BR", but "our A2 vs their Aspen")
- Its Google review page URL
Cap it at eight properties per community. You know which eight. They're the ones your leasing team names unprompted when a prospect walks in and says they're also looking at a couple of places. If you list fifteen, you'll get noise and stop reading the emails by week three.
Note the pages that matter most: the pricing/availability page, and the specials or promotions banner. Concessions live in the banner. Rent lives in the grid.
Step two: set up the watcher
Two ways in, depending on your tolerance for setup.
The no-code way. Use a page-change monitor. Visualping, Distill.io and Browse AI all do this, and the free or cheap tiers cover a handful of URLs. You point it at the pricing page, set a check frequency of daily, and tell it to watch a specific region of the page rather than the whole thing. That last part is the difference between useful and unusable. Watch the whole page and you'll get alerted every time their hero image rotates. Select the pricing table and the specials banner, nothing else.
Browse AI goes a step further and extracts structured data into a table, so you get "Aspen, 1x1, 712 sq ft, $1,845, 12mo" as rows instead of a screenshot diff. That structured table is what makes step three work.
The connected way. If your team already runs Zapier or Make, chain it: monitor fires, sends the new data to a Google Sheet, appends a row with a date stamp, then triggers an AI step that compares the last two rows and writes the summary. Fifteen minutes of setup per property, once.
Either path, set the schedule for early morning so your brief lands before the day starts. Sunday night works if you want it waiting Monday.
A boundary worth respecting: you're collecting publicly posted pricing and specials, the same thing a shopper sees. Don't build anything that logs into a portal, fills out a guest card, or scrapes at a volume that would look like an attack. Check the site's terms. This is competitive shopping, not espionage, and the distinction stays clean as long as you only look at what's on the open web.
Step three: make the AI write the brief
Here's where the model earns its keep. You're not asking it to find information. You're handing it two data snapshots and asking it to tell you what moved and what it means.
Feed it the current week's extracted table and last week's. Then ask for a specific structure: changes only, ranked by impact on your lease-up, with a suggested response. Don't accept a summary that restates every row. You already have the rows.
The output you want looks like: "Parkline dropped their A1 from $1,899 to $1,775 and added six weeks free, effective this week. That's an effective rent of roughly $1,570 on a 12-month term, which is about $95 under your A2 net. They have eleven units showing available, up from four. Read: they're chasing a delivery wave, not repositioning."
That last sentence is the one worth paying for. A price change is data. A price change plus rising availability plus a new concession is a story, and the model is genuinely good at spotting the pattern when you give it the history.
Step four: net effective rent, calculated the same way every time
Concessions are where comp shopping falls apart, because everyone quotes them differently. One month free on a 12-month lease and six weeks free on a 15-month lease are not comparable in your head at 7am.
Put the math in the prompt. Tell the model your convention: net effective = (gross rent x lease term months, minus concession value) divided by lease term. Ask it to show gross, concession, net effective and term for every comp, every week. Now the numbers stack.
Bonus move: ask it to flag when a comp's net effective crosses below yours, specifically. That's the alert that should wake you up, not a $25 street rate wiggle.
Step five: add the lease-up radar
New supply is the slower, meaner threat. Add a second, monthly job that watches for properties entering the market: your city's permit or certificate of occupancy feed if it's published, new listings appearing on your ILS within a three-mile radius, and Google Business Profile pages that flip from "opening soon" to open.
Ask the AI to summarize any new entrant with unit count, expected delivery, and which of your floor plans it overlaps. A 280-unit lease-up eight months out changes your renewal strategy today, not the week their leasing office opens.
The fair housing line, and it applies here too
When you ask a model to summarize a comp's positioning, it will sometimes describe the residents instead of the property. You'll get "they're targeting young professionals" or "family-oriented community," and if that language migrates into your own listing copy or ad targeting, you have a problem. Familial status and age are protected. The fix is a standing instruction in every prompt: describe the unit, the building, the amenities and the price, never the type of person who lives there or should live there. Applies to competitive briefs, listing copy and ad audiences alike. Keep the language on square footage, finishes, parking and rent, and you stay clean.
What breaks
Websites redesign, and your page selector silently starts watching an empty div. Check that your monitors are still returning data once a month, or you'll "learn" that nothing changed for six weeks. Some comps hide pricing behind a lead form, which means you'll get availability but not rent, and the brief should say so rather than guess. And the model will occasionally compute net effective wrong if the concession is worded oddly. Spot-check one property's math each week. It takes ninety seconds and it's how you keep trusting the other seven.
Set it up for one community first. Run it two weeks. Then clone it.