How Situs Group gives tours today, who can give them on PropFlow, how Spanish and English tours should be routed, and what changes in tour assignment and reassignment. One page for Fede to review.
2026-10-19 · Proposed — pending review · read-only, nothing turned on at Situs · proposal into Gera's lane; the Situs hub links here
Today Clara can only book Situs tours onto Courtney, a virtual assistant in the Philippines who does not give tours (none booked yet; Clara is not yet replying to Situs Zillow leads: the company live switch is off, 48 leads declined as "not live" since Oct 9, and the supervised turn-on waits on Fede's yes). She is the only leasing agent with a connected calendar. Lee, Deiby and Miriam, the three people who actually show homes, have not signed in. The customer's rule, in Eileen's words: Spanish speakers get only Miriam or Deiby, and Miriam only when needed. The product has no idea of language today, and nobody can tell Clara "someone else is showing it."
From the raw transcripts of the Sep 1 whiteboard session, the Oct 13 follow-up and the Oct 16 onboarding call with Miriam and the team. Every line is the speaker's own words; Oct 13 speakers are inferred because that transcript only says "Them" and "Me".
| Topic | What they said | Who, when |
|---|---|---|
| Who gives tours | "the first question is, do they speak English or do they speak Spanish? … if they speak Spanish, only Miriam and Davey can do the tour." | Eileen, Oct 16 |
| Load | "They should have equal amount of showings between the two of them. The person that we should be only calling in when necessary is Miriam, because Miriam admittedly has like 4 jobs." | Eileen, Oct 16 |
| English tours | Gera summed up "Lee's primary." Eileen objected only "Even if they speak Spanish? I would not." Inference: Lee primary for English stood. | Oct 16 |
| Rule today | "there's no Rhyme or Reason" (Sep 1). "Honestly, it like fluctuates" (Oct 13). | Eileen; Oct 13 inferred |
| Driving | "they schedule a showing for somebody in Denver, and then 15 minutes later, they schedule a showing for something in Lakewood. Would Clara kind of help us with that?" | Miriam, Oct 16 |
| Swaps | "somehow they trade midday and they don't reassign it … That's another opportunity for us to lose the person." | Eileen, Sep 1 |
| Calendars | Miriam's and Davey's calendars are full of reminder blocks; Hugo asked them to mark those "free". Lee and Davey connect calendars at the Tuesday leasing meeting. | Hugo, Eileen, Oct 16 |
| Shared calendar | "is there a way that we can create like a general email or we can use leasing instead?" (so a tour is not pinned to one person) | Miriam, Oct 16 |
| Self-guided | Igloo lockboxes at about 3 buildings; Clara books first, then sends access instructions. | Miriam, Eileen, Oct 13/16 |
Not said by the customer: tour length, buffer or tour hours. The only numbers in transcripts are Eileen's "15 minute break" and Fede's own "15… 30, maybe 45". Our settings for Situs hold 30-minute tours with a 30-minute buffer.
| Claim on this page or in recaps | What the raw transcript says |
|---|---|
| "Lee's primary" (attributed to Hugo in one of our sessions) | Hugo never says it in any reachable transcript. Gera, Oct 16: "how I'm hearing it right now is lease primary." Eileen did not agree; her answer was the Spanish objection. Hugo, Oct 13: "I don't… care about the booking tours," his priorities are weekends, nights and the after-hours line. |
| English tours: "Lee primary stood" | Eileen, Oct 16: "It needs to be more like split between the two of them. They should have equal amount of showings between the two of them." And: "I would rather Lee and Davey do all of the first showings." |
| "Miriam last resort" | Not in the raw. Eileen, Oct 16: "The person that we should be only calling in when necessary is Miriam, because Miriam admittedly has like 4 jobs." "Last resort" is her Nov 4 email. |
| Spanish: "only Miriam and Davey" | Eileen, Oct 16, said it; a moment later: "Miriam and Lee have to take so much traffic from just the Spanish-speaking tours," which contradicts it. Not settled in the transcript. Gera's promise, Oct 16: "we'll play the language as like the decider for scheduling." |
| Hugo asked them to mark reminder blocks "free" | Hugo said the reminders "maybe need to change a little bit." The "free" instruction came from Fede (Oct 16) and Gera (Oct 20). |
| Tour hours, weekends | Nobody at Situs named tour hours, length or buffer. Eileen, Oct 13: "we just want to start doing remote showings on the weekends"; three properties need showings "every hour of the day if possible." Sep 1: a split shift idea, "eight to two" and "two to six." |
| How they assign today | Eileen, Sep 1: "there's no Rhyme or Reason"; trades midday without reassigning. Miriam, Oct 16: the VAs sometimes schedule "just Davey and I… instead of adding Lee." |
Sources: #transcripts threads Aug 17, Aug 25, Sep 18, Oct 13, Oct 16, Oct 20, Oct 28; the Sep 1 raw is Slack canvas F0BU63PCQ5T with AI-reconstructed speaker labels. Oct 13 and Oct 20 speakers are inferred from context. Net: the customer asked for Lee and Deiby sharing equally, Miriam only when necessary, Spanish to a Spanish speaker. Today's two-person list (Lee, Deiby) gives Lee every day and Deiby only her empty days, so it is not yet the split they asked for.
| Person | Does at Situs | PropFlow role | Signed in | Calendar | Can get tours today |
|---|---|---|---|---|---|
| Lee McKibbin | Tour giver; English; proposed primary | Leasing agent | Yes (calendar connected Nov 4, 2:00 PM MT) | Google (Nov 4) | Yes, since Nov 4 |
| Deiby (Davey) Magana | Tour giver; Spanish; 44% of 2026 tours | Leasing agent | No, invited | None | No, no calendar |
| Miriam Gallegos | Spanish backup, last resort; "4 jobs" | Property manager | No, invited | None | No, and the role blocks her (see below) |
| Courtney Tolentino | Virtual assistant: listings, guest cards, booking | Leasing agent | Yes, Oct 16 | Google, Oct 16 | Yes, the only one |
| Eileen O'Malley | VP Ops, champion; 44 tours, mostly DU houses | Company admin | Yes, Oct 16 | None | No |
| Hugo Weinberger | Owner, decides staffing | Company admin | Yes (account Sep 29, Google sign-in linked Oct 6) | None | No |
| Beryl | Maintenance assistant | Maintenance | Yes, Oct 19 | None | No |
| Lovely Salvador | Virtual assistant, books showings | Maintenance | No, invited | None | No |
| Michelle Pan | Replies to prospects, half in Spanish; books tours | Not on PropFlow at all | |||
Is Miriam's property-manager role a problem? Yes, in today's mode. With no explicit tour list, only people with the leasing-agent role are picked. The moment a company tour list is set, any staff role can be on it, property manager included, as long as she has a calendar connected. Recommendation: set the list to Lee, Deiby, Miriam once their calendars are connected, and take Courtney off it. What looks like a leftover test account ("tester") also sits on the Situs team and should be removed.
We classified every message on 1,563 Situs guest cards (Jan 2025 to Sep 2026) by language with a word-count rule, no paid model. Spanish prospects already write in Spanish on the card, so the conversation language can decide who gets the tour (inferred from the data), re-checked after the first real message. Asking is the fallback, not the default.
| Who replies to Spanish prospects today | First reply on Spanish cards | in Spanish | Spanish free-text messages, all cards |
|---|---|---|---|
| Miriam Gallegos | 34 | 25 | 160 |
| Deiby Magana | 24 | 17 | 91 |
| Michelle Pan (not on PropFlow) | 17 | 13 | 157 |
| Courtney Tolentino | 9 | — | 25 |
| Lee McKibbin | 8 | 1 | 10 |
| Of 113 Spanish-side cards: 84 answered in Spanish, 12 answered only in English, 17 never answered by a person. Situs already keeps Spanish templates (the "application received" one went out 127 times). | |||
Verified in the code at today's main, not from the design pages. The design pages describe fairness ranking, drive time and automatic re-hosting; none of that exists.
| Fact | Current state | New state |
|---|---|---|
| Tour-giver list | One ordered list per company; first is primary, rest are backups, any number. Not set at Situs. Not per building, not on the settings resolver. | Same list, each entry tagged with languages. Later, move it onto the resolver so a building can override (Gera's model). |
| Calendars | Attached to the person. Then the building calendar, else the company calendar. | Unchanged. Miriam's ask for "a general email or … leasing instead" maps to the company calendar, already supported; recommend not using it as the first stop, since it hides who is going. |
| Language | Prospect language is stored (en/es). Staff have no language field. Nothing reads language. | Staff language on the list entry; reorder step reads the prospect's firm language. |
| Distance | Not considered. | Not in this proposal. Buffer stays the lever (decision 5). |
| Rollout | — | Language routing is a new capability; decision 1 picks whether the language tags themselves are the switch or a company setting sits on top. Nothing else here needs a switch. |
Clara: no. None of her staff tools by text or voice can change who gives a tour, and email uses the same tools (inferred). A manager has a "Change tour host" button on the prospect page. It checks the new person is free and moves the invite, but it refuses leads synced from AppFolio, likely most Situs prospects (inferred), notifies nobody and writes nothing to the PMS.
Proposed cut: two small PRs, the tool plus the synced-lead lift, then the notices and the PMS note.
Superseded by the full design: When staff move, cancel or hand off a tour (Nov 1), which covers reassigning, moving with the prospect's yes, and cancelling.
Share of cards where the prospect wrote in Spanish or mixed, among cards with any prospect text. Spanish arrives by word of mouth, Facebook ads and walk-ins. The listing sites are almost entirely English.
| Lead source | Cards | With text | English | Spanish + mixed | Spanish share |
|---|---|---|---|---|---|
| Referral (tenant, resident, other) | 159 | 75 | 19 | 35 | 47% |
| Shared application link | 93 | 18 | 11 | 6 | 33% |
| Facebook ad | 136 | 85 | 41 | 27 | 32% |
| Drive-by / walk-in | 132 | 79 | 38 | 19 | 24% |
| Website | 154 | 83 | 51 | 9 | 11% |
| Rent.com | 62 | 18 | 12 | 1 | 6% |
| TurboTenant | 106 | 41 | 31 | 1 | 2% |
| Zillow (all) | 312 | 166 | 110 | 2 | 1% |
| Affordable Housing, Zumper, Realtor.com | 201 | 71 | 54 | 0 | 0% |
Rows do not sum to the 742 cards with text; the remainder is "unknown" (one-word replies) or minor sources. By building: Lampliter and Cottonwoods 30% Spanish, Barcelona 23%, the DU houses 0%. Spanish share fell from 22% of 2025 cards to 10% of 2026 cards. Source is a hint, not a rule: use the conversation language.
From the AppFolio property calendar and Showings report we captured on Sep 1 (held showings, cancellations removed), plus guest-card activity for who booked and when.
| # | Tour giver | Tours 2025 + 2026 | 2026 only | Properties | Weekend | Note |
|---|---|---|---|---|---|---|
| 1 | Miriam Gallegos | 290 | 84 | 18 | 59 | Share falling in 2026; 5 of the 6 double-bookings |
| 2 | Lee McKibbin | 238 | 103 | 18 | 0 | No weekend tours ever |
| 3 | Deiby Magana | 184 | 184 | 13 | 33 | Started Jan 31, 2026; 44% of 2026 tours |
| 4 | Eileen O'Malley | 44 | 33 | 11 | 0 | Mostly the DU houses |
| 5 | Lorraine Jimenez | 29 | 10 | 3 | 3 | Aspen Leaf, Olde Town |
| 6+ | Ryan Seaton, Matt Miller, unassigned | 6 | 4 |
Carr Street Flats (182), Barcelona (113) and Lampliter (88) are 48% of all tours; Carr Street sits under 1 km from Barcelona, Mckenzie and Zephyr, which is where most of the under-1-km hops are. Who books: Miriam 256, Courtney 223, Michelle 139, a shared "Assistant Lead" login 124, Deiby 98, Lee 66. Since late March, 79% of bookings were made by someone other than the giver. The AppFolio on-call calendar is the maintenance rota, not a leasing calendar; no tour giver is on it.
Live everywhere since the 12:22 AM deploy (Mountain time), no switch; it acts only when a host's neighbouring tour is at another property. At today's 30-minute buffer it moved nothing in either customer's replay; the change comes with the settings switch.
Drive-time map: measuring since 12:01 AM, 100 drives per company every 15 minutes, no failures. At 1:31 AM: Situs 700 of 1,122 (full near 2:45 AM), Western Slope 700 of 6,162 (near 3:15 PM); unmeasured pairs use the area's longest drive.
| Case | What happened | Result | Record ids (test tours, all cancelled after) |
|---|---|---|---|
| Times offered at a second home, by text (many-homes test line) | Host has tours at 118 Quillwood Lane Friday at 10:00 and 4:00. For 905 Elmgrove Terrace (25 min away, 27 at rush) Clara offered 9:00, 11:00–3:00, 5:00 and 5:30, leaving out 9:30, 10:30, 3:30 and 4:30, as expected | Pass | conversation 5b32ac3a; setup tours 58921e59, 22ec6382 |
| Asked for a time the drive rules out, by text | 10:30 → “10:30 isn't open, closest I've got is 11:00 AM or 11:30 AM” | Pass | — |
| Booked, by text | 5:00 PM booked with a calendar event; text “Tour confirmed · 484 Tracy Drive” (the test home's name; its street address is 905 Elmgrove Terrace) | Pass | tour 5fbabfdd; event …YAAAYt39oAAA= |
| Home next door (0 min) | At 146 Quillwood Lane only the two tour times were blocked, no drive gap | Pass | — |
| Time taken in between | After Elmgrove 2:30 was booked, a second prospect asked for 118 Quillwood at 2:00: “2:00 PM on Friday is already taken, but I've got 1:30 PM or 1:00 PM” | Pass | tour 64412215; conversation 03eb9b60 |
| By phone (robot caller; test listings moved onto each home's own property for the run, then restored) | With a tour at 118 Quillwood at 10:00, a call asking for Elmgrove Friday 10:30 heard “Ten-thirty isn't open on Friday, I've got nine a.m. or eleven-fifteen”. It took 9:00, booked on Elmgrove with a calendar event | Pass | setup tour 7ba919b9; tour 8c611170; event …YvX5ZAAA=; call conv_1601m5h8havzf2c82j5wam32j9q6 |
| The Willows and three test neighbours, live calendar (engine check, not a Clara conversation) | All 12 drives measured by 12:16 AM. Three tours booked first by real texts (Friday 1:00 and 3:30, Saturday 3:30). Friday: 12:30, 1:30, 3:00 and 4:00 refused at two neighbours by the drive; the farthest also refuses 2:30, because leaving at 3:00 is rush hour. Saturday it offers 2:30. The Willows itself unchanged; Clara's offers there matched | Match | tours f899e59f, b9f2d03b, 508e3f0b; conversation 6536d5f4 |
| Rush hour changing the answer in a Clara conversation | The test line's homes and 30-minute time steps cannot show it; the only evidence is the engine check above | Not run | — |
Unchanged where it does not act: Western Slope's 6,948 offered times, byte-identical before and after (read-only, real calendars). Situs's check could not read its calendars locally (production clean 48 h); it reruns when its map is full.
For the morning
Code: #21703, #21716, #21721 merged; #21729 merged (commit a5d0c8301, 2026-10-23 00:24Z). Follow-ups from review: #21948 (guest-card replay still reads the old listing field), #21949 (count offered homes with no property id). Fixes from the Oct 23 break-it replay, in flight as plain fixes with no switch: #22002 (company-wide line checks the named home's own hours and drive, issue #21995) and #22003 (staff calendar blocks that name a home get the drive gap, issue #21971). The settings switch at Western Slope waits for both.
Proposed — pending review Decided by Fede: 15-minute tours, drive-aware gap between homes ("both should be 15 with buffers for drive"; Fede, Oct 21, in session). Open for the morning: flat buffer 15 (V1) or 0 (V2), section 9. Live only after the drive check is proven. Also open: two choices below.
In this section: What they do today · The 11 short pairs · The rule · Replay · Offer or confirm · Build and prove · Willows run · Measuring · Sources
| Situs (AppFolio calendar, Jan 2025 – Sep 2026) | Western Slope (AppFolio showings, Sep 2025 – Sep 2026) | |
|---|---|---|
| What they told us | No length, gap or drive rule in 87 quotes from 7 meetings. The complaint: tours across town 15 minutes apart | No answer on file to the intake question about travel time between towns |
| Staff tour length | 15 min on 788 of 791 showings | 15 min (both showings in the one captured calendar week; the report has start times only) |
| Next tour, same home | Right after on 35 of 97 pairs, 15 min later on 34 | Start to start: 30 min on 22 of 42 pairs, 15 min on 2 |
| Next tour, different home | 15 min later on 60 of 231; right after on 34 (21 of them one prospect seeing two homes); same time on 6 | Start to start: never under 30 min; 45 or more on 75 of 79, an hour or more on 68 |
| Our settings today | 30-min tours, 30 between, typed by PropFlow admins Oct 12–13, not asked for by Situs | 30-min tours, 30 between, set by us during the September onboarding (no author stamp stored; the go-live tracker records Fede's go, Sep 17 and 18); no record of Western Slope asking for them |
| Tours Clara booked | None yet | 37 since Sep 19, all 30 min |
"they schedule a showing for somebody in Denver, and then 15 minutes later, they schedule a showing for something in Lakewood. Would Clara kind of help us with that?"
Miriam, Situs, Slack, Oct 16
Staff practice is the baseline to beat, not the target. On how tours get booked: "there's no Rhyme or Reason this" (Sep 1 meeting transcript, canvas F0BU63PCQ5T, paragraph 536; the speaker label, Eileen, is the transcript tool's inference).
Two different prospects, one host, two homes, and less time between the tours than the drive by over 5 minutes. 8 leave in the weekday rush (22–38 min drives), 5 of them with exactly Miriam's 15-minute gap. 3 are next-door homes booked at the same time.
Same home: the flat buffer. Different homes: the larger of the flat buffer and the drive, rounded up to 5 minutes; weekday departures from 3 to 6 PM use the rush number, fixed in code. Checked at offer and at confirm. Leaving from the office is out of scope: a slot is checked only against the host's tours before and after it that day, so the first tour of the day has no drive constraint.
"is it 15 minutes without traffic or 30 with traffic? And then adjust it that way."
Fede to Situs, Oct 20. Two stored numbers per pair, picked by the time of day, do this; it is not live traffic.
| # | Open choice | Recommend | Alternative | What the replay says | Why |
|---|---|---|---|---|---|
| a | No stored drive for a pair | The longest stored drive in the property's area: Situs 45; Western Slope's Grand Junction area 25 | A straight-line estimate; or refuse | Earlier rule: the longest drive pushes 4 Western Slope pairs, 0 Situs; refusing pushes 64 and 8. A straight line runs over 5 min low on 7 of 94 measured pairs | Never late; rare once every enabled property is measured |
| b | Meeting on the host's calendar with no home | An unknown place: row a's number on each side | The flat buffer on each side | No meetings in either export; cost only. Start times lost on each side of a meeting: Situs 3, Western Slope 2; flat buffer 1 | One rule for "we don't know where the host is" |
Shortening first is not an option. 15-minute tours with a flat 15 and no drive check let 5 of the 11 through. Length and gap change only after the check is proven.
"Pushed later" counts real two-people pairs, besides the 11, that a rule moves to a later quarter hour. Situs rows replay staff tours (Clara has booked none there); today's 30/30 refuses the 11 only by pushing 137 others.
| Rule | Situs pushed later | Western Slope staff | Western Slope Clara | Short pairs refused |
|---|---|---|---|---|
| Today: 30-min tours, flat 30 | 137* | 36 | 2 | 11 of 11 |
| Today plus the drive check (ships first, as a fix) | 139 | 36 | 2 | 11 of 11 |
| Flat 15, 15-min tours | 46 | 2 | 0 | 6 of 11 |
| Staff practice: no gap at the same home, 15 between homes | 12 | 0 | 0 | 6 of 11 |
| Staff practice plus the drive check | 13 | 4 | 0 | 11 of 11 |
| Earlier rule: 15-min tours, buffer = the drive, none at the same home or next door | 1 | 4 | 0 | 11 of 11 |
| Fede's rule: 15-min tours, flat 15, the drive when longer | 47 | 6 | 0 | 11 of 11 |
* 46 of these 137 overlap only because today's settings count Situs's 15-minute tours as 30.
Fede's rule pushes 47 Situs pairs, each by one quarter hour: 34 at the same home, which now keeps a flat 15, and 13 between homes, 12 of them hops that left the host up to 5 minutes late. Western Slope staff: 6 (2 at the same home, 4 with no stored drive). Section 9 replays a year of Situs tours under it.
Clara offers times; the prospect answers minutes or a day later, and meanwhile another tour can land next to the chosen time.
| Situs, 20 months | Reply after 15 min | After 2 h | After 24 h |
|---|---|---|---|
| Check at confirm only: extra replies | 7.5 simulated | 7.5 simulated | 7.5 simulated |
| Check when offering only: wrong bookings | 0 simulated | 0 simulated | 3.5 simulated |
| Both: extra replies (wrong bookings: 0 simulated) | 0 simulated | 0 simulated | 3.5 simulated |
Earlier rule. Medians of 20 runs; ranges 6–9 (confirm only), 0–2 (2 h), 0–6 (24 h). Western Slope staff, 24 h: 2 extra replies with both checks, simulated.
Build notes. The drive check ships as a fix with no switch: it changes nothing where no drive numbers are stored, and staff bookings skip it, as they skip the buffer today. One drive-time engine in one place: the two-homes-in-one-visit path uses it and loses its own drive code. The cases the code must pass before the replay: 15 real Situs pairs, the 11 short ones among them. The "that time was just taken" reply already works on all six booking paths (product pull request #21729 corrects the old code comment); step 3 of the Willows run checks it.
Proof, in order:
Willows at 15-minute tours with a flat 15, with test properties already measured into the drive-time map. From property A: B is over 15 minutes away, C is next door, and D's rush number flips the answer at a 4:30 PM departure. The host has tours at A ending 1:30 and 4:30 PM on a weekday. Clara must offer (example numbers):
| Times at | Host leaves A | Stored drive | Gap | First offered | Never offered |
|---|---|---|---|---|---|
| B | 4:30 PM | 18 min, 24 in the rush | 25 | 5:00 | 4:30, 4:45 |
| C, next door | 4:30 PM | 3 min | 15 | 4:45 | 4:30 |
| D | 4:30 PM | 12 min, 22 in the rush | 25 | 5:00 | 4:30, 4:45 |
| D | 1:30 PM | 12 min, outside the rush | 15 | 1:45 | 1:30 |
| Company | Properties | One-way drives | Fill time |
|---|---|---|---|
| Situs | 34 | 1,122 | ~3 h |
| Western Slope | 79 | 6,162 | ~16 h |
| Test company (Willows) | 11 | 110 | ~30 min |
About $24 once for all three: one Google traffic call per one-way drive, about 7,400 in all; 5,000 a month are free, then $10 per 1,000 (price pages read Oct 19 and Oct 21). A new property adds two drives per other enabled property. This pass made 0 Google calls.
Later, not now: offering times next to a host's other tours. Clara would offer first the open times closest by drive to the host's tours before and after, so a host's day bunches by area. It needs the same stored numbers, a ranking step in the offer list and its own replay; Fede, Oct 21, in session: for later, not part of decision 5.
Every tour in our records from Sep 23 to Oct 22, re-offered through the live booking engine at the moment it was booked, at today's 30/30 and at 15/0. Read-only.
| Western Slope | 30/30 | 15/0 |
|---|---|---|
| Tours (replayable) | 35 (27) | 35 (27) |
| Clara-booked | 27 | 27 |
| Same host, different home, same day | 8 | 8, all with room for the drive |
| Booked time refused | 7 | 5 |
| Worse answers | — | 0 |
| Errors | 0 | 0 |
Verdict: 15/0 is safe at Western Slope: nothing gets worse, two back-to-back staff bookings now fit, and nearly three times as many times are offered, mostly from the finer 15-minute grid. The 5 still refused: three staff picks inside the 60-minute lead time, one staff pick over a calendar block, one Saturday booked after the weekend cutoff.
| Situs | 30/30 | 15/0 |
|---|---|---|
| Tours / Clara-booked / cross-home pairs | 0 / 0 / 0 | 0 / 0 / 0 |
| Refused / worse / errors | n/a | n/a |
Verdict: no replay possible: we hold no Situs tours. At 15/0, staff showings get no gap until Clara books there.
Staff and live run: 7 of 7 staff bookings and moves still book at 15/0. Live on the test line at 15/0: two homes back to back, two tours 15 minutes apart at one home, and a tour 5 minutes after a manual calendar block: all booked. Sloppy staff texts got a question, never a booking. Two prospects racing for one slot: no double booking.
Broke: the company-wide line checks times against its catch-all property, not the home: the test company booked 8:15 AM at a home whose tours start at 9:00 (#21995). At Western Slope hours match, but main-line calls get the longest-drive padding. Offers abut Kat's calendar blocks at 15/0 (60 of 71, #21971). The gap after a two-home visit is measured from the first home (#21974; none at Western Slope).
Verdict: safe; the switch itself broke nothing. Flip after #21971 (it removes the pad around staff blocks). #21995 is live now at either setting.
Files: research/…/drive-policy-v2/replay-30d/. The planted 5-minute pair was refused, the far one offered.
| Source | Gave | Limits |
|---|---|---|
research/situs-tours-2026-10-19/drive-policy-v2/: every file below; inputs/README.md says how each input was pulled, read-only | All numbers in this section | Research folders are not served on this site |
inputs/situs/ | Situs showings from the AppFolio calendar, Jan 2025 – Sep 2026; event types in that calendar | No booking times, so Situs timing is simulated. No host's own calendar, so no meetings: open choice b is cost only |
inputs/ws-audit/ | Western Slope showings report, one calendar week, Clara tours | "Confirmation Time" is AppFolio's automatic confirmation about 2 hours before the showing, not the booking time, so staff booking times are simulated. The 15-minute length rests on that one week (2 showings). The Clara tours file holds 37 prospect names (private repo) |
inputs/code-audit/ | Listing records, where today's code stores drive minutes; the replay reads them | Western Slope: 20 records, 8 listed today. Most homes staff showed have none, so no stored drive; open choice a's 25 minutes covers them (the 4 pushed pairs) |
inputs/settings/ | Today's 30/30 at both companies; who typed Situs's (PropFlow admins, Oct 12–13, from the settings log) | Western Slope's record stores no author or date, and the settings log starts Sep 23, after its 30/30 was set; the go-live tracker is the only record of who. History stamps record who and when, never the value |
inputs/code-audit/drive_graph_counts.json: the drive-time map builder's read-only production read, Oct 21 (product pull request #21703, open) | Enabled properties and one-way drives per company: Situs 34 and 1,122, Western Slope 79 and 6,162, test company 11 and 110; up to 50 pairs per company per run | Counts move as properties are enabled or archived. The test company went from 8 to 11 when three Willows test properties were added for the end-to-end run |
../drive-policy/google-minutes.json (first pass) | Situs drive minutes for 55 building pairs; 38 rush samples (one Wednesday, 4:30 PM) | The rush file behind the earlier "25 pairs, Tue Oct 27" numbers was lost with a temporary folder. Other pairs use fixed factors, labelled factor-based. Western Slope has no rush samples |
pass2_ground_truth.py → pass2_ground_truth.json | What each customer does today | — |
pass2_rule.py, pass2_harness.py → pass2_harness-output.txt | The rule prototype behind the replay | A prototype, not product code, and not proof |
pass2_replay.py → pass2_replay.json and the three figures | Replay of the six rules, Fede's among them, plus today's 30/30 with the drive check in its own block (rollout_step1); open choices, offer or confirm | Western Slope Clara: 12 pairs, Sep 19 – Oct 21; today's row replays them at their real 30 minutes, the other rows at 15. Its 2 pairs pushed by today's rule both include a staff booking, and all four bookings predate the Oct 4 fix that made a named-time booking read a lone host's calendar; cause per booking not confirmed |
../G-customer-meetings-scheduling.md | Customer quotes, word for word | — |
Product code at main, Oct 21: tour-buffer.ts, check-availability.ts, listing-drive-time.ts, org-home-booking.ts | Today: a flat buffer at offer and at confirm; one no-traffic number per pair; drive read only for two homes in one visit | — |
Product code at main, Oct 21 (4362cd313d): src/lib/domain/leasing/tour/apply-tour-intent.ts, the comment at lines 1017–1031 | The six booking paths the comment names: one each in tools-leasing.ts and the voice post-transfer.ts, four in process-tour.ts (the text and email pipeline). The comment said they answer a taken time with a generic failure; it was stale: all six catch it | Line numbers move as the file changes. Product pull request #21729 corrects the comment, naming each path |
| This section's earlier version | Replaced by this one | It judged our own 30/30 settings and stretched 15-minute tours to 30; this version replays real lengths |
Held Situs showings, Jan 2025 to Sep 4 2026 (20 months, all used), as booked vs re-booked under tonight's rule, same order (simulated). Customer page for Situs: Clara update (their tours, what we built, the same tours booked the new way; V2 numbers, same home no gap).
| Metric | Their practice (measured) | The rule (simulated) | Verdict |
|---|---|---|---|
| 1. Late hops (gap shorter than the drive) | 23 of 189 (12%), 264 min short; 11 by more than 5 min; 13 rush, 10 off-peak. | 0; all 23 refused | Better |
| 2. Rush exposure (leave weekdays 3–6 PM) | 51 hops; 31 with a gap of 15 or less; 13 shorter than the rush drive | Rush number used; 0 short | Better |
| 3. Idle gaps (2 h or less, drive + 30 or more) | 62 gaps, 4,380 min | Room for 92 more tours | Same: demand, not the rule |
| 4. Capacity, 184 days with 2+ tours | 512 tours held | 476 fit in the same hours; 34 days end later (median 15 min, max 120) | Worse, −7% |
| 5. Refused though on time | Held fine | 35 (34 same-home back-to-back, 1 hop), +525 min;plus 12 hops late by 5 min or less | Worse |
Where the lost tours come from (simulated). Same home / hop gap: V1 15 / max(15, drive); V2 0 / max(15, drive); V3 0 / max(5, drive).
| V1 (decided Oct 21, under review) | V2 | V3 | |
|---|---|---|---|
| Late hops after re-booking (practice: 23) | 0 | 0 | 0 |
| Rush short | 0 | 0 | 0 |
| Tours that fit, of 512 on 184 busy days | 476 (−36) | 492 (−20) | 492 (−20) |
| Days ending later | 34 | 19 | 19 |
| Refused though on time | 35 | 1 | 1 |
| Minutes added, whole re-booking | 1,425 | 660 | 660 |
| Back vs V1: tours / on-time pairs | 0 / 0 | 16 / 34 | 16 / 34 |
The same-home 15 costs 16 of the 36 lost tours and 34 of the 35 on-time refusals; the other 20 are the price of fixing the 23 late hops. V3 equals V2: tours start on quarter hours, so the 12 hops late by 5 min or less still move to the next quarter hour. No late hop returns; mutation control red in all three.
| What they said (verbatim) | In the data |
|---|---|
| Miriam, Oct 16 (ts 1792178129.483969): "somebody in Denver, and then 15 minutes later ... Lakewood" | 54 Denver–Lakewood hops; 7 at 15 min or less; 4 could not be driven. All refused. |
| Eileen, Sep 1 (canvas ¶536): "I would stack them" | 255 of 767 tours (33%) alone in their day. The rule does not stack; it spaces 46 of 116 tight pairs. |
| Eileen, Sep 1 (¶518): "your time and your gas" | 3 out-and-back trips over 10 min. Unchanged. |
| Eileen, Oct 13 (ts 1791908611.045179): "Honestly, it like fluctuates" | Of 189 hops: 23 late, 45 with 0–15 min spare, 21 with 15–30, 100 with 30+. |
| Eileen, Sep 1 (¶512): "two back to back with a 15 minute break" | Most common gap: 15 (46 hops). |
Verdict: safer, a little slower. The rule removes all 23 late hops (13 at rush), but refuses 35 on-time pairs, mostly same-home back-to-back, and fits 476 of 512 tours in the same hours.
By host: Miriam 10, Deiby 5, Eileen 4, Lee 4. Caveats: their order kept; 6 rush numbers and 8 pairs estimated; no work orders or admin in the export; midday trades not measurable. Files: year-report/.
Proposed — pending review No, not at Situs. On 87 of 139 tour days in Feb–Sep 2026 only one person went out, so rarely was anyone else nearby. A nearer host was free for 3 of 189 hops between homes (8 counting any earlier tour that day): about 1 hour saved of 40 driven in 20 months, 1 of 23 late hops fixed (4 at most). Recommendation: keep one person's day plus the language order (section 4) and drive gap (section 8).
| Candidate rule | Matches who went | Note |
|---|---|---|
| Always Deiby (baseline) | 49% | |
| Area owner | 50% | Lee and Miriam take 44% of the West |
| Weekday rota | 50% | Only fixed fact: Lee never Saturdays |
| Home owner | 59% | Fitted to the same data, a ceiling |
| Spanish → Miriam or Deiby | 75% of 28 | 67% if language did nothing; 5 went to Lee |
| Whoever is already out that day | 66% | |
| Nearest host already out | 77% of 171 | 81% vs 50% when two were out (16) |
No owner by home, area or day: it is "whoever is already out", with Spanish as a soft first cut. Eileen: "Honestly, it like fluctuates" (Oct 13). Her stated rule (Oct 16, raw transcript): "if they speak Spanish, only Miriam and Davey can do the tour"; English split evenly between Lee and Deiby.
As in section 4: the first person on the list with a free slot owns the day. Nothing reads language or location to pick who. The drive map (all 34 Situs homes measured) sets only the gap between one person's tours.
| Nearer host free and on time | 20 months | 2026 |
|---|---|---|
| Hops between homes | 189 | 104 |
| Found: within the hour (any time) | 3 (8) | 2 (6) |
| Minutes saved, of driven | 58 (92) of 2,412 | 33 (66) of 1,249 |
| Late hops fixed | 1 (4) of 23 | 0 (2) of 13 |
| Denver–Lakewood fixed | 2 (4) of 54 | 1 (3) of 32 |
Production drive map (24 late hops on it, 23 on earlier numbers). "Free" = no AppFolio showing; their own calendars and midday trades are not in the export, so upper bounds. Work orders carry no staff name. Mutation control: 5 planted nearer hosts found, 5 busy twins rejected.
| Option | For Situs staff | Engine | Risk | Prove first |
|---|---|---|---|---|
| A. One person's day + language order + drive gap (recommended) | Predictable owner per day | Section 4 and decision 5; nothing new | A far hop stays with the owner, made on time by the gap | Section 8's Willows run, plus a Spanish prospect |
| B. Nearest free host per tour | Tours jump between people | Reverses Fede's primary-first rule (Sep 18, Oct 5) | The midday swaps Eileen blames for lost leads; uneven load; about 1 hour gained | No |
| C. Area owners | Lee West, Deiby East | Area tag per list entry | Not how they work (50%); breaks Spanish routing | No |
| D. A backup already out owns the day | Fewer people on the road | One tie-break; changes Fede's rule | Not measured | Replay, only if A leaves long hops |
Gera's model: company-level calendars, an explicit rotation per function (Fede, Sep 18). Every option is an order on that one list. Scripts and outputs sit in this page's research folder.
| Question | Answer (production, Nov 4) |
|---|---|
| Tour hours set for Situs? | Set Nov 4 at 5:35 PM MT (Fede: "set a reasonable policy from historical data"), company level, read back on two buildings: Mon–Fri 9:00–6:30 PM, Saturday 9:00–4:00 PM, Sunday closed. From 791 AppFolio showings Jan 2025–Sep 2026: weekday starts 9:00 to 6:30 (95th percentile 5:30–6:00 PM, latest 7:00 PM); Saturday 83 showings, starts 9:00 to 5:00, 95th percentile 3:00 PM, latest in 2026 4:00 PM; Sunday 13 in 20 months, 3 in 2026, none since March. Before this write nothing was set and Clara offered 9–5 seven days. Fede, Nov 4 evening: 6:30 PM "seems very late for the winter," but go with history (winter months show as late as summer: Feb 2026 had 13 of 30 weekday showings at or after 5 PM, latest 7 PM). To confirm with Situs at their Tuesday meeting: weekday close (6:30 PM from history, or earlier in winter) and Saturday 9–4. |
| Company office hours? | Set Oct 13: Mon–Fri 9–5, Saturday and Sunday closed. The hours sentence in texts and calls reads it; the tour offer and booking paths never do. So Clara says "closed Saturday" and offers Saturday tours in the same conversation. |
| The 9:30 we booked | Saturday Nov 7, 9:30–9:45 AM, Barcelona Apartments, host Deiby, booked by text Nov 4 at 2:13 PM MT after Clara offered "anytime between 9:00 AM and 4:45 PM" (tour 7febedf5…, conversation dce69fe6…). |
| Out of policy? | No stated policy exists. Inside the default; outside the office hours row; consistent with Situs practice (every weekend showing since May is Deiby's). Recommendation: keep it. Fix the cause by setting tour hours (section 62.9 on the leasing engine page, decision 3). |
| Lee's calendar | Google, connected Nov 4 at 2:00 PM MT. Lee is bookable from today. |
| Tour list | Oct 29: Deiby, Miriam, Lee. Nov 4, 5:08 PM MT: Lee, Deiby, Miriam (Fede: "put her as a primary tour giver"). Nov 4, 5:33 PM MT: Lee, Deiby, Miriam removed on Fede's word after Eileen's email. Two listed means Lee owns every day she has open time and Deiby covers her empty days; Miriam is never booked by Clara. Caveat: Lee has no Saturday tours in 238, so a Saturday ask goes to Lee unless her calendar blocks Saturdays. Both writes stamped (source names session 002, Nov 4). |
| Spanish routing | Not built: no language on staff, no language step in the host pick. Design: one rule with attributes, leasing engine page section 62.9. |
| Eileen's email (read Nov 4, 5:20 PM MT) | Nov 4, 1:09 PM MT, forwarding Clara's Nov 3 note to Miriam about the Lampliter 9:45 tour: "I love how well Clara is doing with these showings, but I don't want her scheduling Miriam. Miriam should be a last resort. Lee and Deiby are hired to do all the showings… I want to make sure we correct this next week." Fede replied: "most of the tours will be split between Deiby and Lee, with spanish going to Deiby." Eileen, 2:05 PM: "We just got Lee set up." Nothing about weekends or hours. Today's code cannot express "Lee and Deiby share, Miriam last resort": three listed makes Miriam a full host; two listed makes Lee own every day with Deiby only on her empty days. The tiered model (leasing engine page 62.9) is exactly this ask. |
| Sandbox run (Fairhaven) | Blocked, no booking proven. The list write path was exercised (add, read back, remove: all pass). Live messages never got an answer: (1) any email from the corporate test tenant is marked staff because it shares a domain with the Fairhaven mailbox (process-inbound-message.ts:1562, the "same email domain" proxy the Nov 3 sender rule forbids); (2) every prospect-capable test number is marked "no robot text" by Gera (Nov 2); (3) the Fairhaven line hit a model rate limit (429) from 4:16 PM MT, three attempts failed. One staff test text may still retry until 5:55 PM MT and could create a Fairhaven tour for "Rowan Testerly"; harmless, on the company calendar. |
Pick one per row. The recommendation is first.
| # | Decision | Options |
|---|---|---|
| 1 | Route tours by conversation language? A new capability; whether it needs its own setting is part of the choice. | A. Tag each person on the tour list with languages, matching speakers first; the tags are the switch (empty tags = today's behavior, no second setting; staff adding a tag turns routing on without a Fede press, which is the trade-off). A2. Same, plus a company setting default off that you turn on. B. A separate Spanish list tried first. C. Language as a skill on the building assignment (most Gera-shaped, most work). |
| 2 | Exception to "primary owns the day": a free Spanish speaker takes a Spanish prospect even when Lee is free. | Yes (it is what Eileen asked for) / No. |
| 3 | English order. | Lee, Deiby, Miriam (Lee primary is Gera's summary, which Eileen let stand; the order after Lee is inferred) / split Lee and Deiby evenly, as Eileen also said / confirm at their Tuesday leasing meeting. |
| 4 | Clara changes the tour giver by text, email or voice, synced leads included, with texts to both people and a PMS note. | Build it (the engine exists) / manager button only. |
| 5 | Drive time between homes (section 8). Decided by Fede: 15-minute tours at both companies, drive-aware gap between homes, read from a drive-time map between the company's properties (one record per direction, measured once). Live only after the drive check is proven. | Open for the morning: flat buffer 15 (V1) or 0 (V2), section 9. Two more choices, as recommended: no stored drive, or a meeting with no home, counts as the area's longest drive / change either. Then Situs and Western Slope move together from 30/30 to 15-minute tours with the chosen buffer: yes, after the read-only replay of both customers' tours and the end-to-end run at Willows / hold. |
| 6 | Set the Situs tour list to Lee, Deiby, Miriam and drop Courtney, so no tour lands on an assistant. Needs their calendars (Tuesday). | Do it as soon as they connect / wait for Hugo. |
| Source | What it gave | Caveat |
|---|---|---|
| #transcripts, raw threads | Sep 1 whiteboard, Oct 13 follow-up, Oct 16 Miriam and team onboarding | Sep 1 speaker labels reconstructed by AI; Oct 13 says only "Them"/"Me", speakers inferred. The local copy of Sep 1 is a summary only. |
| Production tables, read-only | Situs company, 53 go-live buildings, sign-in store | No stored last sign-in; sessions expire in 7 days, so dates are lower bounds. Courtney's Google permission for free/busy not checked. |
| Guest cards, Sep 1 robot dumps | 1,563 cards, leasing window only, language by word-count rule | 2% unknown on messages over 40 characters; 12 hand checks passed. Records who booked, not who gave the tour. |
| AppFolio property calendar + Showings report | 791 held showings, Jan 2025 to Sep 4 2026, assignee on all | Distances are straight-line, one point per property. 2026 is partial. Per-agent showing-availability windows were not captured. |
| Code at today's main | Pool, availability, booking, change host, staff tools | Design pages disagree with the code: fairness ranking, drive time and holds, per-building giver lists, automatic re-hosting and "trade a tour by text" are described but do not exist; "booking never reads a person's calendar" is out of date. Details in the working notes. |
PMS-in-adapters check: the decision path names no PMS. The tour's calendar-event field is named after Outlook even for Google; debt, not a blocker. Working notes: the five research reports and scripts are in the docs repo under research/situs-tours-2026-10-19/.