[{"data":1,"prerenderedAt":102},["ShallowReactive",2],{"site":3,"posts":70},{"hero":4,"about":14,"syncedMinutesAgo":69},{"eyebrow":5,"headline":6,"sub":7,"ctaPrimary":8,"ctaSecondary":11},"— a public notebook","Hi, I'm Edmund Hee.","CTO at LEAD, founder of GRUDA Technologies, and an AI trainer on the side. This site is where I think out loud — notes on what I'm building, what I'm teaching, and the half-formed ideas in between.",{"label":9,"href":10},"Read the blog","\u002Fblog",{"label":12,"href":13},"About me","\u002Fabout",{"metaEdited":15,"portraitCaption":16,"currently":17,"bio":22,"stackGroups":26,"timeline":55,"contactBlurb":68},"Edmund Hee · last edited May 14, 2026","Kuala Lumpur, 2025",{"role":18,"focus":19,"reading":20,"city":21},"CTO & Senior Trainer @ LEAD · Founder @ GRUDA Technologies","Data platforms, recommendation systems, and corporate AI training","Designing Data-Intensive Applications, Kleppmann","Kuala Lumpur, Malaysia",[23,24,25],"I'm a CTO and founder who still spends most of his time close to the data. At LEAD I lead the engineering and analytics teams behind data platforms for e-commerce, F&B, and construction clients — pipelines, dashboards, and the unglamorous plumbing that makes the dashboards trustworthy. At GRUDA Technologies, my consultancy, I take on the harder ML problems: recommendation engines, behavior modeling, sustainability analytics.","The other half of my week is training. I run AI workshops for engineering teams and business operators — translating the parts of the stack I actually use into something people can carry back into their own work.","This site is where I think out loud. Two long-running threads: a game recommendation journey where I try every approach I can fit on a single GPU, and a \"big data foundation\" notebook I treat like a textbook I'm writing for my future self. I started writing because I kept forgetting things, and the act of writing forced me to understand them properly.",[27,38,47],{"label":28,"items":29},"Data",[30,31,32,33,34,35,36,37],"python","airflow","airbyte","dbt","bigquery","mongodb","mysql","ga4",{"label":39,"items":40},"ML & AI",[41,42,43,44,45,46],"scikit-learn","pytorch","hugging face","faiss","openai","langchain",{"label":48,"items":49},"Site & infra",[50,51,52,53,54],"next.js","streamlit","vercel","cloudflare","notion api",[56,60,64],{"when":57,"title":58,"summary":59},"2022 — present","CTO & Senior Trainer · LEAD","Leading the data org behind platforms for e-commerce, F&B, and construction clients. 15+ self-service dashboards, GA4 rebuilds, customer personas, and the pipelines underneath. I also run the team's AI training program.",{"when":61,"title":62,"summary":63},"2019 — present","Founder & Director · GRUDA Technologies","My consultancy. Built a news content recommendation engine that boosted retention on a mobile reader; a carbon-footprint analytics platform for a green-tech company on top of Airflow + Airbyte; a game recommender; and a handful of bespoke data tools.",{"when":65,"title":66,"summary":67},"ongoing","AI Trainer · independent","Workshops and corporate training on applied AI — practical ML, modern data stacks, and the parts of the LLM ecosystem that actually ship.","The fastest way to reach me is email. I read every message — but reply quality varies with bandwidth.",4,[71,84,92],{"slug":72,"title":73,"date":74,"dateNice":75,"dateShort":76,"lastEdited":74,"excerpt":77,"tags":78,"readTime":82,"emoji":83,"cover":83},"deepseek-monitor-github-pull-requests","I let DeepSeek read every pull request so I don't have to","2026-06-04","June 4, 2026","Jun 4","AI made writing code cheap, but reviewing it still eats my mornings. So I built a small tool that hands the first-pass pull request review to DeepSeek for about a dollar a day.",[79,80,81],"claude-code","tooling","notes",3,null,{"slug":85,"title":86,"date":87,"dateNice":88,"dateShort":89,"lastEdited":87,"excerpt":90,"tags":91,"readTime":69,"emoji":83,"cover":83},"deepseek-v4-pro-vs-claude-code","DeepSeek V4 Pro: 519 million tokens for $7","2026-05-16","May 16, 2026","May 16","Our four-dev team blew through Claude Code's weekly budget, so we pointed everything at DeepSeek V4 Pro instead. Twelve days and $7 later, here's how it stacks up against Opus 4.7 and Sonnet 4.6 — and why the timing matters.",[79,80,81],{"slug":93,"title":94,"date":95,"dateNice":96,"dateShort":97,"lastEdited":87,"excerpt":98,"tags":99,"readTime":100,"emoji":101,"cover":83},"cutting-claude-code-tokens-with-caveman-mode","Cutting Claude Code tokens by ~75% with caveman mode","2026-05-14","May 14, 2026","May 14","An ultra-compressed prompt style that strips articles, filler, and pleasantries from Claude Code without losing technical substance. Here's what it costs, what it saves, and where it bites.",[79,80,81],6,"🪨",1780589403930]