Skip to content

geofenced-personas

Fresh

Source: BIBLE.md (Phase 12 Phase 4, geofenced-personas 6 routes), ROADMAP.md (Phase 4.5)

If an account is "based in Dallas," everything matches: Dallas hours, Dallas IP range, Dallas-appropriate content references, Dallas weather-relevant activity patterns. Coherent geo-identity per persona across all sessions and platforms.

10 built-in city profiles

CityTimezoneIP rangeActive hours (local)
Dallas, TXAmerica/Chicagomarried IP in DFW8am-11pm
Miami, FLAmerica/New_Yorkmarried IP in MIA8am-12am
Orlando, FLAmerica/New_Yorkmarried IP in ORL9am-11pm
Tampa, FLAmerica/New_Yorkmarried IP in TPA8am-10pm
Austin, TXAmerica/Chicagomarried IP in AUS9am-12am
Houston, TXAmerica/Chicagomarried IP in HOU8am-11pm
Phoenix, AZAmerica/Phoenixmarried IP in PHX7am-10pm
Denver, COAmerica/Denvermarried IP in DEN8am-11pm
Atlanta, GAAmerica/New_Yorkmarried IP in ATL8am-11pm
Chicago, ILAmerica/Chicagomarried IP in ORD8am-11pm

Routes (6)

MethodRouteWhat
GET/geo-personas/profilesList built-in profiles
GET/geo-personas/:accountIdGet persona for an account
POST/geo-personas/assignAssign a city to an account
POST/geo-personas/check-coherenceCheck if an action matches the persona's geo
POST/geo-personas/simulate-driveGenerate a drive simulation for cross-city
GET/geo-personas/active-nowWhich accounts are within their active hours right now

Coherence check example

Before an action:

bash
curl -X POST http://localhost:4700/geo-personas/check-coherence \
  -H "Content-Type: application/json" \
  -d '{
    "accountId": "abc123",
    "actionLocation": "Houston, TX",
    "actionTime": "2026-05-20T14:32:00-05:00"
  }'

If the account is "Dallas" and the action is "Houston" at the same minute, the check fails (unless a drive simulation justifies it).

How it combines

flowchart TD
  P[Persona profile: Dallas, TX] --> PM[Proxy marriage: 1.2.3.4 DFW]
  P --> TZ[Timezone: America/Chicago]
  P --> H[Active hours: 8am-11pm CT]
  P --> CR[Content refs: Dallas, Cowboys, Mavs]
  P --> AC[Activity: Dallas weather, traffic, events]
  PM --> S[Session launch]
  TZ --> S
  H --> SC[Scheduler: only fire 8am-11pm CT]
  CR --> CG[content-gen prompts mention Dallas]
  AC --> WA[Warmup queries mention Dallas]