← Files Advan Research REIARCHIVED FILE

skills/void-analysis/SKILL.md

7.21 KB · Oct 4, 2026 · 12:27 UTC

↓ Download file

---
name: void-analysis
description: >
  Workflow for identifying tenant candidates that would fit a vacancy or
  underrepresented category at a retail center, using Advan REI's void
  analysis endpoint enriched with traffic health and expansion signal data.
  Use this skill whenever a user asks what tenants would work at a center,
  what's missing from a property's tenant mix, who should fill a vacancy,
  what categories are underrepresented, or whether a specific retailer type
  would be a good fit. Trigger on phrases like "what tenants would work here",
  "who should fill this space", "what's missing from this center", "void
  analysis", "tenant candidates", "what categories make sense here", or any
  request about filling a vacancy or improving a center's tenant mix.
---

# Void Analysis Workflow

The void analysis endpoint does the core analytical work — it returns tenant
candidates ranked by dynamic distance, cannibalization risk, and demographic
match. This skill's job is to gather the right parameters before calling it,
filter out candidates that don't belong in a retail center context, enrich
the top results with real-world health and expansion data, and present the
output in a way that's actually useful for a leasing decision.

---

## Step 1: Gather Parameters

Before calling the endpoint, confirm two things. If either is missing from
the conversation, ask — these directly affect the quality of the results.

**Vacancy size:** What is the approximate square footage of the space? This
is the most important filter. A 1,200 sq ft inline space and a 45,000 sq ft
anchor box should return completely different candidate sets. If the user
hasn't specified, ask before proceeding.

**Category preferences or exclusions (optional):** Has the user indicated
they're looking for a specific category (food & beverage, fitness, soft
goods) or want to exclude something? If so, note it — you'll apply it when
filtering results. If no preference is stated, proceed with the full results
and apply the standard retail center filter described in Step 3.

Also confirm the property using ALI, location name, and company name as
usual.

---

## Step 2: Call the Void Analysis Endpoint

Call `void-analysis-api` with the resolved property identifiers and vacancy
size parameter. Use the date range from the UI or as specified by the user.

The endpoint returns a ranked list of tenant candidates scored on:
- **Dynamic distance** — how far the candidate's typical locations are from
  this trade area's profile
- **Cannibalization risk** — likelihood of pulling from an existing nearby
  location of the same brand
- **Demographic match** — how well the trade area's visitor profile aligns
  with the candidate's typical customer base

---

## Step 3: Filter for Retail Center Appropriateness

The endpoint returns candidates across a broad range of categories. Before
presenting results, remove any candidates that don't belong in a traditional
retail center context. Categories to omit by default:

- Auto dealers, car washes, and auto service
- Hotels and lodging
- Hospitals, urgent care, and large medical facilities (small-format urgent
  care or dental that fits inline retail is fine)
- Gas stations and fuel retailers
- Industrial, warehouse, or self-storage uses
- Large-format government or civic uses

Use judgment for edge cases. A drive-through-only concept with no inline
presence, for example, may not fit a traditional center even if it scores
well on demographics. If the user has specified a category preference,
apply that filter here too — prioritize their stated criteria over the
default list.

---

## Step 4: Filter by Vacancy Size

From the filtered results, narrow to candidates whose average store footprint
is compatible with the vacancy. A reasonable match range is ±30% of the
vacancy size unless the user specifies otherwise.

Flag if the vacancy size is unusual — a very large anchor box or a very
small kiosk-scale space may return a thin candidate set, and it's worth
noting that upfront rather than presenting a short list without explanation.

---

## Step 5: Present Results

### Lead with a brief framing

One or two sentences on what the analysis surfaced — is the candidate pool
strong, thin, concentrated in a particular category?

> "The void analysis surfaces eight strong candidates for the 4,200 sq ft
> space, with the clearest opportunities in specialty food, health & wellness,
> and value apparel — all categories underrepresented in this trade area
> relative to the visitor demographic profile."

### Candidate table

| Rank | Tenant | Category | Avg Store Size | Demographic Match | Cannibalization Risk |
|------|--------|----------|---------------|-------------------|----------------------|
| 1 | | | X sq ft | High/Med/Low | High/Med/Low |

Present the top 25 from the filtered, size-matched list, or fewer if the
list is shorter. Don't pad the table with weak candidates just to fill rows.

After the table, offer to expand to the full unfiltered list if the user
wants to see everything the endpoint returned before category and size
filtering was applied.

### Brief narrative

Two to three sentences on the standout candidates and any patterns worth
flagging — a category cluster that keeps appearing, a size mismatch that
limits the field, or a category that keeps appearing near the top of the
rankings.

### Cite data vintage

> *Void analysis based on [date range], via Advan's mobile device panel.*

---

## Handling Thin Results

If filtering by category and size leaves fewer than three candidates, say so
and offer options: widen the size range, broaden the category filter, or look
at what the full unfiltered list shows. Don't present a weak list as if it's
comprehensive.

---

## Follow-Ups

After presenting the candidate table, offer to enrich the top candidates with
two additional signals. This is the natural next step for any candidate the
user wants to pursue seriously — don't do it by default, since it requires
multiple additional data pulls and web searches.

> "Want me to dig deeper on the top candidates? I can pull traffic health
> and expansion signals for each one — that'll tell you which are actively
> growing and whether any have announced a leasing pause or contraction."

When the user confirms, enrich up to 5 candidates:

**Traffic health:** Pull `traffic-summary` and `ranking` for each candidate's
existing nearby locations. Note each candidate's trajectory — growing, stable,
or declining — alongside their void score.

**Expansion signals:** Do a targeted web search for each candidate:
"[Retailer name] expansion [year]" or "[Retailer name] new locations" or
"[Retailer name] leasing activity". Flag any candidate that has announced
closures or a leasing pause — a strong analytical score doesn't matter if
they're not actively opening stores.

Present the enriched results by adding Trajectory and Expansion Signal columns
to the original table for the enriched rows, then update the narrative.

If a specific candidate looks strong and the user wants to go deeper beyond
enrichment, the natural next steps are pulling that retailer's full traffic
profile, checking their trade area overlap with the subject property, or
running a co-tenancy check to see how well they'd complement the existing
tenant mix. Let the
conversation lead.

SHA-256: bf048601aa48db1a86a19b41f80caa2ec7e77183a1fd48ee84f1196fbec1e14c