Inspiration
Small businesses get asked for their emissions more and more, by customers, lenders and carbon programs. Most of them answer with a spreadsheet guess. You can't trace those numbers back to a bill, and nothing stops the same reduction or offset from being claimed twice. Carbon markets only work if the numbers underneath them can be checked, so we built the checking part first.
What it does
- You enter a month of energy use (electricity in kWh, natural gas in therms, diesel in gallons), import a JSON bill, or attach the bill file so its fingerprint goes into the record.
- TallyTrail calculates Scope 1 and Scope 2 emissions with EPA eGRID 2023 (per grid region) and EPA 2025 GHG Emission Factors Hub values. Every line shows the quantity, the factor, the unit conversion and a link to the EPA source.
- A review pipeline runs: an evidence reviewer, a factor specialist and an auditor. They are deterministic steps, not a black-box model. The auditor raises flags (synthetic data, no original file, no history to compare) and blocks reports that overlap a month that's already confirmed.
- Nothing is final until a person confirms. Then the evidence plus calculation is hashed with SHA-256 and our Anchor program records
submit_reporton Solana devnet. The account address comes from the business wallet and calendar month, so a second report for the same month fails on-chain. - Anyone with the link gets a public verification page. It recomputes the hash, shows totals and the devnet transaction, and hides the business name and line items.
- An offset ledger records demo credit retirements (
retire_offset). Retiring the same registry and serial twice is rejected in the database and on-chain. Offsets never reduce reported gross emissions.
How we built it
- Next.js 16 (App Router), React 19, TypeScript and Zod, deployed on Vercel.
- Neon Postgres with Drizzle ORM for reports and the offset ledger, Neon Auth for accounts, Vercel Blob for private bill uploads.
- A shared
swarm-corepackage that runs the review pipeline the same way every time, with tests. - An Anchor (Rust) program on Solana devnet with
submit_reportandretire_offsetinstructions. PDAs keyed by wallet + month and registry + serial do the duplicate checks. - Emission factors stored with their version, source URL and derivation, at full precision.
Challenges we ran into
- Getting the factor math exactly right: eGRID publishes lb/MWh, the EPA Hub publishes kg/MMBtu per gas with GWP weights, and we wanted every conversion visible instead of one hidden constant.
- Deciding what goes on-chain. Bills are private, so we only anchor a hash and a period key, and keep the details in Postgres.
- Making double counting fail in two places (database overlap check and on-chain PDA) without blocking honest corrections. You can copy and correct a draft before confirming.
- Running the Anchor client inside a serverless function on Vercel.
- Public verification across accounts: the first version only looked up the signed-in owner's reports, which we fixed so any shared link resolves.
Accomplishments that we're proud of
- Every number in a report can be traced to a quantity, a factor and an EPA source, and redone by hand.
- A real devnet transaction for every confirmed report, plus on-chain rejection of a duplicate month and a duplicate credit serial.
- A human gate that can't be skipped, and wording that's honest about what the tool is and isn't.
What we learned
- For carbon data, being able to trace a number matters more than having a clever model. A deterministic pipeline with a person signing off is easier to trust and audit.
- PDAs are a simple, cheap way to make a blockchain say "this was already claimed."
- How eGRID regions, GWP values and Scope 1 vs Scope 2 boundaries affect a small business's footprint.
What's next for TallyTrail
- Utility bill parsing (PDF/Green Button) and ZIP-to-eGRID region lookup.
- Connecting the offset ledger to real registry serials (Verra, Gold Standard) and moving from devnet to mainnet or an L2.
- Supplier roll-ups, so a business can collect verified reports from its suppliers for Scope 3.
- Third-party auditor accounts that can co-sign a report.
- Optional AI extraction from bill photos. It's already wired behind a flag, and it never confirms a report by itself.
Notes for judges (honest limits)
Proof of concept, not certified carbon accounting. Solana devnet only. Offset entries are demo records and don't retire real credits.
Track: Track 1: Carbon Markets & Emissions Trading.
Built With
- anchor
- drizzle
- epa-egrid
- neon
- neon-auth
- node.js
- postgresql
- react
- rust
- sha-256
- solana
- typescript
- vercel
- vercel-blob
- zod
Log in or sign up for Devpost to join the conversation.