Inspiration

Every day, millions of people make online purchases that invisibly contribute to climate change. You never see a label on a storefront telling you a pair of headphones costs 42 kilograms of carbon. Those footprints are completely buried in supply chains and shipping routes that consumers never see. We realized that no existing tool brings this crucial information to the exact moment it matters most. We wanted to intercept that decision right at the point of purchase by securely reading the webpage DOM across 21 major retailers like Amazon, Target, walmart and Best Buy.

Most carbon calculators either ask you to fill out a lifestyle survey (which is inaccurate and tedious) or require you to hand over your full purchase history to a third-party server you don't control (which is a privacy non-starter for most people). We believed there was a better way: bring the calculation to the user through interactive UI, not the other way around.

The Knot API was the other spark. When we saw that Knot could not only read transaction history across merchants but also execute purchases on the user's behalf via AgenticShopping, we realized we could build something that doesn't just show people their footprint; it could help them act on it in one click. That combination, awareness at the moment of decision, plus automated action after the fact, is what became CarboKnot.

What We Built

CarboKnot is a Chrome extension that runs a content script on product pages of shopping websites like Amazon, Walmart, Instacart, and more that reads the product title and price from the DOM, passes it through a local carbon estimation engine, and injects a carbon badge next to the price, all under a second. Users see their footprint before they decide. At checkout, the extension surfaces a full carbon summary panel for the entire cart.

The on-device carbon engine is a self-contained TypeScript module bundled into the extension itself. It uses validated category-level benchmarks to produce an instant estimate, we used virtual machine so that your shopping habits stay on your device by default. External API enrichment, a more precise number from Climatiq, and a reasoning explanation from K2 Think V2.

The Knot integration handles everything after the purchase. Knot's TransactionLink connects to users' merchant accounts via OAuth and fires webhooks when transactions complete, giving us structured purchase data across Amazon, Walmart, Target, and more. Knot's SubManager surfaces recurring subscriptions, HelloFresh, Dollar Shave Club, and streaming services, so users can see the annual carbon cost of their subscriptions in one view. And Knot's AgenticShopping executes product swaps automatically on the user's behalf: when the dashboard suggests a greener alternative, one click places the order without the user leaving the page.

K2 Think V2 powers the reasoning layer. When a user calls K2 Think V2 to generate a chain-of-thought explanation of why a specific product has a high carbon footprint: covering materials, manufacturing processes, shipping distance, packaging, and product lifespan. This is the layer that makes carbon recommendations feel credible rather than arbitrary. We deliberately separated the carbon number (Climatiq, scientifically validated) from the carbon explanation (K2 Think V2, reasoned) so users always know which layer they're reading.

The dashboard brings everything together. Accessible from the extension popup, it shows cumulative footprint over time, category breakdown, month-over-month trends, and subscription carbon costs, all fed from a single unified database that treats every purchase the same regardless of whether it came from the extension or a Knot webhook.

How We Built It

CarboKnot is a pnpm monorepo with two packages: carboknot-extension (the Chrome extension, bundled with esbuild) and carboknot-proxy (a lightweight TypeScript/Node.js middleware that routes opt-in API calls to Climatiq, K2 Think V2, and Knot). The proxy is hosted on Dedalus.

The extension is built to Manifest V3 standards. The content script activates on 21+ sites product pages, reads the DOM, and invokes the local carbon engine synchronously. The carbon engine uses a bundled category lookup table; products are classified (electronics, clothing, food, personal care, etc.) and matched against validated benchmark CO₂e values to return an instant estimate. We wrote unit tests for the engine (pnpm test: engine) to ensure consistent output across product categories.

For the Knot integration, we used Knot's MCP server (docs.knotapi.com/mcp) directly in our development environment to query Knot's API documentation in real time, which significantly sped up the integration work. The webhook handler in the proxy normalizes incoming Knot transaction payloads into our unified purchase schema before saving to the database.

Google Gemini handles edge cases in product categorization, when the carbon engine can't confidently classify a product title into a known category, it falls back to Gemini for a structured classification call before running the benchmark lookup.

Challenges We Faced

Our first major hurdle was unifying two completely different data streams into a single database. The pre-decision information we extract from the browser DOM is messy, while the post-purchase transaction data from Knot API webhooks is highly structured. Merging these without losing confidence intervals took significant iteration. On top of that, extracting exact product details across 21 different retailers and matching them to research-backed Climatiq datasets was incredibly complex. When we asked our AI models to find greener alternatives among millions of SKUs, they would suggest completely unrelated items just because they had lower carbon footprints. We had to engineer strict category constants to force Gemini and K2 Think to return functionally equivalent replacements like refurbished electronics.

Our another infrastructure challenge was protecting our environment variables and API keys from leaking to the client extension. To keep all sensitive data completely secure, we hosted our proxy server and cache warmer on a Dedalus Linux virtual machine. However, the strict university network and overloaded hackathon Wi-Fi kept dropping our secure shell sessions, causing our deployments to crash. We had to quickly adapt by using terminal multiplexers and persistent background processes so our cloud agents could survive the network drops and keep the backend completely stable for the final demo.

Separating the number from the explanation. An early version had K2 Think V2 producing both the carbon estimate and the reasoning explanation. We realized this introduced hallucination risk on the number itself. We redesigned the pipeline so Climatiq always owns the number and K2 Think V2 only explains it, a cleaner separation that makes the product more trustworthy.

What We Learned

Knot is more powerful than it appears. SubManager and AgenticShopping unlock genuine behavioral change, not just data visibility. The moment we realized Knot could execute a product swap on the user's behalf, the entire product concept shifted from "carbon calculator" to "carbon action tool." Reasoning and numbers are different jobs. LLMs are excellent at explaining why something is true. They are not reliable for producing precise numerical outputs. Separating K2 Think V2 (reasoning) from Climatiq (data) made both layers stronger.

The best carbon tool is one people don't have to think about. By putting the product in the browser, where purchasing decisions already happen, we removed every friction point between awareness and action.

Share this project:

Updates