<!doctype html><html lang=en><head><meta name=generator content="Hugo 0.160.0"><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>Ed Dowding</title><meta name=description content="Ed Dowding builds AI systems, civic platforms, and climate technology."><link rel=preconnect href=https://fonts.googleapis.com><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link href="https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,500;1,6..72,400&family=Outfit:wght@300;400;500;600&display=swap" rel=stylesheet><link rel=stylesheet href=/css/style.css><link rel=alternate type=application/rss+xml title="Ed Dowding" href=/index.xml></head><body class=home><header class=site-header><a href=/ class=site-title>Ed Dowding</a><nav class=site-nav><a href=/posts/>Writing</a>
<a href=/search/ class=search-link aria-label=Search><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg></a></nav><button class=menu-toggle aria-label=Menu aria-expanded=false>
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg></button></header><nav class=mobile-nav id=mobile-nav><a href=/posts/>Writing</a>
<a href=/search/>Search</a></nav><main><section class=hero><h1 class=hero-name>Ed Dowding</h1><p class=hero-line>Builds AI systems, civic platforms, and climate technology.</p></section><section class=work><h2 class=section-label>Work</h2><div class=project><div class=project-header><h3>ChallengeMyRates</h3><span class=project-year>2026</span></div><p>Platform helping UK businesses appeal overvalued rates. Automated VOA data pipeline, Stripe payments, transactional email.</p></div><div class=project><div class=project-header><h3>Pothole Payback</h3><span class=project-year>2026</span></div><p>Service for citizens claiming compensation for road damage. Automated pipeline processing 30,000+ reports from FixMyStreet API.</p></div><div class=project><div class=project-header><h3>Learn to Read</h3><span class=project-year>2026</span></div><p>Reading app for children. Speech recognition follows along word by word. Progressive web app, built over a weekend.</p></div><div class=project><div class=project-header><h3>South Pole</h3><span class=project-year>2024&ndash;2025</span></div><p>AI market intelligence for the world's largest carbon project developer. Shipped in two days, positive ROI in five. Led digital transformation: 2x revenue, 80% fewer resources.</p></div><div class=project><div class=project-header><h3>Represent</h3><span class=project-year>2015&ndash;2018</span></div><p>Digital democracy platform. The most widely used civic engagement tool of its kind in Europe. 20,000 members, 1.2 million votes on policy issues.</p></div><div class=project><div class=project-header><h3>CitySafe</h3><span class=project-year>2016</span></div><p>Community safety reporting platform. Adopted by 33 local authorities across the UK.</p></div><div class=project><div class=project-header><h3>Unfrack.me</h3><span class=project-year>2015</span></div><p>Renewable energy switching. Built in a single night. Drove &#163;4.2 million in green energy investment.</p></div><div class=project><div class=project-header><h3>FoodTrade</h3><span class=project-year>2013&ndash;2014</span></div><p>Sustainable food marketplace. WIRED Top 100 startup. TEDx speaker.</p></div></section><section class=sideprojects><h2 class=section-label>Side Projects & Experiments</h2><div class=project><div class=project-header><h3>Odin</h3><span class=project-year>2024&ndash;now</span></div><p>AI chief of staff. 20+ MCP integrations, multi-agent orchestration, autonomous task execution.</p></div><div class=project><div class=project-header><h3>Mother&rsquo;s Almanac</h3><span class=project-year>2025</span></div><p>AI parenting encyclopedia. 10,000+ parents, 3-layer caching, sub-500ms responses.</p></div><div class=project><div class=project-header><h3>Moneypenny</h3><span class=project-year>2025</span></div><p>WhatsApp AI desktop client. Tauri, Rust, React, SQLite FTS5.</p></div><div class=project><div class=project-header><h3>Abelique</h3><span class=project-year>2023</span></div><p>Matching engine for communities, teams, and enterprise.</p></div><div class=project><div class=project-header><h3>ClimateStripes</h3><span class=project-year>2024</span></div><p>Climate data visualisation platform.</p></div><div class=project><div class=project-header><h3>Panauricon</h3><span class=project-year>2025</span></div><p>Continuous voice capture and Gemini transcription.</p></div><div class=project><div class=project-header><h3>Contextual Feedback</h3><span class=project-year>2025</span></div><p>Open source React feedback library.</p></div><div class=project><div class=project-header><h3>Codraft</h3><span class=project-year>2024</span></div><p>Collaborative document editor with voting.</p></div><div class=project><div class=project-header><h3>OpenGroupMap</h3><span class=project-year>2024</span></div><p>Civic mapping platform.</p></div><div class=project><div class=project-header><h3>PocketPoppins</h3><span class=project-year>2025</span></div><p>AI parenting copilot via WhatsApp.</p></div><div class=project><div class=project-header><h3>ParentLog</h3><span class=project-year>2024</span></div><p>Lightweight parenting journal.</p></div><div class=project><div class=project-header><h3>PromptZero</h3><span class=project-year>2025</span></div><p>AI usage and carbon analytics dashboard.</p></div><div class=project><div class=project-header><h3>Civic Action Generator</h3><span class=project-year>2025</span></div><p>AI civic intervention designer.</p></div><div class=project><div class=project-header><h3>Life in Weeks x ClimateStripes</h3><span class=project-year>2024</span></div><p>Personal climate data visualisation.</p></div><div class=project><div class=project-header><h3>Strategic Message Reframer</h3><span class=project-year>2024</span></div><p>AI narrative translation for sustainability.</p></div><div class=project><div class=project-header><h3>430xAI</h3><span class=project-year>2024</span></div><p>Experimental AI agent framework.</p></div><div class=project><div class=project-header><h3>MFTF</h3><span class=project-year>2023</span></div><p>Financial inclusion platform.</p></div><div class=project><div class=project-header><h3>IceBreakerOne</h3><span class=project-year>2022</span></div><p>Open Energy data sharing.</p></div><div class=project><div class=project-header><h3>AllOK8</h3><span class=project-year>2023</span></div><p>Kubernetes management platform.</p></div><div class=project><div class=project-header><h3>Learn to Read</h3><span class=project-year>2026</span></div><p>Speech-driven reading app for kids.</p></div></section><section class=available><h2 class=section-label>Available for</h2><ul><li>Fractional AI and product leadership</li><li>Strategic builds and proof-of-concepts</li><li>Advisory</li></ul></section><section class=contact-section><a href=mailto:ed@eddowding.com class=contact-email>ed@eddowding.com</a>
<span class=contact-sep>&#183;</span>
<a href=https://linkedin.com/in/eddowding target=_blank rel=noopener class=contact-link>LinkedIn</a></section><footer class=home-footer><a href=/posts/>Writing</a></footer></main><div id=search-modal class=search-modal role=dialog aria-modal=true aria-label=Search><div class=search-modal-backdrop></div><div class=search-modal-content><div class=search-modal-header><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
<input type=text id=search-modal-input placeholder="Search posts..." autocomplete=off>
<kbd>esc</kbd></div><div id=search-modal-results class=search-modal-results></div><div class=search-modal-footer><span><kbd>↑</kbd><kbd>↓</kbd> navigate</span>
<span><kbd>↵</kbd> select</span>
<span><kbd>esc</kbd> close</span></div></div></div><style>.search-modal{display:none;position:fixed;inset:0;z-index:1000}.search-modal.open{display:flex;align-items:flex-start;justify-content:center;padding-top:15vh}.search-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.5)}.search-modal-content{position:relative;width:100%;max-width:600px;margin:0 1rem;background:#fff;border-radius:12px;box-shadow:0 25px 50px -12px rgba(0,0,0,.25);overflow:hidden}.search-modal-header{display:flex;align-items:center;gap:12px;padding:16px;border-bottom:1px solid #eee}.search-modal-header svg{color:#999;flex-shrink:0}.search-modal-header input{flex:1;border:none;outline:none;font-size:1.1rem;background:0 0}.search-modal-header kbd{font-size:.75rem;padding:2px 6px;background:#f5f5f5;border:1px solid #ddd;border-radius:4px;color:#666}.search-modal-results{max-height:400px;overflow-y:auto}.search-modal-results:empty::before{content:"Type to search...";display:block;padding:24px;color:#999;text-align:center}.search-modal-result{display:block;padding:12px 16px;text-decoration:none;color:inherit;border-bottom:1px solid #f5f5f5}.search-modal-result:hover,.search-modal-result.active{background:#f8f9fa}.search-modal-result-title{font-weight:500;margin-bottom:4px}.search-modal-result-date{font-size:.85rem;color:#666}.search-modal-footer{display:flex;gap:16px;padding:12px 16px;background:#f8f9fa;border-top:1px solid #eee;font-size:.8rem;color:#666}.search-modal-footer kbd{font-size:.7rem;padding:2px 5px;background:#fff;border:1px solid #ddd;border-radius:3px;margin-right:4px}.search-modal-no-results{padding:24px;text-align:center;color:#666}@media(max-width:640px){.search-modal-footer{display:none}}</style><script>const menuToggle=document.querySelector(".menu-toggle"),mobileNav=document.getElementById("mobile-nav");menuToggle.addEventListener("click",()=>{const e=menuToggle.getAttribute("aria-expanded")==="true";menuToggle.setAttribute("aria-expanded",!e),mobileNav.classList.toggle("open")}),function(){const n=document.getElementById("search-modal"),c=n.querySelector(".search-modal-backdrop"),s=document.getElementById("search-modal-input"),t=document.getElementById("search-modal-results");let o=[],e=-1;fetch("/index.json").then(e=>e.json()).then(e=>{o=e}).catch(()=>{});function i(){n.classList.add("open"),s.value="",t.textContent="",e=-1,setTimeout(()=>s.focus(),10),document.body.style.overflow="hidden"}function a(){n.classList.remove("open"),document.body.style.overflow=""}function r(){const n=t.querySelectorAll(".search-modal-result");n.forEach((t,n)=>t.classList.toggle("active",n===e)),e>=0&&n[e]&&n[e].scrollIntoView({block:"nearest"})}function l(n){if(t.textContent="",n.length<2){e=-1;return}const s=n.toLowerCase(),i=o.filter(e=>e.title.toLowerCase().includes(s)||e.content&&e.content.toLowerCase().includes(s)).slice(0,15);if(i.length===0){const n=document.createElement("div");n.className="search-modal-no-results",n.textContent="No results found",t.appendChild(n),e=-1;return}i.forEach((e,n)=>{const s=document.createElement("a");s.href=e.url,s.className="search-modal-result"+(n===0?" active":"");const o=document.createElement("div");if(o.className="search-modal-result-title",o.textContent=e.title,s.appendChild(o),e.date){const t=document.createElement("div");t.className="search-modal-result-date",t.textContent=e.date,s.appendChild(t)}t.appendChild(s)}),e=0}document.addEventListener("keydown",e=>{(e.metaKey&&e.key==="k"||e.key==="/"&&!["INPUT","TEXTAREA"].includes(document.activeElement.tagName))&&(e.preventDefault(),i()),e.key==="Escape"&&n.classList.contains("open")&&a()}),s.addEventListener("keydown",n=>{const s=t.querySelectorAll(".search-modal-result");n.key==="ArrowDown"?(n.preventDefault(),e=Math.min(e+1,s.length-1),r()):n.key==="ArrowUp"?(n.preventDefault(),e=Math.max(e-1,0),r()):n.key==="Enter"&&e>=0&&s[e]&&(n.preventDefault(),s[e].click())}),s.addEventListener("input",e=>l(e.target.value)),c.addEventListener("click",a),document.querySelectorAll('.search-link, a[href="/search/"]').forEach(e=>{e.addEventListener("click",e=>{e.preventDefault(),i()})})}()</script></body></html>