[{"content":"The Problem I kept forgetting to buy groceries. Not occasionally — consistently. I\u0026rsquo;d run out of food, tell myself I\u0026rsquo;d order later, and later never came. It was affecting my health and energy levels, so I decided to automate the entire thing.\nWhat I Built A fully automated grocery pipeline that runs every Sunday at 9am:\nReads a JSON grocery list I maintain by texting my AI agent (\u0026ldquo;add chicken thighs\u0026rdquo;, \u0026ldquo;milk is empty\u0026rdquo;) Launches a headless Playwright browser with a persisted Instacart session Searches each item on Instacart, picks the best match, and adds it to cart Logs each item\u0026rsquo;s name, price, and quantity to a local CSV for spend tracking Sends a Telegram summary to my group chat with a direct checkout link I review the cart, tap checkout, and the groceries arrive. That\u0026rsquo;s my only job.\nTech Stack Python — core automation script Playwright — headless browser automation with cookie-based session persistence Hermes — local AI agent runtime handling cron scheduling and Telegram delivery JSON / CSV — grocery list storage and price logging Instacart — delivery platform (Kelowna, BC) Telegram — notification and list management interface How the List Works I text my agent natural language and it updates the grocery list in real time: \u0026ldquo;add Greek yogurt\u0026rdquo; → appended to grocery-list.json \u0026ldquo;milk is empty\u0026rdquo; → appended to grocery-list.json \u0026ldquo;show grocery list\u0026rdquo; → returns current list on Telegram \u0026ldquo;clear grocery list\u0026rdquo; → resets after order is placed \u0026ldquo;how much did I spend\u0026rdquo; → summarizes grocery-price-log.csv\nPrice Tracking Every weekly run appends a structured row to a local CSV:\nlogged_at item_name quantity price_text store status 2026-06-01 3% fat milk 1 $6.49 Instacart added Over time this builds a clear picture of what things cost week to week — useful for spotting price spikes or finding cheaper alternatives.\nKey Challenge Instacart blocks headless browsers at the network level (403 Forbidden). The fix was to authenticate once using a visible Playwright window (headless=False), save the session cookies to disk, and inject them into every subsequent headless run. The session persists indefinitely as long as it stays active.\nResult Groceries arrive every week without me thinking about it. The whole checkout interaction takes under 30 seconds — just a Telegram tap.\n","permalink":"https://allendior.com/projects/grocery-automation/","summary":"\u003ch2 id=\"the-problem\"\u003eThe Problem\u003c/h2\u003e\n\u003cp\u003eI kept forgetting to buy groceries. Not occasionally — consistently. I\u0026rsquo;d run out of food, tell myself I\u0026rsquo;d order later, and later never came. It was affecting my health and energy levels, so I decided to automate the entire thing.\u003c/p\u003e\n\u003ch2 id=\"what-i-built\"\u003eWhat I Built\u003c/h2\u003e\n\u003cp\u003eA fully automated grocery pipeline that runs every Sunday at 9am:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eReads a JSON grocery list I maintain by texting my AI agent (\u0026ldquo;add chicken thighs\u0026rdquo;, \u0026ldquo;milk is empty\u0026rdquo;)\u003c/li\u003e\n\u003cli\u003eLaunches a headless Playwright browser with a persisted Instacart session\u003c/li\u003e\n\u003cli\u003eSearches each item on Instacart, picks the best match, and adds it to cart\u003c/li\u003e\n\u003cli\u003eLogs each item\u0026rsquo;s name, price, and quantity to a local CSV for spend tracking\u003c/li\u003e\n\u003cli\u003eSends a Telegram summary to my group chat with a direct checkout link\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eI review the cart, tap checkout, and the groceries arrive. That\u0026rsquo;s my only job.\u003c/p\u003e","title":"Weekly Grocery Automation"},{"content":"I just finished setting up Dior, my AI-powered second brain running on OpenClaw. It lives on my Mac Mini and helps me stay on track with my goals.\nWhat Dior does Tracks my expenses and warns me when I get close to my $300/month food budget Sends me 5 new French words every morning to help me learn for FCIP permanent residency Tracks my YouTube progress toward 100 videos Manages my GitHub and commits code automatically Publishes to this blog whenever I tell it to How it works The setup runs 24/7 on my Mac Mini in Kelowna. I can message Dior via Telegram from anywhere and it handles everything — from logging expenses to pushing code to GitHub.\nThat’s the real shift for me: not just having AI answer questions, but having a system that actually takes action.\nWhat I want personal AI to feel like This is what personal AI should feel like: an extension of yourself that actually gets things done.\nMore technical posts coming soon about the OpenClaw setup, fallback model chains, and automation workflows.\n","permalink":"https://allendior.com/writing/building-dior-my-ai-chief-of-staff/","summary":"\u003cp\u003eI just finished setting up \u003cstrong\u003eDior\u003c/strong\u003e, my AI-powered second brain running on OpenClaw. It lives on my Mac Mini and helps me stay on track with my goals.\u003c/p\u003e\n\u003ch2 id=\"what-dior-does\"\u003eWhat Dior does\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTracks my expenses and warns me when I get close to my $300/month food budget\u003c/li\u003e\n\u003cli\u003eSends me 5 new French words every morning to help me learn for FCIP permanent residency\u003c/li\u003e\n\u003cli\u003eTracks my YouTube progress toward 100 videos\u003c/li\u003e\n\u003cli\u003eManages my GitHub and commits code automatically\u003c/li\u003e\n\u003cli\u003ePublishes to this blog whenever I tell it to\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"how-it-works\"\u003eHow it works\u003c/h2\u003e\n\u003cp\u003eThe setup runs 24/7 on my Mac Mini in Kelowna. I can message Dior via Telegram from anywhere and it handles everything — from logging expenses to pushing code to GitHub.\u003c/p\u003e","title":"Building Dior - My AI Chief of Staff"},{"content":"The Project Dhanana is a small village in Bhiwani district, Haryana, India. Like most villages of its kind, its history existed only in the memories of its oldest residents — undocumented, at risk of being lost entirely.\nI built this site to change that.\nWhat It Covers The site is structured around six areas:\nHistory — origins, notable events, and the village\u0026rsquo;s evolution over generations Demographics — population, households, and community composition Culture — traditions, festivals, and local customs Governance — panchayat structure and local administration Memory Wall — a dedicated space where residents and diaspora can contribute memories, photos, and stories Contact — for submissions, corrections, and community outreach Trilingual Design The site runs in three languages: English, Hindi (हिन्दी), and Haryanvi (हरियाणवी). This wasn\u0026rsquo;t just a translation exercise — each language serves a different audience. English for the diaspora and younger generations, Hindi for broader accessibility, Haryanvi for the oldest residents for whom it\u0026rsquo;s the native tongue.\nStack Next.js 14 — App Router, static generation for fast loads Vercel — deployment and hosting Custom i18n — three-language routing built without a heavy library Why I Built This My family is from Dhanana. Watching older relatives be the sole carriers of decades of local knowledge made the stakes clear. This site is an archive before it\u0026rsquo;s a website.\n","permalink":"https://allendior.com/projects/dhanana/","summary":"\u003ch2 id=\"the-project\"\u003eThe Project\u003c/h2\u003e\n\u003cp\u003eDhanana is a small village in Bhiwani district, Haryana, India. Like most villages of its kind, its history existed only in the memories of its oldest residents — undocumented, at risk of being lost entirely.\u003c/p\u003e\n\u003cp\u003eI built this site to change that.\u003c/p\u003e\n\u003ch2 id=\"what-it-covers\"\u003eWhat It Covers\u003c/h2\u003e\n\u003cp\u003eThe site is structured around six areas:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHistory\u003c/strong\u003e — origins, notable events, and the village\u0026rsquo;s evolution over generations\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDemographics\u003c/strong\u003e — population, households, and community composition\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCulture\u003c/strong\u003e — traditions, festivals, and local customs\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGovernance\u003c/strong\u003e — panchayat structure and local administration\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMemory Wall\u003c/strong\u003e — a dedicated space where residents and diaspora can contribute memories, photos, and stories\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eContact\u003c/strong\u003e — for submissions, corrections, and community outreach\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"trilingual-design\"\u003eTrilingual Design\u003c/h2\u003e\n\u003cp\u003eThe site runs in three languages: English, Hindi (हिन्दी), and Haryanvi (हरियाणवी). This wasn\u0026rsquo;t just a translation exercise — each language serves a different audience. English for the diaspora and younger generations, Hindi for broader accessibility, Haryanvi for the oldest residents for whom it\u0026rsquo;s the native tongue.\u003c/p\u003e","title":"Dhanana Village"},{"content":"Most AI tools are about thinking faster. You describe a problem, get a response, revise, repeat. The loop is still you doing the work — just with a smarter clipboard.\nAgents are different. An agent can receive a goal, figure out what needs to happen, take actions, check results, and adjust. The loop runs without you in it.\nThat shift is smaller than it sounds in demos and larger than it sounds in practice.\nWhat Actually Changes When I started building with agents, the first thing I noticed was how much time I spent on things I\u0026rsquo;d never clocked as time. Small decisions that interrupted larger ones. Context switches to check something that took 30 seconds but cost 5 minutes of attention. Reformatting output from one tool to feed into another.\nNone of these felt like work. They felt like the overhead of work. Agents eat overhead.\nThe Hard Part The hard part isn\u0026rsquo;t making agents that can do things. It\u0026rsquo;s making agents that know when not to. An agent that acts confidently on bad input is worse than no agent at all — it\u0026rsquo;s a confident failure.\nMost of my time building Dior HQ is on this problem: how do you make a system that\u0026rsquo;s useful enough to actually save time, but careful enough that you can trust it with real tasks?\nI don\u0026rsquo;t have a complete answer. But the framing helps: agents should earn scope. Start narrow, earn trust, expand.\nWhy It Matters Beyond Productivity The productivity framing is real but it\u0026rsquo;s not the whole thing. What I find more interesting is what agents make possible for people without large teams.\nA solo person with good agents can do work that used to require a small department. That\u0026rsquo;s not hyperbole — it\u0026rsquo;s already true in narrow domains. The question is how wide those domains get, and how fast.\nI\u0026rsquo;m building toward that. More soon.\n","permalink":"https://allendior.com/writing/why-i-build-ai-agents/","summary":"\u003cp\u003eMost AI tools are about thinking faster. You describe a problem, get a response, revise, repeat. The loop is still you doing the work — just with a smarter clipboard.\u003c/p\u003e\n\u003cp\u003eAgents are different. An agent can receive a goal, figure out what needs to happen, take actions, check results, and adjust. The loop runs without you in it.\u003c/p\u003e\n\u003cp\u003eThat shift is smaller than it sounds in demos and larger than it sounds in practice.\u003c/p\u003e","title":"Why I Build AI Agents"},{"content":"I\u0026rsquo;ve been in Kelowna for a while now. Long enough that people have stopped asking how long I\u0026rsquo;ve been here, which I take as a sign that I\u0026rsquo;ve stopped seeming like I\u0026rsquo;m passing through.\nThere\u0026rsquo;s a difference between living somewhere and choosing it. A lot of people end up in places — for a job, a relationship, family, inertia. Choosing is different. It means you looked at the options and said: this one.\nI chose Kelowna.\nWhat That Means Practically It means I\u0026rsquo;m working through permanent residency. The Canadian immigration process is well-organized and thorough and takes a long time. I\u0026rsquo;ve made peace with the timeline.\nIt also means I\u0026rsquo;m paying attention to the place in a way I didn\u0026rsquo;t before. The lake in the morning. The way the hills turn colors in fall. The fact that it\u0026rsquo;s smaller than I expected but not in a way that feels limiting.\nWhat I Didn\u0026rsquo;t Expect I didn\u0026rsquo;t expect to care about the community as much as I do. When you\u0026rsquo;re just passing through, the community is backdrop. When you\u0026rsquo;re staying, it becomes context.\nI\u0026rsquo;ve started noticing things that will matter in five years. Local builders, small businesses that are actually good, the texture of a place. You don\u0026rsquo;t think about those things when you\u0026rsquo;re not staying.\nOn Putting Down Roots There\u0026rsquo;s something uncomfortable and also something clarifying about the immigration process. It asks you to make the case that you belong somewhere. That forced articulation — why here, why now, what will you contribute — is an unusual thing to have to say out loud.\nI find I mean it. That was good to find out.\n","permalink":"https://allendior.com/writing/kelowna-choosing-a-place/","summary":"\u003cp\u003eI\u0026rsquo;ve been in Kelowna for a while now. Long enough that people have stopped asking how long I\u0026rsquo;ve been here, which I take as a sign that I\u0026rsquo;ve stopped seeming like I\u0026rsquo;m passing through.\u003c/p\u003e\n\u003cp\u003eThere\u0026rsquo;s a difference between living somewhere and choosing it. A lot of people end up in places — for a job, a relationship, family, inertia. Choosing is different. It means you looked at the options and said: this one.\u003c/p\u003e","title":"Choosing a Place"},{"content":"The Organization Beaver Computing is a Canadian non-profit that runs the Bebras computational thinking challenge — an international CS education program adapted for Canadian students. It reaches thousands of students annually across the country.\nContribution I contributed to the Beaver Computing initiative, supporting their work in making computer science education more accessible and engaging for students at the K–12 level.\nWhy It Matters Most students don\u0026rsquo;t encounter real computer science thinking before university, if ever. Bebras-style challenges change that by making computational reasoning feel like puzzle-solving rather than programming. It\u0026rsquo;s one of the more effective on-ramps I\u0026rsquo;ve seen.\n","permalink":"https://allendior.com/projects/beaver-computing/","summary":"\u003ch2 id=\"the-organization\"\u003eThe Organization\u003c/h2\u003e\n\u003cp\u003eBeaver Computing is a Canadian non-profit that runs the Bebras computational thinking challenge — an international CS education program adapted for Canadian students. It reaches thousands of students annually across the country.\u003c/p\u003e\n\u003ch2 id=\"contribution\"\u003eContribution\u003c/h2\u003e\n\u003cp\u003eI contributed to the Beaver Computing initiative, supporting their work in making computer science education more accessible and engaging for students at the K–12 level.\u003c/p\u003e\n\u003ch2 id=\"why-it-matters\"\u003eWhy It Matters\u003c/h2\u003e\n\u003cp\u003eMost students don\u0026rsquo;t encounter real computer science thinking before university, if ever. Bebras-style challenges change that by making computational reasoning feel like puzzle-solving rather than programming. It\u0026rsquo;s one of the more effective on-ramps I\u0026rsquo;ve seen.\u003c/p\u003e","title":"Beaver Computing"},{"content":"Building in public has become a thing. There\u0026rsquo;s a whole genre of it — daily updates, follower counts, revenue milestones posted like scoreboards, the journey from zero to whatever.\nI\u0026rsquo;ve watched a lot of it. Some of it is useful. A lot of it is a content format that uses building as its subject matter.\nI want something different. I want the practice without the performance.\nWhat the Practice Is The actual reason to build in public — stripped of audience-building — is that it forces you to articulate what you\u0026rsquo;re doing.\nArticulation is different from thinking. You can have a fuzzy idea in your head that feels clear until someone asks you to explain it. Writing is that someone. It surfaces the places where your understanding is thinner than you thought.\nThat\u0026rsquo;s why I started this site. Not to document success, not to attract users, not to build a following. To make myself explain things.\nWhat Gets Lost in the Performance Version In the performance version, you only post when things are going well or when failure is safely in the past. The process gets edited into a narrative.\nThat narrative is less useful to me than the mess. The moment when you realize the architecture you\u0026rsquo;ve been building toward doesn\u0026rsquo;t work. The week you make no progress because you were solving the wrong problem. The decision you made three months ago that you\u0026rsquo;re now unwinding.\nThat\u0026rsquo;s the actual experience of building. It\u0026rsquo;s also the stuff with the most signal.\nWhat I\u0026rsquo;m Trying to Do Here Write about things as they\u0026rsquo;re happening, not after they\u0026rsquo;ve resolved. Accept that not every post will have a conclusion. Say \u0026ldquo;I don\u0026rsquo;t know yet\u0026rdquo; and then come back and update.\nI\u0026rsquo;m building Dior HQ. I\u0026rsquo;ll write about it here, including the parts that don\u0026rsquo;t make good LinkedIn content.\nThat\u0026rsquo;s the plan.\n","permalink":"https://allendior.com/writing/building-in-public-without-the-performance/","summary":"\u003cp\u003eBuilding in public has become a thing. There\u0026rsquo;s a whole genre of it — daily updates, follower counts, revenue milestones posted like scoreboards, the journey from zero to whatever.\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;ve watched a lot of it. Some of it is useful. A lot of it is a content format that uses building as its subject matter.\u003c/p\u003e\n\u003cp\u003eI want something different. I want the practice without the performance.\u003c/p\u003e\n\u003ch2 id=\"what-the-practice-is\"\u003eWhat the Practice Is\u003c/h2\u003e\n\u003cp\u003eThe actual reason to build in public — stripped of audience-building — is that it forces you to articulate what you\u0026rsquo;re doing.\u003c/p\u003e","title":"Building in Public Without the Performance"},{"content":"The Project A freelance website built for Ghost Barbers, a local barber shop. The brief was simple: clean, fast, mobile-first, no unnecessary complexity.\nWhat It Includes Shop info, hours, and location Services and pricing Mobile-optimized layout that works well on the phones customers actually use to find the shop Stack Plain HTML and CSS — no framework overhead, no build step, instant load. Hosted on GitHub Pages.\n","permalink":"https://allendior.com/projects/ghost-barbers/","summary":"\u003ch2 id=\"the-project\"\u003eThe Project\u003c/h2\u003e\n\u003cp\u003eA freelance website built for Ghost Barbers, a local barber shop. The brief was simple: clean, fast, mobile-first, no unnecessary complexity.\u003c/p\u003e\n\u003ch2 id=\"what-it-includes\"\u003eWhat It Includes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShop info, hours, and location\u003c/li\u003e\n\u003cli\u003eServices and pricing\u003c/li\u003e\n\u003cli\u003eMobile-optimized layout that works well on the phones customers actually use to find the shop\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"stack\"\u003eStack\u003c/h2\u003e\n\u003cp\u003ePlain HTML and CSS — no framework overhead, no build step, instant load. Hosted on GitHub Pages.\u003c/p\u003e","title":"Ghost Barbers"},{"content":"An AI agent platform for automating semi-structured work — the tasks that are too messy for a script but too repetitive to keep doing by hand.\nThe goal is to give individuals and small teams the kind of automation leverage that currently only exists inside large engineering orgs.\nStatus: Active development\nStack: Python, Claude API, custom agent orchestration\n","permalink":"https://allendior.com/projects/dior-hq/","summary":"\u003cp\u003eAn AI agent platform for automating semi-structured work — the tasks that are too messy for a script but too repetitive to keep doing by hand.\u003c/p\u003e\n\u003cp\u003eThe goal is to give individuals and small teams the kind of automation leverage that currently only exists inside large engineering orgs.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStatus:\u003c/strong\u003e Active development\u003cbr\u003e\n\u003cstrong\u003eStack:\u003c/strong\u003e Python, Claude API, custom agent orchestration\u003c/p\u003e","title":"Dior HQ"},{"content":"Built with Hugo and the PaperMod theme, hosted on GitHub Pages. Custom dark theme with a navy/gold color scheme. Writing is the main use case.\nStack: Hugo, PaperMod, GitHub Pages, GitHub Actions\n","permalink":"https://allendior.com/projects/this-site/","summary":"\u003cp\u003eBuilt with Hugo and the PaperMod theme, hosted on GitHub Pages. Custom dark theme with a navy/gold color scheme. Writing is the main use case.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStack:\u003c/strong\u003e Hugo, PaperMod, GitHub Pages, GitHub Actions\u003c/p\u003e","title":"This Site"},{"content":"My name is Allen. That\u0026rsquo;s the short answer.\nThe longer answer is that I go by Allen Ghanghas in one world and Allen Dior in another. Ghanghas is my Hindi identity, the name I was given, rooted in family and in a language that thinks differently than English does. Dior is my professional identity, the one I built in North America. But neither name fully captures it. I\u0026rsquo;m just Allen, and I\u0026rsquo;ve made peace with the fact that no name ever will.\nI live in Kelowna, BC. I run a small company called Beaver Computing, which does two things right now: helping senior citizens in Kelowna understand and use technology, and repairing devices people thought were done. The longer-term vision is helping local businesses with their tech needs, built one relationship at a time.\nI\u0026rsquo;m drawn to technology that doesn\u0026rsquo;t cost the planet more than it gives back. Sustainable tech isn\u0026rsquo;t a category to me; it\u0026rsquo;s a filter I run everything through.\nRight now I\u0026rsquo;m deep in agentic AI — not just using it, but learning how autonomous systems think, fail, and improve. I\u0026rsquo;m exploring what becomes possible when you give an AI agent real memory, real tools, and real responsibility. It\u0026rsquo;s early and it\u0026rsquo;s messy and that\u0026rsquo;s exactly why it interests me.\nI\u0026rsquo;m also genuinely fascinated by psychology and psychedelics. How the mind constructs reality, how perception shifts, what sits underneath the stories we tell ourselves. I don\u0026rsquo;t think you can build good technology without understanding people first.\nWhen I\u0026rsquo;m not at a screen, I\u0026rsquo;m on an e-bike somewhere in the Okanagan Valley. The valley has a way of making everything feel proportionate again.\n","permalink":"https://allendior.com/about/","summary":"\u003cp\u003eMy name is Allen. That\u0026rsquo;s the short answer.\u003c/p\u003e\n\u003cp\u003eThe longer answer is that I go by Allen Ghanghas in one world and Allen Dior in another. Ghanghas is my Hindi identity, the name I was given, rooted in family and in a language that thinks differently than English does. Dior is my professional identity, the one I built in North America. But neither name fully captures it. I\u0026rsquo;m just Allen, and I\u0026rsquo;ve made peace with the fact that no name ever will.\u003c/p\u003e","title":"About"},{"content":"Last updated: May 2026 — Kelowna, BC\nBuilding Dior HQ is my main focus. It\u0026rsquo;s an AI agent platform designed to help people automate the messy, semi-structured work that doesn\u0026rsquo;t fit neatly into existing tools. Still in early stages but it\u0026rsquo;s taking shape.\nReading Working through material on agent architectures — how to make AI systems that actually do things reliably, not just generate plausible-sounding text. Lots of papers, lots of experimentation.\nLife Admin Actively working through the Canadian permanent residency process. It is as paperwork-intensive as everyone says. I\u0026rsquo;m staying patient.\nWriting Trying to write more consistently. This site is part of that — a place to think in public without it needing to be polished or perfect.\nThis is a /now page. Updated whenever things change.\n","permalink":"https://allendior.com/now/","summary":"What Allen is working on right now","title":"Now"}]