Engineering has never been more accessible. But just because you can build your own carbon accounting system doesn't mean you should carry the product decisions and data architecture it requires.
How technical is your team? Adjust this content accordingly.
Executivedashboards, no code
Operationsindustry terms, no code
Technicaldatabases, APIs, queries
DeveloperPrisma, Next.js, Postgres
ArchitectOLTP, OLAP, CDC, temporal joins
The vibecoding era
It has never been easier to build internal tools
The last eighteen months have permanently changed what one person can build in a weekend. Cursor, Claude Code, Lovable, v0. The tools are extraordinary. A competent developer (or a resourceful non-developer) can stand up a working internal application in hours, not months. We think that's great. For many categories of software, "build it yourself" is the right call.
Simple dashboards, internal admin panels, workflow tools that sit on top of an existing database: these are what vibecoding was made for. If the data already exists somewhere and you just need a better interface, go build it. You'll learn something. It might be the right long-term answer.
The question isn't whether you can build a carbon accounting app. You can. The question is whether you want to operate one.
Carbon accounting is not a dashboard on top of an existing database. It is the database. It is the data layer, the methodology layer, the compliance layer, and the audit layer, all at once. And the hard part of building software has never been getting the first version running. It is making the hundreds of quiet decisions over months and years that keep the system coherent, correct, and useful.
The two layers
Application layer vs. data layer
Every serious software system has two distinct layers, and the difficulty of building each one is very different.
Application layer: UI, forms, dashboardsEasier than ever
Data layer: storage, schemas, calculations, auditInherently Complex
If a database already exists, it has never been easier to spin up a front end on top of it. That's the application layer, and AI coding tools have made it almost trivially fast.
But carbon accounting means building the database itself. You're storing millions of records in a way that must be backwards-compatible, auditable, and queryable across both transactional and analytical patterns. There is no shortcut around that complexity.
Serious carbon accounting systems need two kinds of database performance simultaneously: fast writes for ingesting individual bills and activity records (transactional), and fast reads for rolling up total emissions across sites, scopes, and years (analytical). These workloads require different data structures. At scale, that means replication, columnar stores, or hybrid architectures. Getting this wrong doesn't break your app immediately. It breaks it at the worst possible time: when an auditor asks for a query you can't run fast enough.
The timeline problem
Day 1 vs. Month 6
The thing about internal tools is that building them means taking on a product role. Engineering complexity may have gone down, but product complexity hasn't. You still need someone making hundreds of decisions over months and years. Those decisions must cohere with each other and produce a system that's easy to use.
Day 1
Everything works
A working form for entering bills
A dashboard showing total emissions
Basic Scope 1 and 2 calculations
The team is excited
The CFO is impressed
Month 6
Everything is harder
Emission factors are out of date
No one owns methodology updates
Auditor can't trace a number to its source
Multi-currency bills are entered incorrectly
Dashboard times out with a year of data
The sustainability lead spends 40% of their time maintaining the tool
Questions to ask before you build
Seven questions for your internal build proposal
Before committing to building your own carbon accounting system, make sure your team can answer these questions. The answers reveal whether you're building a dashboard or signing up to operate a data platform.
Who will source and maintain emission and conversion factors?
DIYThe climate team manually sources factors from EPA, DEFRA, IEA, and ecoinvent. They maintain a spreadsheet, update it annually, and hope no one uses the wrong version between updates.
SmarterYou subscribe to a factor database or open-source library. Updates arrive periodically, but your team still has to map them to your schema, handle version transitions, and validate that historical calculations remain correct after each import.
PlatformThe platform ships a version-controlled emission factor library, updated automatically when agencies publish new factors. Historical versions are preserved so past calculations stay auditable.
How will you verify and scan bills for accuracy?
DIYYou can build OCR using a large language model. But the sustainability team still has to read every extracted bill to verify the numbers are correct. One misread decimal can throw off a site's entire footprint.
SmarterYou integrate a third-party OCR service with confidence scoring. Low-confidence extractions get flagged for review. Quality improves, but your team still owns the review queue, the edge-case handling, and the final sign-off.
PlatformThe platform trains college-educated data specialists who do white-glove QA on every scanned document: pixel-level duplicate detection, cross-referencing against utility provider formats, flagging anomalies before data enters the system.
How will you handle transactional and analytical query patterns on the same data?
DIYMost internal builds use a single Postgres database. That works fine for entering data. But when you need to sum environmental data across 40 sites, 3 years, and 15 Scope 3 categories (with filters), a single row-oriented database starts to struggle. You'll hit this wall right when you need the data most: during reporting season.
SmarterYou add a read replica or materialized views to offload reporting queries. This buys time, but as data grows you're managing replication lag, cache invalidation, and the tradeoff between real-time accuracy and query speed yourself.
PlatformSerious platforms maintain separate transactional and analytical data stores: fast writes for ingestion, columnar storage for roll-ups, with automated replication between them. The application layer doesn't need to know which store it's querying.
How will you handle currency conversion and foreign exchange rates?
DIYMulti-national operations submit bills in different currencies. You need to convert them for consolidated reporting. But which rate? The spot rate on the bill date? The monthly average? The rate your finance team uses? And when a rate changes retroactively, do your historical calculations update? Most internal builds hard-code one rate and discover the problem during audit.
SmarterYou integrate an FX rate API and store conversion metadata alongside each record. But your team still decides which rate policy applies per entity, handles retroactive corrections when rates are restated, and builds the reconciliation logic for audit.
PlatformA platform stores the original currency alongside the conversion rate used, supports multiple conversion policies, and preserves the full conversion trail so auditors can verify every number in its original denomination.
Who is the methodology expert advising your team on GHG Protocol, SBTi 2.0, CSRD, and evolving disclosure frameworks?
DIYSomeone on the sustainability team reads the GHG Protocol guidance, interprets it, and translates it into application logic. When SBTi releases a new methodology version or CSRD disclosure requirements change, that same person has to understand the changes, figure out how they affect calculations and reports, and update the code, all while doing their actual job.
SmarterYou hire a consultant or subscribe to a methodology advisory service. They provide guidance on standards changes, but your team still translates that guidance into application logic, runs the data migrations, and verifies correctness across historical periods.
PlatformThe platform employs dedicated methodology experts who track every standard and disclosure framework update, translate changes into system logic, and ship them as product updates. Your team uses the methodology. They don't have to build it.
How will you store an audit trail alongside the source data?
DIYMost internal builds store the final number. But auditors want to see the underlying calculation: which emission factor was used, when it was applied, what the source value was, who approved it, and whether it was adjusted. Retrofitting audit trails onto an existing database is one of the hardest migrations in software engineering.
SmarterYou adopt an event-sourcing pattern or append-only tables from the start. The data model is sounder, but you still own the query layer for traversing lineage, the UI for displaying it, and the integration between audit records and source documents.
PlatformA platform designed for audit stores the complete data lineage from day one: source document, extracted values, factor applied, calculation method, approval chain, and every change made along the way. The audit trail isn't bolted on. It's the foundation.
How will auditors, regulators, and verifiers access source files, methodology notes, and calculations?
DIYWhen an auditor or verifier arrives, you export spreadsheets, gather PDFs of source documents, write up a methodology note in a Google Doc, and hope they can follow the thread. Every audit or disclosure cycle is a fire drill because the evidence lives in different places.
SmarterYou build a document management layer with role-based access, linking source files to calculation records. It works, but every audit or disclosure cycle reveals another view they need, and you're maintaining the access control system yourself.
PlatformA purpose-built platform provides a dedicated view for auditors, regulators, and verifiers with read-only access to every source file, the calculation chain, methodology notes, and approval history. They click on a number and see exactly how it was derived, including factor version and the original uploaded document.
If your team can answer all seven of these questions confidently, and has the capacity to maintain those answers over time, building internally may be the right choice. For most organizations, these questions reveal why dedicated platforms exist.
The product role
Building software means owning a product
Building an application, even with the best tools, means taking on a product role. Someone has to decide how emission factors are versioned. Someone has to decide how Scope 3 Category 1 differs from Category 11 in the data model. Someone has to decide what happens when a site changes its reporting methodology mid-year.
These are not engineering decisions. They are product decisions. And they compound. Every decision you make constrains the next one. After hundreds of decisions, you have either a coherent system or a pile of special cases held together by workarounds.
Engineering accessibility does not remove product complexity. It just makes it possible for more people to encounter it.
The teams that build the best carbon accounting platforms have made these decisions thousands of times across hundreds of customers. They've seen the edge cases, built the abstractions, evolved the data model through multiple methodology changes. That institutional knowledge is the product, not the code.
See why teams choose to buy
Bring your hardest data challenge: a messy bill, a Scope 3 question, a multi-site rollup. We'll show you how Gravity handles it.