Permit Labs
LiveFounding frontend engineer at a startup automating solar plant permit approvals — a slow, state-by-state process the founders had already felt firsthand running their own solar installation business.

The Product
Permit Labs automates the solar plant permit approval process — one of the most painful parts of installing solar, for installers and clients alike. Permit requirements aren't standardized; they change from state to state, and sometimes county to county, which historically meant manual paperwork, long back-and-forths with the authority having jurisdiction (AHJ), and unpredictable timelines. The founders already ran a solar installation business and felt this problem directly with their own clients, so Permit Labs was built to replace that manual, state-dependent process with an automated one.
The product is live today and used by real clients.
My Role
I joined as the founding frontend engineer and was part of the core team from day one, working daily alongside designers, engineers, and the founders to shape both the product and how it got built.
The Hard Problems
Pixel-Perfect UI, Iterated
This interface represents a serious, regulator-facing process, so the bar for polish was high. Getting it truly pixel-perfect took several rounds of revision directly with design — small spacing, state, and interaction details that individually seem minor but together decide whether a product feels trustworthy or like a prototype.
Real-Time Updates via Ably
Permit approval isn't instant — it can take days or weeks to move through a jurisdiction. To keep users engaged and confident nothing had stalled, I integrated Ably to push real-time status updates into the interface as a permit moved through the process, rather than leaving users to guess or refresh.
File Uploads and Upload State
Permit applications depend on supporting documents — plans, drawings, site details — so a reliable upload experience was core, not an add-on. I built the upload flow along with the state management around it: tracking progress, handling failures, and giving clear feedback on what had and hadn't gone through.
Shipping It
Beyond the interface, I set up the deployment pipeline for the frontend, taking the product from local development to something the team could reliably ship and iterate on.
