Solar Panel Recycling: A B2B Marketplace
Building a WEEE-compliant B2B marketplace for end-of-life solar panels. Event sourcing, competitive bidding, blockchain certificates.
The solar panel waste problem in Europe
Europe installed roughly 60 GW of solar capacity in 2023 alone. Panels have a 25-30 year lifespan, which means the first wave of mass-installed panels is reaching end of life right now. By 2030, the EU expects 4-5 million tonnes of decommissioned photovoltaic waste annually.
The EU's WEEE Directive (Waste from Electrical and Electronic Equipment) makes producers responsible for collection and recycling. But there's a gap: the regulation exists, the enforcement is coming, and the infrastructure to handle it at scale mostly doesn't exist yet. Asset owners — solar farms, commercial installers, municipalities — have panels to dispose of and no efficient way to find certified recyclers, compare pricing, or prove compliance.
We built the Solar Circularity Hub to close that gap: a B2B marketplace connecting asset owners with verified recycling and logistics partners, with compliance documentation built into every step of the workflow.
Three-role architecture: admin, owner, partner
The platform serves three distinct user types, each with their own dedicated panel built on FilamentPHP:
Asset owners (solar farms, commercial installers, anyone with panels to decommission) create batches, import panel data, track the recycling lifecycle, and download compliance certificates. Their panel is optimized for portfolio management: how many panels are in which stage, what's been recycled, what's pending.
Partners (logistics companies and certified recyclers) browse available batches in a job board interface, submit competitive quotes, upload evidence of work performed, and manage invoicing. Their panel focuses on operational efficiency: available jobs by region, pending pickups, SLA compliance tracking.
Administrators verify new partners (checking certifications, insurance, operational capacity), monitor SLA compliance across the platform, generate WEEE compliance reports, and manage the overall marketplace quality. They see platform-wide analytics: throughput, revenue, partner performance scores, and regulatory reporting dashboards.
Each panel is fully isolated. Partners can't see other partners' quotes. Owners can't see partners' financial metrics. The role separation isn't just UX convenience. It's a data access control boundary.
The 80% efficiency triage engine
Not every decommissioned panel belongs in a recycler's shredder. Panels that retain sufficient output capacity can be resold for second-life applications: off-grid installations, developing-market deployments, or lower-output use cases where brand-new panels aren't cost-justified.
We built an automatic triage engine that classifies panels the moment a batch is created:
- Grade A (Reuse) — efficiency at or above 80% and no physical damage. These panels are routed to the resale pipeline
- Grade B (Recycle) — efficiency below 80%, or damaged panels regardless of efficiency. These are routed to material recovery
The 80% threshold is configurable per deployment via environment variable, because different markets and panel types have different economic breakpoints for second-life viability. The triage runs automatically on batch creation, but administrators can override individual classifications when field inspection reveals something the data didn't capture.
For recycled panels, the platform calculates estimated material recovery, including silicon, copper, glass, and aluminum content based on panel type, manufacturer specifications, and weight. These estimates flow into the compliance certificates and give asset owners concrete data about the environmental outcome of their recycling decisions.
Event sourcing for WEEE compliance audit trails
Compliance-heavy industries need one thing above all else: a verifiable, immutable record of what happened and when. We solved this with event sourcing.
Every state change in the system generates a domain event: BatchCreated, TriageCompleted, QuoteAccepted, PickupEvidenceUploaded, BatchProcessed, CertificateGenerated. These events are immutable. Once written, they can never be modified or deleted. The current state of any batch is a projection built by replaying its event stream.
This architecture gives us something traditional CRUD applications can't offer:
- Complete audit history. A regulator asks "who handled batch #4782, when did they pick it up, and what evidence do they have?" We don't need to query multiple tables or piece together log files. The event stream for that batch tells the entire story.
- Temporal queries. "What was the status of all batches on March 15th?" Replay events up to that date. Done.
- Tamper evidence. Because events are append-only, any attempt to retroactively alter records would break the event chain. The audit trail is self-verifying.
We use the same event sourcing patterns we developed for our banking platform, adapted for the recycling domain. The patterns transfer well, since both domains require regulatory-grade audit trails and both benefit from temporal query capabilities.
Competitive bidding and SLA enforcement
When an asset owner creates a batch and lists it for recycling, verified partners can submit competitive quotes: a price, a currency, and a validity period. Multiple partners can quote on the same batch, and the asset owner (or administrator) selects the best offer. Rejected quotes receive automatic notifications.
Once a partner wins a job, the clock starts. The platform enforces SLA deadlines:
- Pickup deadline: 48 hours from assignment, with a 4-hour grace period
- Processing deadline: 7 days from pickup, with a 24-hour grace period
If a partner misses a deadline, the system automatically flags a violation. Violations affect the partner's performance score, which is visible to asset owners when they evaluate future quotes. Chronic violators can be suspended by administrators.
The bidding and SLA system together create a quality-driven marketplace. Partners compete on price, but their ability to win jobs also depends on their reliability score. Asset owners get competitive pricing and confidence that the work will actually get done on time.
Blockchain-anchored certificates for material recovery
When a batch is fully processed — panels recycled, materials recovered, weight verified — the platform generates a compliance certificate. This isn't a PDF printout from an Excel sheet. It's a structured document anchored to a blockchain transaction, providing tamper-proof verification that the recycling actually happened.
Each certificate includes:
- Batch identification and panel count
- Triage classification (Reuse or Recycle)
- Material recovery data: kilograms of silicon, copper, glass, and aluminum recovered
- Partner identification and processing evidence (photos, weight tickets)
- Timeline: creation, pickup, processing, and certification timestamps
- Blockchain transaction hash for independent verification
Asset owners can download these certificates for their own compliance documentation. When WEEE regulators request proof of responsible disposal, the certificate, backed by an immutable event log and a blockchain anchor, provides evidence that goes well beyond what most recycling processes can demonstrate.
API-first design and what we learned
The platform exposes a comprehensive REST API (documented with OpenAPI 3.0) that enables external systems to interact with the marketplace. WooCommerce and Shopify integrations let partners sell reclaimed panels through their existing e-commerce channels, with inventory automatically synchronized via webhooks.
This API-first approach means the marketplace isn't limited to our own UI. External logistics systems can pull job assignments. ERP systems can push batch data. Reporting tools can aggregate compliance data. The platform becomes infrastructure, not just a website.
A few things we learned building this:
Evidence-based workflow states turned out to be the most valuable design decision. In most applications, moving from state A to state B is a database update. In our system, moving a batch from "Assigned" to "Picked Up" requires photographic evidence and a signed manifest. Moving to "Processed" requires a weight ticket. More friction? Yes. But it's the kind of friction that makes the audit trail credible rather than decorative.
We didn't expect geographic matching to matter as much as it does. Then a recycler in Hamburg quoted on a batch in Lisbon, and the logistics cost wiped out any economic sense. We built multi-factor partner matching that scores on proximity, capacity, rating, and responsiveness. Practical options surface first.
The regulatory scope keeps growing. We started with WEEE compliance. Then asset owners asked about cross-border waste transport restrictions. Then carbon credit documentation for material recovery. The event-sourced architecture handles this well: new projectors derive new views from the existing event stream without touching the core workflow. But each new compliance dimension still means new domain modeling, new tests, new edge cases. The architecture scales; the work doesn't shrink.
The platform currently runs over 2,000 automated tests to verify that compliance-critical behavior works correctly, and meets WCAG 2.1 Level AA accessibility standards — because regulatory platforms shouldn't exclude users with disabilities.
If you're working in circular economy infrastructure, renewable energy compliance, or B2B marketplace development, we've solved some of the harder problems in this space. Our approach to Domain-Driven Design in Laravel shaped how we modeled the recycling domain, and the same architectural patterns apply to any compliance-heavy marketplace. Get in touch if you'd like to discuss it.
Working on something similar?
We bring the same engineering approach to client projects. Tell us about yours.