Rentv Sheet Enrich Refine
Search the build
-
956099c2026-08-31 team_vp.py: repoint VP_MODEL default muse-glimmer→qwen3:14b (TK-10980, muse removed) -
5e5158e2026-08-13 rentv :9797 status data: explicit junk-value drop-list (Cody fix — no over-broad heuristic) -
51390ef2026-08-13 rentv :9797 status data: strip enrichment-green mis-captures + trailing-char dup values -
4be38e72026-08-13 rentv :9797 legend: persist the 'more colors' fold state across re-renders (Cody fix) -
06105fe2026-08-13 rentv :9797 legend: fold the long tail of one-off color tints under a 'N more' toggle -
ddffc492026-08-13 Add derived 🔥 Warmth score column to RENTV live console + top-N export -
72a73122026-08-13 rentv :9797 legend: Cody fixes — sticky header (✕ stays visible on scroll) + Escape cancels a rename -
21e6af52026-08-13 rentv :9797 legend: close (✕/Esc/click-outside) + per-row ↺ reset for a rename -
46c2c4d2026-08-13 rentv :9797 legend: Cody fixes — empty-rename guard, mark heuristic guesses, don't nuke mid-edit -
aba95a92026-08-13 rentv :9797: add in-viewer Color Key legend panel (🎨 Colors) — swatch + count + editable provisional name -
60e8dcd2026-08-13 auto-data-snapshot: 2026-08-13T18:37:41 (1 data files) — __pycache__/snapshot.cpython-314.pyc -
707c9b12026-08-13 rentv :9797 exact-colors: Cody fixes — readable text on painted link/mail/phone cells, saved-flash survives, drop ghost near-whites -
1c5e0922026-08-13 FIX write off-by-hr: 9 tabs have a title row above the header (hr=1) so write_cell's hardcoded row0+1 wrote to the HEADER row instead of the data row. Snapshot now stores hr per tab; write_cell targets hr+1+row0. Verified against live sheet (retail panel / ARIZONA BROKERAGE etc.). -
8150eeb2026-08-13 Live console: guard drag-to-fill against phantom writes — native text-selection drags inside editable cells are now ignored on drop (intentional value-cell drags + external drops still write) -
b159bca2026-08-13 FIX critical data-corruption: combined/multi-sheet view writes went to the wrong tab/row/column (postWrite sent stale GID + combined indices). Server now reverse-maps combined (row,union-col) -> source (gid,tab-row,tab-col); client sends DATA.gid+gids. Verified exact on 157/157 sampled cells. -
ca6b2ac2026-08-13 rentv :9797: paint EXACT original sheet cell colors in the grid (restore lost color-coding) -
95c5ba32026-08-13 Live console: show Last Modified date+time directly under the Status chip; stamp it on status-pick and drag-drop writes too -
fe7b5662026-08-13 Live console: row-number gutter down the left; drag-to-fill — drop a value onto any field to replace it in the sheet (Notes appends instead of replacing) -
10980752026-08-13 rentv :9797 draft composer: richer Follow-up (thank-you + questions + scheduling options) -
dfed2332026-08-13 Live console: email cells are now clickable mailto links; color-coded Status field (colors pulled from the sheet) + click-to-set status picker that writes the value to the sheet -
00fc8a62026-08-13 Live console: Width presets (Tight/Cozy/Wide/Fit + auto-refit on window resize) + Text size S/M/L, replacing the raw density slider; fix column drag-to-reorder (preventDefault stops text-selection hijack) -
2a219962026-08-13 Live console: FORCE grouping off on every load (kills the black sub-sort header bars for good; was persisting via localStorage) -
5e82fcf2026-08-13 Live console: turn OFF grouping (removes the unwanted black header bars; one-time reset, Group dropdown still available); readable theme-aware scrollbars for night mode -
e2b2b9e2026-08-13 Draft drawer: contact data on a white card (crisp links, not blue-on-black); fix broken Contact-via control -> real mail/LinkedIn/phone SVG icons + full-width segmented control -
c5739ce2026-08-13 Live console: theme-aware interaction colors (no more black-on-black in day mode); soften group headers from black bars to tinted band; default to OS light/dark -
4ff3c022026-08-13 Live console: Website/LinkedIn/phone cells are now WHOLE-CELL clickable (leading icon never clipped) — opens popup / dials; text cells stay editable -
1bff2a82026-08-13 Live console: click a field in the left rail to open its full value lookup in the main table area (search + multi-select to filter) -
44d26872026-08-13 Live console: icons open Website/LinkedIn in a popup window (contenteditable was swallowing clicks); Notes cells expand-on-click -
15117d12026-08-13 Live console: real SVG phone/website/LinkedIn icons + value-as-plaintext links; persist density; harden phone-vs-domain detection -
58c60562026-08-13 Server: send no-store/no-cache headers so the browser always loads the latest console (kills the stale-cache 'doesn't work' after every update) -
775dcab2026-08-13 Left-panel Sheets selector: check 1..all sheets by name (with row counts); multi-select shows COMBINED data via /api/combined (union columns by header, Sheet Name leads, green remapped); click a name = only that sheet; All/None; layout persists per-view -
58db3f62026-08-13 Composer: wider default (620px) + drag left edge to resize/expand drawer (persists), taller flex-grow draft body, field values wrap fully so nothing truncates -
ff8d35a2026-08-13 Phone UX: number renders as plain text + a 📞 call icon beside it (tel: link on the icon, not the number); applies to every phone field across all tabs (Phone 1-4, Phone(s), Company Phone) -
a8e04122026-08-13 Remove jumpy 'Wider' bulk button (bumped all cols +60 -> lurched table 1000px+ right); keep 'Fit to content' + 'Reset'. Phone split verified populating Phone 1/2/3 from multi-number Phone(s) -
2c2d33c2026-08-13 Fix width-weird-on-click: table width = exact sum of column widths (absolute, no proportional re-scaling); resize re-renders once on release. Verified stable across sort/filter/view clicks via click-through -
10ea7732026-08-13 Smooth column resize: drag a guide line (no per-frame 2500-row reflow), apply width once on release; resize cursor + wider grab handle. Fixes jolty resize UX -
a43fc1d2026-08-13 Left panel: column controls — '⤢ Fit all' (auto-expand every column to content), '↔ Wider' (+60px each), '↺ Reset' (clear widths+order) -
f54646e2026-08-13 Field reorder = drag (removed up/down buttons): left FIELDS rows have a grip to drag-reorder; table header drag + panel drag share one reorder() that syncs BOTH views; column order persists per tab. Also: split Phone(s) into Phone 1-4 columns (tap-to-call) -
d4ebb5d2026-08-13 Left FIELDS panel: per-field move up/down controls that reorder table columns (self-wiring renderFields + moveField, order persists per tab); shows fields in current column order -
0f87d752026-08-13 Console: default column order pulls First Name + Last Name up right after Contact Name so they're visible without scrolling (only when user has no saved order) -
eb719072026-08-13 Add 'Sheet Name' as first column on every tab, populated with the tab title on every record (non-destructive insert); phone cells tap-to-call (tel: links); composer phone option = full spoken phone pitch -
43cf3682026-08-13 Console layout: FREEZE header row (border-collapse:separate + #wrap scroll container makes sticky thead work) + MOVE columns via reliable manual drag (5px threshold, click=sort/drag=reorder, persists per tab) + resize/autofit; all layout state (width+order) auto-saves per user -
c6e12e82026-08-13 All LinkedIn + Website cells href to exact site: cellRender links any URL/domain (not just http-prefixed); snapshot reads FORMULA render to recover URLs from =HYPERLINK(...,'LinkedIn') label cells (533/533 MVP LinkedIn now linked). Columns: resize-drag on every column + double-click-to-autofit + hover-title full content -
6f48a2b2026-08-13 Console: resizable columns (drag edge, persists per tab via colgroup+table-layout:fixed) + night/day theme toggle (persisted) + confirm LinkedIn cells href to exact company/profile URL -
ea0de542026-08-13 Sort: blanks sink to bottom so real Last Names lead A->Z -
e9851ab2026-08-13 Console: default sort = Last Name ascending on tab load -
4ad282d2026-08-13 5x sweep: default landing tab = Unique Contacts (was tab[0] = tiny Color Legend, looked 'not working'); suppress favicon 404 -
ef8ce092026-08-13 Rearchitect console: serve from OUR OWN local snapshot (snapshot.py, whole workbook in ~3 batch reads) instead of live-reading the sheet per tab-switch — kills the 60/min Sheets read-quota that blanked tabs (tab reads 0.9s->0.001s); rebuilt UI with full left filter panel (search + sort + group + density + per-field toggles + per-value click-to-filter facets), List/Table/Grid, live write-back + snapshot patch, /api/refresh; smart header-row detection for title-row tabs -
48eb1722026-08-13 Split Contact Name -> First Name + Last Name across ALL 19 name-bearing tabs (parallel, quota-safe values+green writes, auto grid-expand); handles Contact Name/Contact Name(s)/Contact variants + title-row headers -
0d5bb2d2026-08-13 auto-data-snapshot: 2026-08-13T13:27:38 (3 data files) — data/ocbatches/oc_07_li.json data/ocbatches/oc_08_li.json data/ocbatches/oc_09_li.json -
f2b7ed72026-08-13 Generative email inference: learn each company's email convention from known emails, infer 800 likely emails (560 pattern-detected, 240 default) into flagged 'Likely Email (inferred)' column -
afcba932026-08-13 Fold 257 unenriched companies into the loop: append 312 contact rows to master + derive 1152 websites; regenerate 138 contact batches (4137 contacts) -
b039b022026-08-13 Contact-level enrichment: write_by_contact.py (per-person company+name match) + CONTACT_INSTRUCTIONS + 135 batches (4025 contacts) for the LinkedIn/email yoloforever loop -
6916f762026-08-13 auto-data-snapshot: 2026-08-13T12:57:05 (1 data files) — data/ocbatches/oc_03_li.json -
50ef1572026-08-13 Live Console: reflect enriched (green) cells — /api/format reads Sheets cell backgroundColor (14236 green in master), UI tints enriched cells + legend chip; newly-edited cells mark green live -
45a7dba2026-08-13 RENTV Live Console: two-way live Sheet viewer (pull+green write-back) over lib.py; Nav Agent grid chrome (left field panel/sort/group/density/movable) + List/Table/Grid; click-to-draft composer with channel-adaptive letters (email/LinkedIn/phone) + local-AI enhance; pm2 rentv-live-console :9797 -
cd3467b2026-08-13 session close: openclaw first slice landed (+31 company-LI, 724 total); grind batches oc_00-12 saved for resume; back-to-back VP waves proven rate-limited (scheduled cadence only) -
9f7bbd02026-08-13 openclaw company-LI grind (oc_run.sh + 669 untried has-website-no-LI batches); local $0 fallback while VP agent-limiter cools -
15763242026-08-13 VP wave vp_10-15: +24 marketing VPs (118/1734 cos); split_mvp.py reusable splitter; Cody-gated scope caveats on 4 enterprise/hybrid entries -
4f042f72026-08-13 auto-data-snapshot: 2026-08-13T11:55:54 (59 data files) — VP_INSTRUCTIONS.md __pycache__/team_vp.cpython-314.pyc data/vpbatches/vp_01.json data/vpbatches/vp_02.json data/vpbatches/vp_03.json -
99831252026-08-13 LOCAL $0 pipeline: openclaw company-LinkedIn (local_li.py) + continuous runner (run_local.sh); replaces rate-limited Exa -
e30cac52026-08-13 propagate to Sheet2 venues (7317) + Locations; all company/venue tabs enriched -
3a1c93d2026-08-13 propagate master enrichment (websites/phones/LinkedIn/Marketing-VP split/Why) to ALL company-bearing tabs -
7de7dbb2026-08-13 master: 770 company phones from $0 website scrape written (1933 cells) -
27fa73a2026-08-13 master: split Marketing/VP into Name/Position/LinkedIn/Phone cols (441 parsed); apply_phones.py staged -
94e653b2026-08-13 master enrichment: registered Unique Contacts tab, +websites(3230)+ported 56 cos; phone_scrape.py ($0 website phone harvester) -
53573362026-08-13 auto-data-snapshot: 2026-08-13T10:54:53 (51 data files) — AGENT_INSTRUCTIONS.md __pycache__/enrich.cpython-314.pyc data/spbatches/sp_01.json data/spbatches/sp_02.json data/spbatches/sp_03.json -
f5ee3252026-08-13 FIX: name-matched writer (row-shift immune); reset+re-applied Strong Prospects 28 cos by name (0 mismatches) -
0c993412026-08-13 header-driven writer + Why(Marketing/VP) rationale column; Event Sponsors Layer-2 complete (30 LI, 22 marketing/VP+why) -
b91ae602026-08-13 Layer 2 sweep harness: Updated Email column, contact-aware batches, shared writer + agent instructions -
bca1d012026-08-13 provenance: contacts sourced from Steve Bloom / RENTV spreadsheets (SOURCES.md + realestate.data_provenance + memory) -
3315bbc2026-08-13 Layer 2 sample (12 cos): LinkedIn company/contact hyperlinks + Marketing/VP leads via Exa, green, honest blanks -
9d158db2026-08-13 Layer 1 complete: collision-proof column placement (live-detected), 1282 websites filled green across 3 revenue tabs; reset+re-mapped Strong Prospects/Event Sponsors -
36613442026-08-13 Layer 1 LIVE: websites + 4 new cols (Website/LinkedIn Co/LinkedIn Contact/Marketing-VP) filled green across 3 revenue tabs -
f280a732026-08-13 enrich Layer 1: website-from-email-domain engine + dry-run (1281 websites derivable $0) -
915689c2026-08-13 scaffold: Sheets API connect + stdlib read/write lib with light-green fill marking
Authors
- Steve71
- auto-commit-fleet5
Agents used
Skills used
- /phone6
- /ocbatches4
- /combined3
- /mail3
- /vpbatches3
- /spbatches3
- /down2
- /resetting1
- /section1
- /reset1
- /click-outside1
- /provisional1
- /heuristic1
- /yellow1
- /snapshot1
- /cyan1
- /multi-sheet1
- /row1
- /column1
- /dark1
- /website1
- /no-cache1
- /expand1
- /filter1
- /view1
- /drag1
- /autofit1
- /domain1
- /day1
- /profile1
Creative ideas + design notes
5e5158e · 2026-08-13 · rentv :9797 status data: explicit junk-value drop-list (Cody fix — no over-broad heuristic)
Replaced the GREENISH-regex + trailing-char-dedup heuristics (which could false-drop a legitimate sage-green status color or a real value like 'Tier2') with an explicit BAD_VALS=['Active / Contacted3'] key-drop. Precise, can't misfire on real data. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
51390ef · 2026-08-13 · rentv :9797 status data: strip enrichment-green mis-captures + trailing-char dup values
The learned status_colors/status_values were polluted: 'Active / Contacted3' (a stray-digit dup of 'Active / Contacted') carrying #cae6b4 (enrichment green mis-read as a status color). loadMeta now filters greenish status colors + trailing-char near-dup values client-side, so the status picker shows the 7 clean canonical values, no junk. Self-contained, reversible. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4be38e7 · 2026-08-13 · rentv :9797 legend: persist the 'more colors' fold state across re-renders (Cody fix)
Expanding the one-off-colors fold then renaming/resetting a color re-rendered the panel and silently collapsed it. A module-scope _minorOpen now remembers the fold state and restores it after each render. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
06105fe · 2026-08-13 · rentv :9797 legend: fold the long tail of one-off color tints under a 'N more' toggle
Legend now shows the meaningful colors (count>=15 OR grounded name) up front and collapses the ~20-30 low-count one-off tints (header/section shading) under a click-to-expand fold — Sheet2 goes from 34 rows to 13 shown + 21 folded. Row template factored to a helper; all rename/reset handlers still wired across primary+minor. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ddffc49 · 2026-08-13 · Add derived 🔥 Warmth score column to RENTV live console + top-N export
- warmth.py: shared scorer (appearances + status intent + Strong-Prospect + reachability) - live_server.py: augment tab()/combined() responses; guard write_cell against the derived col - index.html: numeric-aware sort, read-only heat-pill cell, default sort = Warmth desc - export_top.py: ranked 'top-N to work' CSV using the same scorer
72a7312 · 2026-08-13 · rentv :9797 legend: Cody fixes — sticky header (✕ stays visible on scroll) + Escape cancels a rename
- .lghead now position:sticky + ✕ floats within it, so the close button no longer scrolls out of view on tabs with many colors - Escape sets a _legEsc flag before closeLegend so the blur handler does NOT commit a half-typed rename (Escape = cancel, not save) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
21e6af5 · 2026-08-13 · rentv :9797 legend: close (✕/Esc/click-outside) + per-row ↺ reset for a rename
Completes the Color Key UX + fixes Cody's 'no recovery path' for a bad rename: a renamed color now shows ↺ to clear the localStorage override back to its grounded/provisional name; panel closes via ✕, Escape, or clicking outside (consistent with the status picker). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
46c2c4d · 2026-08-13 · rentv :9797 legend: Cody fixes — empty-rename guard, mark heuristic guesses, don't nuke mid-edit
- onblur only saves a NON-empty name (empty no longer permanently overrides CNAMED/heuristic) - provName getter ignores an empty stored name - non-grounded (heuristic) names render dim-italic + a grey '?' so a guess is never shown as fact - renderLegend() skips rebuild while a name is being edited (no mid-edit data loss on tab switch) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
aba95a9 · 2026-08-13 · rentv :9797: add in-viewer Color Key legend panel (🎨 Colors) — swatch + count + editable provisional name
Reads the client COLORS map for the loaded tab, tallies distinct exact colors, shows each with a swatch, hex, cell-count and a grounded provisional meaning (blue=Contacted, green=Has email, magenta=Needs email, cyan/yellow flagged ❓ awaiting Steve). Names are click-to-rename, persisted to localStorage — reversible, NO sheet write. Addresses Cody's 'color chaos with no key' note. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
707c9b1 · 2026-08-13 · rentv :9797 exact-colors: Cody fixes — readable text on painted link/mail/phone cells, saved-flash survives, drop ghost near-whites
- link/mail/phone cells now get bg+auto-contrast text via --xtext var + td.xcol CSS (!important) so accent-blue link text isn't unreadable on magenta/cyan fills - td.saved flash forced !important so a write-confirm still shows on colored cells - hexc() skips near-white greyscale ghosts (#f3f3f3 etc, invisible on panels); keeps #e6e6e6+ Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
b159bca · 2026-08-13 · FIX critical data-corruption: combined/multi-sheet view writes went to the wrong tab/row/column (postWrite sent stale GID + combined indices). Server now reverse-maps combined (row,union-col) -> source (gid,tab-row,tab-col); client sends DATA.gid+gids. Verified exact on 157/157 sampled cells.
Found via yoloforever loop (Cody red-team + in-process DTD). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ca6b2ac · 2026-08-13 · rentv :9797: paint EXACT original sheet cell colors in the grid (restore lost color-coding)
snapshot.py now captures every non-white, non-enrichment-green cell's exact hex per tab (colors map); live_server tab()/combined() pass it through; cellTD paints each cell its real sheet background (bg-only on link/mail/phone, bg+auto-contrast text on plain). No legend names needed, no sheet write — the human color-coding is visible again. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1098075 · 2026-08-13 · rentv :9797 draft composer: richer Follow-up (thank-you + questions + scheduling options)
Follow-up purpose now has its own copy across Email/LinkedIn/Phone: thanks them for taking the time to review, asks 2-3 tailored questions, and offers creative next steps (15-min call windows, 'name a better week' follow-up date, one-pager). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
dfed233 · 2026-08-13 · Live console: email cells are now clickable mailto links; color-coded Status field (colors pulled from the sheet) + click-to-set status picker that writes the value to the sheet
- snapshot.py: extract Status(color) value->color map + canonical value list from cell fills - live_server.py meta(): expose status_field/status_colors/status_values - UI: colored status chips + picker popover, email mailcell Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
File tree
- .gitignore
- AGENT_INSTRUCTIONS.md
- CONTACT_INSTRUCTIONS.md
- SOURCES.md
- VP_INSTRUCTIONS.md
- __pycache__/enrich.cpython-314.pyc
- __pycache__/export_top.cpython-314.pyc
- __pycache__/lib.cpython-314.pyc
- __pycache__/live_server.cpython-314.pyc
- __pycache__/snapshot.cpython-314.pyc
- __pycache__/team_vp.cpython-314.pyc
- __pycache__/warmth.cpython-314.pyc
- add_lastmod.py
- add_sheetname.py
- apply_phones.py
- connect.py
- data/batches/batch_01.json
- data/batches/batch_02.json
- data/batches/batch_03.json
- data/batches/batch_04.json
- data/batches/batch_05.json
- data/batches/batch_06.json
- data/batches/batch_07.json
- data/batches/batch_08.json
- data/batches/batch_09.json
- data/batches/batch_10.json
- data/batches/batch_11.json
- data/batches/batch_12.json
- data/batches/batch_13.json
- data/batches/batch_14.json
- data/batches/batch_15.json
- data/batches/batch_16.json
- data/batches/batch_17.json
- data/batches/batch_18.json
- data/batches/batch_19.json
- data/batches/batch_20.json
- data/batches/batch_21.json
- data/batches/batch_22.json
- data/batches/batch_23.json
- data/batches/batch_24.json
- data/batches/batch_25.json
- data/batches/batch_26.json
- data/batches/batch_27.json
- data/batches/batch_28.json
- data/batches/batch_29.json
- data/batches/batch_30.json
- data/batches/batch_31.json
- data/batches/batch_32.json
- data/batches/batch_33.json
- data/batches/batch_34.json
- data/batches/batch_35.json
- data/batches/batch_36.json
- data/batches/batch_37.json
- data/batches/batch_38.json
- data/batches/batch_39.json
- data/contactbatches/ct_000.json
- data/contactbatches/ct_001.json
- data/contactbatches/ct_002.json
- data/contactbatches/ct_003.json
- data/contactbatches/ct_004.json
- data/contactbatches/ct_005.json
- data/contactbatches/ct_006.json
- data/contactbatches/ct_007.json
- data/contactbatches/ct_008.json
- data/contactbatches/ct_009.json
- data/contactbatches/ct_010.json
- data/contactbatches/ct_011.json
- data/contactbatches/ct_012.json
- data/contactbatches/ct_013.json
- data/contactbatches/ct_014.json
- data/contactbatches/ct_015.json
- data/contactbatches/ct_016.json
- data/contactbatches/ct_017.json
- data/contactbatches/ct_018.json
- data/contactbatches/ct_019.json
- data/contactbatches/ct_020.json
- data/contactbatches/ct_021.json
- data/contactbatches/ct_022.json
- data/contactbatches/ct_023.json
- data/contactbatches/ct_024.json
- data/contactbatches/ct_025.json
- data/contactbatches/ct_026.json
- data/contactbatches/ct_027.json
- data/contactbatches/ct_028.json
- data/contactbatches/ct_029.json
- data/contactbatches/ct_030.json
- data/contactbatches/ct_031.json
- data/contactbatches/ct_032.json
- data/contactbatches/ct_033.json
- data/contactbatches/ct_034.json
- data/contactbatches/ct_035.json
- data/contactbatches/ct_036.json
- data/contactbatches/ct_037.json
- data/contactbatches/ct_038.json
- data/contactbatches/ct_039.json
- data/contactbatches/ct_040.json
- data/contactbatches/ct_041.json
- data/contactbatches/ct_042.json
- data/contactbatches/ct_043.json
- data/contactbatches/ct_044.json
- data/contactbatches/ct_045.json
- data/contactbatches/ct_046.json
- data/contactbatches/ct_047.json
- data/contactbatches/ct_048.json
- data/contactbatches/ct_049.json
- data/contactbatches/ct_050.json
- data/contactbatches/ct_051.json
- data/contactbatches/ct_052.json
- data/contactbatches/ct_053.json
- data/contactbatches/ct_054.json
- data/contactbatches/ct_055.json
- data/contactbatches/ct_056.json
- data/contactbatches/ct_057.json
- data/contactbatches/ct_058.json
- data/contactbatches/ct_059.json
- data/contactbatches/ct_060.json
- data/contactbatches/ct_061.json
- data/contactbatches/ct_062.json
- data/contactbatches/ct_063.json
- data/contactbatches/ct_064.json
- data/contactbatches/ct_065.json
- data/contactbatches/ct_066.json
- data/contactbatches/ct_067.json
- data/contactbatches/ct_068.json
- data/contactbatches/ct_069.json
- data/contactbatches/ct_070.json
- data/contactbatches/ct_071.json
- data/contactbatches/ct_072.json
- data/contactbatches/ct_073.json
- data/contactbatches/ct_074.json
- data/contactbatches/ct_075.json
- data/contactbatches/ct_076.json
- data/contactbatches/ct_077.json
- data/contactbatches/ct_078.json
- data/contactbatches/ct_079.json
- data/contactbatches/ct_080.json
- data/contactbatches/ct_081.json
- data/contactbatches/ct_082.json
- data/contactbatches/ct_083.json
- data/contactbatches/ct_084.json
- data/contactbatches/ct_085.json
- data/contactbatches/ct_086.json
- data/contactbatches/ct_087.json
- data/contactbatches/ct_088.json
- data/contactbatches/ct_089.json
- data/contactbatches/ct_090.json
- data/contactbatches/ct_091.json
- data/contactbatches/ct_092.json
- data/contactbatches/ct_093.json
- data/contactbatches/ct_094.json
- data/contactbatches/ct_095.json
- data/contactbatches/ct_096.json
- data/contactbatches/ct_097.json
- data/contactbatches/ct_098.json
- data/contactbatches/ct_099.json
- data/contactbatches/ct_100.json
- data/contactbatches/ct_101.json
- data/contactbatches/ct_102.json
- data/contactbatches/ct_103.json
- data/contactbatches/ct_104.json
- data/contactbatches/ct_105.json
- data/contactbatches/ct_106.json
- data/contactbatches/ct_107.json
- data/contactbatches/ct_108.json
- data/contactbatches/ct_109.json
- data/contactbatches/ct_110.json
- data/contactbatches/ct_111.json
- data/contactbatches/ct_112.json
- data/contactbatches/ct_113.json
- data/contactbatches/ct_114.json
- data/contactbatches/ct_115.json
- data/contactbatches/ct_116.json
- data/contactbatches/ct_117.json
- data/contactbatches/ct_118.json
- data/contactbatches/ct_119.json
- data/contactbatches/ct_120.json
- data/contactbatches/ct_121.json
- data/contactbatches/ct_122.json
- data/contactbatches/ct_123.json
- data/contactbatches/ct_124.json
- data/contactbatches/ct_125.json
- data/contactbatches/ct_126.json
- data/contactbatches/ct_127.json
- data/contactbatches/ct_128.json
- data/contactbatches/ct_129.json
- data/contactbatches/ct_130.json
- data/contactbatches/ct_131.json
- data/contactbatches/ct_132.json
- data/contactbatches/ct_133.json
- data/contactbatches/ct_134.json
- data/contactbatches/ct_135.json
- data/contactbatches/ct_136.json
- data/contactbatches/ct_137.json
- data/mbatches/m_01.json
- data/mbatches/m_02.json
- data/mbatches/m_03.json
- data/mbatches/m_04.json
- data/mbatches/m_05.json
- data/mbatches/m_06.json
- data/mbatches/m_07.json
- data/mbatches/m_08.json
- data/mbatches/m_09.json
- data/mbatches/m_10.json
- data/mbatches/m_11.json
- data/mbatches/m_12.json
- data/mbatches/m_13.json
- data/mbatches/m_14.json
- data/mbatches/m_15.json
- data/mbatches/m_16.json
- data/mbatches/m_17.json
- data/mbatches/m_18.json
- data/mbatches/m_19.json
- data/mbatches/m_20.json
- data/mbatches/m_21.json
- data/mbatches/m_22.json
- data/mbatches/m_23.json
- data/mbatches/m_24.json
- data/mbatches/m_25.json
- data/mbatches/m_26.json
- data/mbatches/m_27.json
- data/mbatches/m_28.json
- data/mbatches/m_29.json
- data/mbatches/m_30.json
- data/mbatches/m_31.json
- data/mbatches/m_32.json
- data/mbatches/m_33.json
- data/mbatches/m_34.json
- data/mbatches/m_35.json
- data/mbatches/m_36.json
- data/mbatches/m_37.json
- data/mbatches/m_38.json
- data/mbatches/m_39.json
- data/mbatches/m_40.json
- data/mbatches/m_41.json
- data/mbatches/m_42.json
- data/mbatches/m_43.json
- data/mbatches/m_44.json
- data/mbatches/m_45.json
- data/mbatches/m_46.json
- data/mbatches/m_47.json
- data/mbatches/m_48.json
- data/ocbatches/oc_00.json
- data/ocbatches/oc_00_li.json
- data/ocbatches/oc_01.json
- data/ocbatches/oc_01_li.json
- data/ocbatches/oc_02.json
- data/ocbatches/oc_02_li.json
- data/ocbatches/oc_03.json
- data/ocbatches/oc_03_li.json
- data/ocbatches/oc_04.json
- data/ocbatches/oc_04_li.json
- data/ocbatches/oc_05.json
- data/ocbatches/oc_05_li.json
- data/ocbatches/oc_06.json
- data/ocbatches/oc_06_li.json
- data/ocbatches/oc_07.json
- data/ocbatches/oc_07_li.json
- data/ocbatches/oc_08.json
- data/ocbatches/oc_08_li.json
- data/ocbatches/oc_09.json
- data/ocbatches/oc_09_li.json
- data/ocbatches/oc_10.json
- data/ocbatches/oc_10_li.json
- data/ocbatches/oc_11.json
- data/ocbatches/oc_11_li.json
- data/ocbatches/oc_12.json
- data/ocbatches/oc_12_li.json
- data/ocbatches/oc_next.json
- data/ocbatches/oc_next_li.json
- data/spbatches/sp_01.json
- data/spbatches/sp_02.json
- data/spbatches/sp_03.json
- data/spbatches/sp_04.json
- data/spbatches/sp_05.json
- data/spbatches/sp_06.json
- data/spbatches/sp_07.json
- data/spbatches/sp_08.json
- data/spbatches/sp_09.json
- data/spbatches/sp_10.json
- data/spbatches/sp_11.json
- data/spbatches/sp_12.json
- data/spbatches/sp_13.json
- data/spbatches/sp_14.json
- data/spbatches/sp_15.json
- data/spbatches/sp_16.json
- data/spbatches/sp_17.json
- data/spbatches/sp_18.json
- data/spbatches/sp_19.json
- data/spbatches/sp_20.json
- data/spbatches/sp_21.json
- data/spbatches/sp_22.json
- data/spbatches/sp_23.json
- data/spbatches/sp_24.json
- data/spbatches/sp_25.json
- data/spbatches/sp_26.json
- data/spbatches/sp_27.json
- data/spbatches/sp_28.json
- data/spbatches/sp_29.json
- data/spbatches/sp_30.json
- data/spbatches/sp_31.json
- data/spbatches/sp_32.json
- data/spbatches/sp_33.json
- data/spbatches/sp_34.json
- data/spbatches/sp_35.json
- data/spbatches/sp_36.json
- data/spbatches/sp_37.json
- data/spbatches/sp_38.json
- data/spbatches/sp_39.json
- data/spbatches/sp_40.json
- data/spbatches/sp_41.json
- data/spbatches/sp_42.json
- data/spbatches/sp_43.json
- data/spbatches/sp_44.json
- data/spbatches/sp_45.json
- data/spbatches/sp_46.json
- data/spbatches/sp_47.json
- data/spbatches/sp_48.json
- data/spbatches/sp_49.json
- data/vpbatches/vp_01.json
- data/vpbatches/vp_02.json
- data/vpbatches/vp_03.json
- data/vpbatches/vp_04.json
- data/vpbatches/vp_05.json
- data/vpbatches/vp_06.json
- data/vpbatches/vp_07.json
- data/vpbatches/vp_08.json
- data/vpbatches/vp_09.json
- data/vpbatches/vp_10.json
- data/vpbatches/vp_11.json
- data/vpbatches/vp_12.json
- data/vpbatches/vp_13.json
- data/vpbatches/vp_14.json
- data/vpbatches/vp_15.json
- data/vpbatches/vp_16.json
- data/vpbatches/vp_17.json
- data/vpbatches/vp_18.json
- data/vpbatches/vp_19.json
- data/vpbatches/vp_20.json
- data/vpbatches/vp_21.json
- data/vpbatches/vp_22.json
- data/vpbatches/vp_23.json
- data/vpbatches/vp_24.json
- data/vpbatches/vp_25.json
- data/vpbatches/vp_26.json
- data/vpbatches/vp_27.json
- data/vpbatches/vp_28.json
- data/vpbatches/vp_29.json
- data/vpbatches/vp_30.json
- data/vpbatches/vp_31.json
- data/vpbatches/vp_32.json
- data/vpbatches/vp_33.json
- data/vpbatches/vp_34.json
- data/vpbatches/vp_35.json
- data/vpbatches/vp_36.json
- data/vpbatches/vp_37.json
- data/vpbatches/vp_38.json
- data/vpbatches/vp_39.json
- data/vpbatches/vp_40.json
- data/vpbatches/vp_41.json
- data/vpbatches/vp_42.json
- data/vpbatches/vp_43.json
- data/vpbatches/vp_44.json
- data/vpbatches/vp_45.json
- data/vpbatches/vp_46.json
- data/vpbatches/vp_47.json
- data/vpbatches/vp_48.json
- data/vpbatches/vp_49.json
- data/vpbatches/vp_50.json
- data/vpbatches/vp_51.json
- data/vpbatches/vp_52.json
- data/vpbatches/vp_53.json
- data/vpbatches/vp_54.json
- data/vpbatches/vp_55.json
- data/vpbatches/vp_56.json
- data/vpbatches/vp_57.json
- enrich.py
- export_top.py
- infer_emails.py
- lib.py
- live_server.py
- local_li.py
- oc_run.sh
- phone_scrape.py
- propagate.py
- public_live/index.html
- public_live/nav-agent/nav-agent.css
- public_live/nav-agent/nav-agent.js
- rentv_top200_to_work.csv
- run_local.sh
- run_ocfallback.sh
- sample_layer2.py
- snapshot.py
- split_mvp.py
- split_names.py
- split_phones.py
- team_vp.py
- warmth.py
- web_li_scrape.py
- write_by_contact.py
- write_by_name.py
- write_results.py