[{"data":1,"prerenderedAt":252},["ShallowReactive",2],{"latest-posts":3},[4,154],{"id":5,"title":6,"body":7,"category":139,"cover":140,"date":141,"description":142,"extension":143,"meta":144,"navigation":145,"path":146,"seo":147,"stem":148,"tags":149,"__hash__":153},"blog\u002Fblog\u002Fscrape-3000-founders.md","Scraping 3,000 YC Founder Profiles With Nothing but curl",{"type":8,"value":9,"toc":134},"minimark",[10,14,17,22,30,86,94,98,120,124,127,130],[11,12,13],"p",{},"Cold outreach starts with a clean list. In one evening, using nothing but curl, I scraped every YC batch from the last two years: 1,546 companies, 3,034 founders, 99.4% LinkedIn coverage.",[11,15,16],{},"No headless browser. No paid API. No proxy pool.",[18,19,21],"h2",{"id":20},"the-key-discovery-the-data-is-right-there-in-the-html","The key discovery: the data is right there in the HTML",[11,23,24,25,29],{},"YC's company detail pages are rendered with Inertia.js, which embeds the full page data as JSON inside a ",[26,27,28],"code",{},"data-page"," attribute. Which means:",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-bash shiki shiki-themes github-light github-dark","curl -s https:\u002F\u002Fwww.ycombinator.com\u002Fcompanies\u002Fxxx \\\n  | grep -o 'data-page=\"[^\"]*\"' \\\n  | # HTML-entity decode → complete JSON\n","bash","",[26,38,39,59,77],{"__ignoreMap":36},[40,41,44,48,52,56],"span",{"class":42,"line":43},"line",1,[40,45,47],{"class":46},"sScJk","curl",[40,49,51],{"class":50},"sj4cs"," -s",[40,53,55],{"class":54},"sZZnC"," https:\u002F\u002Fwww.ycombinator.com\u002Fcompanies\u002Fxxx",[40,57,58],{"class":50}," \\\n",[40,60,62,66,69,72,75],{"class":42,"line":61},2,[40,63,65],{"class":64},"szBVR","  |",[40,67,68],{"class":46}," grep",[40,70,71],{"class":50}," -o",[40,73,74],{"class":54}," 'data-page=\"[^\"]*\"'",[40,76,58],{"class":50},[40,78,80,82],{"class":42,"line":79},3,[40,81,65],{"class":64},[40,83,85],{"class":84},"sJ8bj"," # HTML-entity decode → complete JSON\n",[11,87,88,89,93],{},"One pipeline, and you get the company profile, the founder list, and every social link. A lot of sites that look like they \"need Playwright\" have shortcuts like this — ",[90,91,92],"strong",{},"read the page source first, then decide whether to bring out the heavy machinery",".",[18,95,97],{"id":96},"three-engineering-decisions","Three engineering decisions",[99,100,101,108,114],"ol",{},[102,103,104,107],"li",{},[90,105,106],{},"Batch isolation",": ten batches, each with its own directory and its own checkpoint — one failing batch never touches the others",[102,109,110,113],{},[90,111,112],{},"If it can't be verified, mark it not-found",": never pad the numbers. A real 99.4% LinkedIn coverage beats a fake 100%",[102,115,116,119],{},[90,117,118],{},"Machine data physically separated from human notes",": refreshing the database can never clobber my handwritten follow-up notes",[18,121,123],{"id":122},"one-trap-dont-trust-the-tags","One trap: don't trust the tags",[11,125,126],{},"In the W26 and Sp26 batches, 80% of companies have no industry tags at all. Filter by the AI tag and you'll miss most of the real AI companies. The right move is running every company description through a classifier.",[11,128,129],{},"This list is now the first cornerstone of my outreach database, people.db. Next up: the 2,240 makers from Product Hunt.",[131,132,133],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":36,"searchDepth":61,"depth":61,"links":135},[136,137,138],{"id":20,"depth":61,"text":21},{"id":96,"depth":61,"text":97},{"id":122,"depth":61,"text":123},"Growth Engineering","sunset","2026-08-08","No headless browser, no paid database — ten batches, 1,546 companies, 3,034 founders, 99.4% LinkedIn coverage.","md",{},true,"\u002Fblog\u002Fscrape-3000-founders",{"title":6,"description":142},"blog\u002Fscrape-3000-founders",[150,151,152],"Scraping","Outreach","Data Engineering","h_c0OPY_V2Plk6Bh6gYLua8L49v8G0F2LON-yRjn98c",{"id":155,"title":156,"body":157,"category":239,"cover":240,"date":241,"description":242,"extension":143,"meta":243,"navigation":145,"path":244,"seo":245,"stem":246,"tags":247,"__hash__":251},"blog\u002Fblog\u002Fgeo-is-the-new-seo.md","GEO Is the New SEO: Getting AI Search to Cite Your Brand",{"type":8,"value":158,"toc":234},[159,162,165,169,180,193,200,204,224,228,231],[11,160,161],{},"When a user asks ChatGPT \"what's a good custom merch platform,\" whether your brand shows up in the answer is quickly becoming more important than your Google ranking.",[11,163,164],{},"That's the problem GEO — Generative Engine Optimization — exists to solve.",[18,166,168],{"id":167},"the-rules-of-search-have-changed","The rules of search have changed",[11,170,171,172,175,176,179],{},"Traditional SEO gets ",[90,173,174],{},"people"," to click through to your site; GEO gets ",[90,177,178],{},"models"," to cite you when they generate answers. The optimization logic is completely different:",[181,182,183,186],"ul",{},[102,184,185],{},"SEO optimizes ranking signals: backlinks, keywords, Core Web Vitals",[102,187,188,189,192],{},"GEO optimizes ",[90,190,191],{},"citability",": structured facts, clear entity definitions, AI-crawler accessibility",[11,194,195,196,199],{},"A counterintuitive conclusion: for GEO, a cleanly marked-up FAQ can be worth more than a 10,000-word deep dive — because models cite ",[90,197,198],{},"passages",", not pages.",[18,201,203],{"id":202},"the-three-levers-of-geo","The three levers of GEO",[99,205,206,212,218],{},[102,207,208,211],{},[90,209,210],{},"Let AI crawlers in",": robots.txt allowances for GPTBot, ClaudeBot, and PerplexityBot, plus an llms.txt declaration",[102,213,214,217],{},[90,215,216],{},"Make content citable",": self-contained paragraphs, each able to answer one question on its own",[102,219,220,223],{},[90,221,222],{},"Make your brand an entity",": build a stable brand-category association in authoritative sources",[18,225,227],{"id":226},"why-i-built-fastergeo","Why I built FasterGEO",[11,229,230],{},"The GEO tools on the market are either consulting reports in a trench coat or absurdly overpriced. So I broke the whole methodology down into an open-source toolkit: 11 npm packages plus an MCP server, covering detection, optimization, and monitoring end to end.",[11,232,233],{},"Building in public — all the code is on GitHub.",{"title":36,"searchDepth":61,"depth":61,"links":235},[236,237,238],{"id":167,"depth":61,"text":168},{"id":202,"depth":61,"text":203},{"id":226,"depth":61,"text":227},"SEO \u002F GEO","mint","2026-08-05","The traffic entry point is moving from the search box to the chat box. Here's how GEO works, and why I built FasterGEO.",{},"\u002Fblog\u002Fgeo-is-the-new-seo",{"title":156,"description":242},"blog\u002Fgeo-is-the-new-seo",[248,249,250],"GEO","AI Search","FasterGEO","5RlX-crzueY_stAzTLTrFRjcGso2kZ7JDlpoRjOfOmo",1786439865404]