2026-09-10 11:35 — **Web & brand consolidation decided** (session w/ Griff+Nick → Root `#vPduzrb0dHxyoTth`). Org is **Juniper** (drop "Ventures" as the default; Ventures=fund, kept only on the fund deck; Foundation/Research/Fellows/Cluster = sub-brands with a subtitle). **Consolidate the ~20 one-pagers into juniper.xyz** under a house-system nav (password-protect the not-ready ones). **Research = juniper.xyz/research directory** — NOT research.juniper.xyz subdomain, NOT own domain (DeepMind model; maintainability + cohesion; retired the old subdomain task). **Buy a paid brand font** (free-font kerning is the tell — Esben picks). Updated stale portfolio stages (Apollo → seed + Series A). Built the new house-system homepage as a **preview** (kran.ai/a/juniper-home-preview/) — NOT deployed to juniper.xyz, awaiting Esben's go + arm-URL/font confirm. Map stays inclusive (no striking people). P02 research task retargeted; +2 tasks (consolidation, font).
2026-09-10 11:15 — **Built the `founder-memo` autonomous agent** (`Juniper-Ventures/tooling-agents/founder-memo`, pushed). Turns inbound founder flow into a reviewed pipeline: reconciles each founder into the CRM (Org + founder People + a `Radar` Deal carrying reply/deck/thesis status; dedup + Type rules copied from crm-updater), researches the company with web/browser tools, writes ONE concise memo as a Root page under a `Deal memos` folder (ext API), and links the page URL from the Organization's new `Memo` field (`fldgKvFiK1zrjmQeq`). Same shape as crm-updater/fund-sync (CLAUDE.md = the routine, launchd + own Telegram bot). Seeded queue = the 83 triaged inbound. **Proven end-to-end on SnowCrash Labs** (on-thesis AI-eval/safety-routing, pre-seed): Org + Matt O'Brien + Gavin Aydelotte + Deal created & linked, memo at kran.ai/a/memo-snowcrash-labs. To go live it needs `ROOT_API_KEY` (Root's `CLAUDE_API_KEY` secret — unreadable, drop in by hand) + a dedicated bot token, then `bin/install.sh` drains the queue to Root.
2026-09-10 10:30 — **Root: unblocked Esben's /fund access + broadened inbound triage.** (1) Found the Root repo `Juniper-Ventures/juniper-root` (CF Pages app). `/fund` was already deployed on main — the block was the server-side `FUND_VIEWERS` allow-list (`functions/_common.js`) holding only griff@ + nick@juniper.xyz. Added esben@juniper.xyz, pushed (`f502785`, auto-deploy). Verified live: `GET /fund`=200, `/api/fund/summary` unauth=403 (gated, not 404), `root` D1 has the fund_* tables + 6 fund_snapshot rows. Log in as esben@juniper.xyz → dashboard visible. (2) Broadened the email triage from deck-only to all founder inbound incl. no-deck outreach → 83 items (17 deck / 66 plain) in `~/Desktop/Kran/juniper-inbound-decks.md`. Next: wire the triaged inbound into a Root deck-review surface + thesis-score each (needs a small ingest, same pattern as fund-sync).
2026-09-10 09:45 — **Platform: CRM morning digest (live) + inbound-deck triage.** (1) Built `~/juniper-crm-digest/digest.py` — reads the CRM (Airtable base appbL6ewYvsnzG67e: Deals/Sourcing/Submissions/TO DO), diffs against a saved snapshot, and sends Esben a plain-text morning pulse (pipeline moves, newly sourced founders w/ score, new VP submissions, actions due/overdue) to Telegram (@odin_esben_bot). Scheduled daily 08:00 via launchd `com.esben.juniper-crm-digest` (catches up on wake); baseline sent + verified. Optional migrate to cPanel-cron for lid-closed delivery. (2) Triaged the juniperventures.xyz inbox (725 msgs → 77 deduped inbound decks/raises, reply-status cross-checked vs Sent) → `~/Desktop/Kran/juniper-inbound-decks.md`. Finding: only ~5 of 77 are on-thesis (SnowCrash Labs AI-alignment, Squary AI, Prasenjit Saha unified AI-security, Dhaval Patel privacy-first AI, Trustworthy-AI showcase) — the rest is off-thesis cold inbound, which is exactly the case for an autonomous thesis-filter. Blocked on: the Root repo (root.juniper.xyz) to auto-generate the deck-review surface + fix `/fund`.
2026-09-10 09:28 — **AIAT 2.0 site hero polish** (kran.ai/a/aiat-2, republished via kranpub `--slug aiat-2`): the investor logo-wall (a16z, Sequoia, Menlo, Lightspeed, General Catalyst, Greylock, NEA, Meta, Y Combinator, B Capital, Anthropic + Juniper Ventures) now renders as full-white logos on the flow-field canvas (`opacity:.6→1`, sizes bumped, brighter eyebrow); hero subtitle shortened from three lines to two ("Capability is the largest capex event in history. Assurance is the toll on it — and you get paid whoever wins.") so the wall sits above the fold with air. Source: ~/Desktop/Kran/aiat-2.0/aiat-2.0-site.html.
2026-09-08 16:00 — Built **AIAT 2.0 as a website** (kran.ai/a/aiat-2) to replace the raw graphs artifact: AIAT.report visual DNA (Cormorant Infant + Montserrat, Juniper green/navy), a live **flow-field hero canvas** (capital streams in navy converging through the green "assurance toll" membrane — on-message + performant, reduced-motion aware), sticky nav, $965B/1,750×/135:1/$2.6B-a-day stat band, all 17 genverify-corrected interactive figures, plus the seven-moves table, 2.0 taxonomy, and how-to-play sections. Source: ~/Desktop/Kran/aiat-2.0/aiat-2.0-site.html.
2026-09-08 15:20 — Genverify corrections APPLIED to both distribution surfaces. (1) **Artifact re-published** (kran.ai/a/aiat-2-graphs): Thinking Machines $50B→$12B, SSI $55B→$32B, Mistral $14B→$24B, Prompt exit $250M→$160M, 'realised'→'adjudicated' liability, Goodfire+AIUC COI disclosed, toll-floor year fix, AI-security-VC attribution. (2) **New Google Doc** built from the corrected report.md with 4 regenerated figure PNGs (Fig 3/6/7/12) — docId `1BR2eIWtd0EiD4tsM_WgNauv4l3MKVhZ0tmAtoS7uEI8`; next time update in place via `gdocs.py update <docId> <docx>`. Both surfaces now consistent and ready for the Nick/Finn analyst-review pass.
2026-09-08 03:20 — **P02 58→62: AIAT 2.0 genverify pass complete** (6 parallel primary-source agents → `GENVERIFY-2026-09-08.md`). Thesis intact; **4 blockers** (Thinking Machines ~$50B was a collapsed raise → $12B last-closed; SSI $55B→$32B; Prompt Security exit $250M→$160.2M per SentinelOne 10-Q; two fabricated citations confirmed, traced to an AI-generated vendor blog → keep purged) + **Mistral same-day staleness** ($14B→~$24B, Samsung-led €3B round announced 8 Sep) + **~12 factual corrections** (Gartner $51.3B is AI-cybersecurity not assurance; toll-floor year-label $45B is 1.8% of 2026 not 2025; AI-security VC = one analyst's Crunchbase cut, don't chain seed vs A/B/C; DSIT scenario-not-revision) + **investor-facing framing** ('adjudicated' not 'realised' liability; Clearview is contingent equity not cash; Goodfire+AIUC COI footnotes; haircut press-estimate exit multiples running 1.5-2.2× high). Good news: securing-AI $2.8B now has a Gartner primary (26 Aug 2026) → drop the Software Strategies Blog crutch. Unblocks the Nick/Finn analyst-review task. Separately: cross-checked CRM portfolio marks vs public — none need upward revision (Gray Swan $200M, Goodfire $1.25B, Irregular $450M all match public rounds); flagged SSI carried at $100B vs $32B public.
2026-08-25 15:30 — Week-2 reconcile + **Q1 self-review** built for the Griff conversation (kran.ai/a/juniper-q1-analysis, password-gated). Honest scorecard: the **build layer is ~done in 2 weeks** (engine v3, 6 sites, brand+content+launch, AIAT 2.0, cluster pitch, LP map) but **every fund outcome is still ~0** — 0 deals deployed, 0 sourced founders to a partner meeting, deck (P0) unshipped, ~0 LPs met in earnest. Framing: Q1 was the build; weeks 3-13 must be the **conversion** (watch the 10zeros build-not-finish trap). Next bottleneck: sourcing precision pass -> shortlist to Nick (Aug 29) + unstick the deck. New: **P02** brand + content + launch (Root) 55->58; **P05** FAR-cluster review (Root); **P07** Foldguard founders + intro batch + house pages 15->18; **P09** governance/Mozilla workstream added (ownership TBD).
2026-08-20 12:06 — Full reconcile to current status. **P07 10→15%**: network build started — Meaning Dinner with the public-goods-funding circle + Tehama drop-ins; new person-notes filed (Renaissance Philanthropy/Tom Kalil, Funding the Commons, Protocol Labs/Brad Holden, Goodfire/Max Loeffler). juniper.xyz now proxied through Cloudflare with /deck + /dataroom 301s live. All other projects verified current (P01 72, P02 55, P03 0, P04 60, P05 35, P06 15, P08 70).
2026-08-20 (P02) — Reconciled AIAT 2.0: it's a **near-complete working draft** ("The Capitalist Case for AI Assurance"), not an outline — abstract + Prologue/Part I–III, 16 sourced figures, data JSON, interactive graphs (kran.ai/a/aiat-2-graphs), 7-move summary, 6-category 2.0 taxonomy, caveats. Remaining = genverify flagged capital numbers → analyst review (Nick/Finn) → fold into aiat.report Docusaurus stack → publish. P02 28→55%.
2026-08-20 — Week-1 catch-up: **juniper.xyz** rebuilt in Tehama editorial style + **cutover to Cloudflare Pages** (DNS GoDaddy→CF, live, Google email intact) → P02/P08. **Juniper Fellowship site** shipped (juniper-fellows.pages.dev / ideas.html "What needs building": 49 costed briefs + 258 directions, PDL-enriched career matcher, "why they care" field, Foundation-framing) → feeds P01 talent + P02 thought-leadership. **AIAT 2.0 graphs** (kran.ai/a/aiat-2-graphs) → P02. **David datacenter pitch** built (kran.ai/a/juniper-house-cluster + cluster-tiers, Blackwell B200 budget) + sent via Nick; walk-the-building Thu → P05 (ask finalized). **LP intelligence** deepened: METR-funder cross-ref + Eric-Ries network list → +7 net-new LP candidates written to CRM Deals (Astralis Foundation = top LP is a METR funder) → P04. S2 + PDL keys live → P01.
2026-08-16 — Engine v3: **founder-DNA lookalike scorer**. Learned the pre-founding signature of the founders behind Juniper's ~41 on-thesis assurance companies (dna.py + founders.json, 88 founders). KEY FINDING: 47/88 are **operators** (repeat/industry founders with NO papers) vs 20 researchers → OpenAlex-only was blind to over half the pattern. Added PDL career layer (pdl.py, key-gated): enrich (frontier-lab/repeat-founder — works in prod, enriched=14) + ex-frontier-lab operator sourcing (validated locally: ex-OpenAI/DeepMind founders dna 92). New fields: DNA score/archetype/Resembles; table now ranked by DNA (researchers correctly matched — Sharkey→Goodfire, Andriushchenko→Gray Swan). OPEN: PDL Person Search returns 0 in the Action (operators_sourced=0) — likely PDL search-credit/plan limit (separate quota from enrich); enrich is fine. Both S2 + PDL keys set as secrets + in the workflow yml.
2026-08-14 19:45 — Engine v2: added the **Founder-ripe** signal (Esben's ask: founders who've been too long at a company) — OpenAlex affiliation year-ranges → current employer + company tenure; flags company/lab tenure ≥4y. Added alignment labs (Anthropic/OpenAI/DeepMind/Redwood/Apollo/EleutherAI/…) to the corpus so it covers where safety talent works now, not just universities. Semantic Scholar corpus wired but key-gated (S2_API_KEY, added later) — widens discovery, resolves to OpenAlex for unified enrichment. +4 Airtable fields. Verified fields populate (Toronto/Vector tenure). Founder-ripe correctly 0 for the current all-academic set; fires for company/lab-tenured people as the corpus widens. Note: OpenReview is login-walled (403) and MATS /alumni is testimonials not a roster — reliable "where they work now" comes from OpenAlex last-known-institution + the tenure signal, not a scraped alumni join.
2026-08-14 19:10 — Engine v1 SHIPPED: repo Juniper-Ventures/sourcing-engine + weekly GitHub Actions cron + AIRTABLE_TOKEN secret + new Airtable "Talent Radar (engine)" table (tblsxo8b…). v1 = OpenAlex disambiguation (real author IDs, not names), co-author clusters, tenure + publication-cadence, pre-exit signals (productization / founder-timing / publication-slowdown / tight-cluster). HONEST finding: free bibliometric APIs cap signal — arXiv is hard rate-limited (429 on my IP AND GitHub runners); OpenAlex keyword = noisy; OpenAlex institution-filtered = clean but low-volume (sparse institution metadata). Table seeded w/ 6 high-signal top-institution candidates (Yaodong Yang, Xuehai Pan = real alignment researchers). Deliberately did NOT dump noise. v2 = better source (OpenReview API / Semantic Scholar key / arXiv bulk mirror).
2026-08-14 17:40 — LIVE Airtable access (PAT saved in ~/.zshrc). Found the base already has populated Sourcing (26f) + Watchlist (14f) tables + an active curated workflow — so the schema task was already done, not to-build. Proved engine→CRM wiring: deduped + wrote one tagged test candidate (David Demitri Africa, rec…PW65) into Sourcing. NOT bulk-importing the 184 raw candidates into the curated table — cadence/ownership to confirm with Griff/Nick.
2026-08-14 17:22 — Sourcing engine v0 SHIPPED: runnable sourcing_engine.py pulls 633 recent AI-safety papers from arXiv → 184 ranked author-candidates (first-authorship weighted) → /sourcing subpage + candidates.json. First working slice of the engine. (v0: name-only dedup; v1 = affiliation disambiguation + Apart/LessWrong/OpenReview feeds.)
2026-08-14 17:14 — Autonomous batch: reviewed Nick's CRM (Airtable base + crm-updater agent) → crm-review subpage w/ watchlist schema spec (unblocks P01 schema task); built LP-intelligence list (31 ranked LPs + pull method) → P04; mapped AI-safety talent programs → P01 sourcing feeds; built swag playbook ($5K BOM, Seldon→Juniper) → P06. GoDaddy + DoorDash done (Esben). LP-list validation done (Preqin/PitchBook cover raw data, none score AI-safety fit → thin scraper + scoring is the build). 4 subpages linked.
2026-08-14 16:56 — GitHub invite done. Research build → in progress (research.juniperventures.xyz still NXDOMAIN — DNS pending, domain landed today). Software task dates pulled in (AI/software leverage); LP-list fast-tracked to Sep 5. GPU provisioning + talks unchanged.