Inspiration
Companies are spending billions on carbon credits, but almost no one can prove a forest is only counted once. When the same monitoring report is used to issue credits twice, buyers pay twice while the climate only benefits once. That "double counting" quietly destroys trust in the whole market. We wanted a simple, public way to guarantee one forest report can only ever become one carbon credit.
What it does
Faircri turns a forest monitoring report into exactly one carbon credit, and blocks any attempt to issue a second.
- Connect your wallet and you land in a clean dashboard.
- Paste a report. AI (Nebius) reads it and pulls out the key facts: project, method, monitoring period, tonnes of CO₂ and report ID. It flags anything missing.
- Get a fingerprint. Those facts become a unique code. Same report, same code, every time.
- Issue the credit on Arc Testnet with one wallet approval. If that fingerprint already has a credit, Faircri blocks it instantly and shows you the existing one.
You can also see all your credits, retire them, flag a suspicious one, and look up any fingerprint publicly. The AI only reads reports. It can never sign or issue anything; only your wallet can.
How we built it
- Smart contract: a
CreditRegistrycontract in Solidity (Hardhat), deployed to Arc Testnet. It stores one credit per report fingerprint and enforces that rule on-chain. - App: Next.js 15, React, TypeScript and Tailwind, with a dashboard that opens as soon as you connect a wallet.
- Wallets: wagmi, viem and ConnectKit. Test USDC pays the network fee on Arc.
- AI: Nebius AI Studio (OpenAI-compatible API) extracts report facts as structured JSON, which we then check and turn into the fingerprint.
- Hosting: Render, with a single
render.yaml. The only secret is the Nebius API key; the contract address and network settings live in the code.
Challenges we ran into
- Browser blockers: Brave Shields blocked the Arc network address, so balances and credits wouldn't load. We routed read-only requests through Faircri's own server so nothing in the browser can block them.
- AI model access: our Nebius key didn't have access to the model we planned to use. Faircri now checks which models the key can use and picks one automatically.
- Testnet funds: faucets need a human check, so we moved to Arc Testnet, where test USDC from Circle's faucet covers fees without any mining.
- Plain language: our first version was full of technical jargon. We rewrote the whole UI so anyone can understand it in seconds.
Accomplishments that we're proud of
- A live, working product at faircri.onrender.com with a real contract on Arc Testnet.
- Duplicate credits are blocked by the contract itself, not just by the website.
- AI that reads messy reports in seconds, while humans and wallets stay in control of issuing.
- A dashboard ordinary people can use: connect, paste, approve, done.
- 20 passing contract tests covering issuing, duplicates, retiring and flagging.
What we learned
- Trust problems are often data problems: a simple, unique fingerprint goes a long way.
- AI is great at reading documents, but it should never be the one making the final call or holding the keys.
- Clear words matter as much as clear code. If users can't understand the screen, the tech doesn't matter.
What's next for Faircri
- Pilots with carbon registries and project developers using real monitoring reports.
- Moving from testnet to mainnet.
- Reading PDF and scanned reports directly.
- Shared fingerprint checks across registries, so a report can't be double-issued anywhere.
- A public explorer and an API so buyers can check a credit before they buy.
Built With
- blockchain
- nebius
- nextjs
Log in or sign up for Devpost to join the conversation.