← Overview  ·  System design
A Neely Family Property · Project Plan

Foothold launch plan: live at close

Aspen and Summerset Park both close August 31, 2026. The program is built, switched on, and running by then. This plan is organized by owner so it's clear who does what, on what week.

Target Aug 31, 2026 · close + go-live for both properties

What "functioning by close" actually means

Everything is built and switched on by Aug 31. But two halves behave differently, and it's worth being straight about it:

Live at close (acquisition engine)

  • Listings live on Apartments.com / Zillow
  • AI speed-to-lead agent answering in <5 min
  • Lead capture + logging (to the outbox, not into Entrata: writes are deferred under rule 2)
  • Listing scorecard running
  • Website /rentals + /map live

These work on day one. A vacant unit can lease the first hour.

On at close, ramps after (retention + data)

  • Recognition engine (needs residents + Welcome Profiles)
  • Reviews velocity (needs happy residents to ask)
  • Retargeting audiences (need traffic to build)
  • KPI dashboard (needs leads/leases to measure)

Switched on at close, but they accumulate value as residents flow through. Nothing to recognize on day one.

Where this actually stands, 2026-08-05 (26 days to close). The Entrata access question is closed and every data question behind it is answered. What is not done is the code: nothing Entrata-facing is built yet, the VPS service still runs in mock mode, config.js doesn't read the API key, and the live branches in the client are stubs. That's deliberate, Brent's call to finish the design before writing the client, and it's what bought the verified rate limits, the PII rules and the deny-by-default allowlist now sitting in the API reference and system design. Read the "live at close" column above as a build commitment, not a status.
The Entrata API long pole is CLEARED, and property scope replaced it. Liberty requested it, Entrata provisioned it, and the key has been live and probed read-only from the VPS since 2026-07-31, widened 2026-08-03, fully exercised 2026-08-05: 28 services permissioned, 22 usable reads verified against production data, static IP whitelisted, no cost surprise. What gates the work now is which properties are on the key. Exactly one is: Owyhee Park (1311115), Liberty's building, not ours. Aspen and Summerset are NOT on it, so nothing below can be built or validated against either property until Liberty adds them post-PMA, and that lead time is unknown. Be straight in status reporting about what is proven versus what is only designed.
The acquisition engine doesn't depend on either one. Entrata's native ILS syndication to Apartments.com/Zillow and the lead-email-to-agent path both work WITHOUT our API integration. So listings + speed-to-lead are live at close even if the integration lands after. Don't let the integration gate go-live.

The plan, by owner

NPI (Brent) builds the systems Liberty / LAG (incoming PM) acts Entrata / CoStar / vendors (external)
Owner / task
Jun 30
Jul 7
Jul 14
Jul 21
Jul 28
Aug 4
Aug 11
Aug 18
Aug 25–31
Liberty Asset Group · the incoming PM, owns everything property-side
Request Entrata API access (agreement + IP user)Done 07-31widened 08-03, all 6 new reads verified 08-05
Wk 1–2 · DONE
Provide unit / floor-plan data + pricing
Wk 1–3
Turn on Entrata ILS feed → Apartments.com / Zillow
Wk 2–3
Apartments.com account/tier + point lead email at agent
Wk 3–4
Coordinate photographer property accessneeds seller OK pre-close
Wk 2–3
Agree lead-ownership policy (agent owns first-touch)
Wk 4
Move-in workflow + maintenance SLA trained (24h / 4h)
Wk 8–9
Set turn SLAs (normal / reno) + pre-move-out inspection flowfeeds the turn engine
Wk 4–6
Entrata · CoStar · photographer · external, on someone else's clock
Entrata: provision Internal API User + sign + whitelistDone 07-31key live, VPS IP 5.78.139.104 whitelisted
Wk 2–4 · DONE
CoStar: wire Apartments.com→Entrata feed (24–48h)
Wk 3
Photographer: photos / video / 3D / drone per planneeds property access
Wk 3–5
NPI / Brent · builds + runs every system
GHL delivery + nurture workflowsBuilding
Wk 1–3
Website /rentals + /map for both properties
Wk 1–5
Property data spec + load structured data
Wk 2–4
ILS listing scorecard (grades → emails PM)
Wk 3–5
AI speed-to-lead agent (build + test)
Wk 2–7
Entrata integration: avail pull + lead loggingDesigned, not builtAPI access cleared 07-31; lead logging queues to the outbox (rule 2)
Wk 4–8
Reviews engine + AI response drafts
Wk 4–6
Resident materials (packet, cards, pet gift) ready
Wk 3–5
Welcome Profile form + GHL field mapping
Wk 4–6
Retargeting pixels + audiences
Wk 5–7
Recognition engine v1 (Entrata facts + our DB)Ramps post-closepets + DOB sources verified; consent-gated; needs Aspen on the key
Wk 6–9
KPI dashboard (CPL / CPLease by source)
Wk 7–9
Pre-leasing turn engine (vacate + turn SLA → waitlist priority)needs Entrata integration; turn data source is live (getWorkOrders, "Make Ready")Zero-vacancy goal
Wk 7–9
Takeover letter to existing residents (joint Foothold + Liberty)Day-one retention
Wk 7–8
Baseline ops data captured at takeover (the "before" for the proof story)vacancy days, turn time, renewals, rents, ratings
Wk 8–9
★ CLOSE + GO-LIVE
AUG 31: BOTH PROPERTIES LIVE

Weeks are Monday-dated. The red line is the Aug 31 close. Bars move as dependencies clear, the dependency notes show what's waiting on what.

Who owns what (the short version)

OwnerOn the hook forFirst move (week 1)
Liberty / LAGEverything property-side: Entrata API request, ILS feed, Apartments.com account, unit data + pricing, photographer access, lead-ownership policy, move-in + maintenance workflowEntrata API access: DONE 07-31, widened 08-03. Next from Liberty: add Aspen + Summerset to the key, and answer the per-property apply link (asked 08-03)
Entrata / CoStarProvision the API user + sign the agreement + whitelist our IP; wire the Apartments.com→Entrata lead feedAPI user + agreement + whitelist: DONE 07-31. CoStar lead feed still to wire
PhotographerPhotos, video, Matterport 3D, drone, per floor-plan typeGet booked + scheduled once access is set
NPI / BrentBuilds + runs all systems: website, GHL, AI agent, scorecard, Entrata integration, reviews, recognition engine, retargeting, dashboard, all resident materialsGHL workflows + website + agent build start

Dependencies that gate the date

Entrata API access (Liberty → Entrata): CLEARED 2026-07-31. Requested, granted, agreement signed, key live, VPS IP whitelisted, widened again 2026-08-03 and fully probed 2026-08-05. No cost surprise surfaced. Kept here as record, not as a to-do. Details →
Property scope: Aspen and Summerset are not on the API key (Liberty). The gate that replaced the access gate, and the one that actually threatens the date. Only Owyhee Park (1311115) is permissioned, and it's Liberty's building, not ours, so every engine that needs an NPI-owned property is designed but unvalidated. Ask Liberty what adding the two takes and what the lead time is. Note that Aspen does not inherit write permission on arrival, rule 2 is per-property.
Per-property apply link (Liberty). Asked 2026-08-03, unanswered, and it's the only item that has actually been sent to Liberty. The agent never takes an application, it hands out the property's hosted ProspectPortal URL, so the funnel needs one confirmed link per property. Don't chase it with a second email. Three more are open with Liberty and none has been sent yet: Aspen and Summerset onto the key (the row above), sendWorkOrders for the properties NPI owns, and sendLeaseActivities so Foothold's resident touches land in Entrata instead of Liberty's inbox. Those last two go out in one email, not two. Neither grant authorizes a call: the writes still need the per-property sign-off.
Property access for the photographer (Liberty / seller). Pre-close access needs the seller's OK. If it waits until close, the media lands just after go-live, get permission to shoot during due diligence. Shot list →
Unit data + pricing (Liberty). Listings, the site, and the scorecard all need it. For a property on the key this comes straight off the API (getFloorPlans is authoritative on square footage, getPropertyUnits carries per-term rents), which is how the Owyhee before-picture was built. For Aspen and Summerset it's still a manual hand-off until they're on the key.
Gift / perk + merch budget (Brent). Recognition engine and the pet gift can't run live until it's set.
Contingency (not specced yet): manual availability entry. The trigger changed. The original condition (spec this if the Entrata timeline looks threatened by late July) has passed and the API landed on time, so the API is no longer the risk. The same contingency now hangs on property scope: if Aspen isn't on the key by go-live, the site and agent have no live availability feed for it, and a simple admin input Liberty keys availability into is what keeps them quoting fresh data. Brent's call whether to spec it.

The scorecard we track

Industry standard vs. our goal. The Overview shows the six hero KPIs; this is the fuller diagnostic set the whole system exists to move.

Sales & acquisition · Foothold owns

KPIIndustry standardOur goal
Speed-to-lead (first response)Hours (same / next business day)Under 5 minutes, 24/7/365: answer questions, send the apply link, book tours
Applications-to-tours ratio~0.4/tour (industry tour→app ≈ 40%)≥1.0 by mo 6 → 3:1 (a high ratio = pent-up demand)
Lead volumeOptimized for conversion %Intentionally maximized for brand awareness + referrals
Online rating (Google / ILS)~3.5–4.2 ★ (avg ~3.9)4.5 ★ and climbing (lifts ILS rank + CTR, the funnel lever)
Days-on-market / vacancy daysmarketMinimize (the pre-leasing turn engine)
Cost per lease, by sourcen/aThe allocation metric, where the spend goes

Operations & resident · Liberty runs it, we watch the aggregate

KPIIndustry standardOur goal
Renewal / retention~57% (Class C; top quartile 70–80%)70%
Quarterly satisfaction pulse (the red flag)n/aAll-resident survey, 2 questions (a score + "anything to fix?"), drawing for response. This is our data-driven signal on management quality.
Review velocityn/aSteady new reviews/mo, the continuous pulse
Maintenance: first contact24–48 hrsResident contacted within 24 hrs (non-emergency) / 4 hrs (emergency). On-site scheduling SLA is Phase 2 (Liberty not committing yet). ⚠️ This is a FIRST CONTACT target, not a resolution target. Don't read it as one against the row below.
Maintenance: responsiveness (aggregate resolution time)n/aDECIDED 2026-08-10 (Brent): build it, and build it as an AGGREGATE. "If that KPI is genuinely good we can use it in marketing, and if it is bad then it is an accountability metric for LAG." Aggregate only, never per ticket, which affirms "watch the scoreboard, not the plays" rather than crossing it: measuring the aggregate isn't policing, chasing one ticket still is. ⚠️ Dual-purpose is a constraint, not colour: one definition, written down once, computed the same way every time, never cherry-picked by window. Computed read-only from getWorkOrders (completedOn observed, createdOn in the spec, plus the four date filters), no new permission and nothing to ask Liberty for. ⚠️ No target is set yet, and whether it joins the six hero KPIs on the Overview is undecided. See the lead & comms spec §5.
Occupancy~95% physical96%+ physical (95%+ economic)

The outcome

KPIIndustry standardOur goal
Brand-rent premium / NOI liftn/a (supply-side value-add only)+6% (target 5–8%, the demand-side lift)

Dropped resident NPS, the quarterly satisfaction pulse replaces it as the management red flag. Maintenance SLA is parked at phase 2 pending Liberty's commitment. ⚠️ That parked SLA is a first-contact commitment from Liberty. The aggregate responsiveness row added 2026-08-10 is a separate, read-only measurement of our own and is not gated on it.

Targets unchanged. Measurement sources, as of 2026-08-10: renewals, occupancy, lease expirations and loss-to-lease all compute from getLeases against market rent from getFloorPlans; lead volume, source mix and speed-to-lead from getLeads (createdOnDateTime is the clock, and paid-search attribution already exists in the PMS, don't build a parallel one); maintenance responsiveness and turn progress from getWorkOrders, read-only. Filter out maintenanceRequestFrom: "Entrata PaaS" system records and collapse parent/child before counting anything. Three more cautions on the responsiveness number specifically: don't segment on maintenancePriority (780 of 785 tickets are Medium, no signal), use maintenanceProblem and maintenanceLocation instead; ⚠️ createdOn is in the vendor spec but has never been seen in a live response, so verify it comes back populated before building the metric on it, because if it's empty the metric needs a different clock; and consider reporting in-hours separately from out-of-hours, since office hours are M-F 9 to 5 with no weekend coverage, so roughly 76% of the week has no staff and a raw aggregate hides that. Budget-versus-actual is not available from Entrata, so NOI-vs-budget sources budget from NPI's own model. All of it is measurable only where the property is on the key, which today means Owyhee Park.

Resident-facing deliverables

Drafts of the physical materials. Open each, they're print-ready. Feedback to owner@footholdboise.com.

Data status, 2026-08-05. The pet gift is no longer waiting on data: getLeases carries 34 pet records across 30 of the 52 Owyhee leases, each with the pet's name plus breed, color, gender, age and weight. 🚫 isAssistanceAnimal is a hard fair-housing exclusion from the gift and from every pet-themed message, and a missing or unparseable flag excludes the record. The birthday card has a source but not a complete one: date of birth comes only from getLeads and covers 57 of 88 current residents (65%), so the Welcome Profile is a required component covering the rest, not an optional fallback. Birthdays are viable, not solved. Every physical touch is consent-gated on postal_mail and every follow-up text on sms, read separately. See the lead & comms spec §4.

Coming next: Foothold merch (hats, cups) + the monthly drawing, and a tenure-milestone card. Same template.