EVgo Access Report 2.0
Saving thousands in parking fees with an admin dashboard that gave EVgo control
Impact at a Glance
• Thousands saved in monthly parking fees
• 3-month delivery (design + development + deployment)
• 2-person engineering team managed via weekly sprints
• Automated billing system shifted parking costs to violators
• Zero to launch with limited insight into EVgo’s enterprise systemEVgo Access step-by-step
The Problem
EVgo Access was bleeding money.
The company launched a new app feature that allows EV drivers to access gated parking facilities via a QR code scan—free charging in paid garages as long as they stay within the courtesy time windows.
It backfired.
Within months, EVgo discovered:
Customers were overstaying
—racking up thousands of dollars in parking fees that EVgo had to cover
Chargers were blocked
—by cars with active sessions, preventing new customers from entering
Admins had zero control
—they couldn't investigate sessions, close parking violations, or enforce time limits
The company needed an internal tool to monitor, manage, and charge violators—fast.
My Role
Product Designer & Manager (via AE.studio)
3 months | Team of 4
I led design and product management for a 2-engineer team, working with EVgo's Director of Software and Head of Customer Operations. We had:
• No formal requirements document
• Fragmented design system
• Restricted dev environment
• 3-month deadline
I started design and development on the same day, defining requirements in real-time through weekly Design Story Writing sessions.
EVgo Access Report 2.0 Dashboard
The Challenge: Building Without a Blueprint
Week 1:
• Onboarded at AE.studio
• Shadowed another project manager wrapping up at EVgo
• Had limited knowledge of EVgo's internal systems
Week 2:
• Launched the first sprint on the EVgo Access Report
• Started gathering requirements on the fly
• Learned how courtesy time, violations, and garage billing worked
Weeks 3-12:
• Designed UI/UX while engineers built backend infrastructure
• Translated business requirements into user stories and acceptance criteria
• Created prototypes for weekly stakeholder demos
• Shipped features incrementally via Scrum (daily standups, weekly sprint planning, Friday demos)
EVgo Access Report 2.0 screens and components
What I Built
1. The Core Problem: Understanding Courtesy Time
What is courtesy time?
The estimated window for a customer to enter a garage, find a charger, charge, and exit—without paying parking fees.
The estimated window for a customer to enter a garage, find a charger, charge, and exit—without paying parking fees.
Why it mattered:
• Logistical teams set courtesy windows during garage construction
• If customers overstayed, EVgo paid parking fees AND lost charger availability
• Metropolitan garages charged tiered rates (time-of-use pricing)
What I designed:
A system to set, track, and enforce courtesy time limits across all locations.
courtesy time mental model
close parking session prototype
violation key
2. Violation Types & Automated Billing
I defined 3 violation types:
Overstay exceeding max time
Customer stayed beyond the absolute maximum allowed (regardless of charging).
Customer stayed beyond the absolute maximum allowed (regardless of charging).
Overstay with charging
Customer charged but stayed longer than the charging time + courtesy time.
Customer charged but stayed longer than the charging time + courtesy time.
Customer entered, didn't charge, and exceeded courtesy time.
Solution:
Created visual icons for each violation status:
• Outstanding: Session open, currently in violation
• Fee Applied: Admin closed session with fee charged
• Automated: System detected a violation and auto-closed
• Processing Fee: Fee pending (charged when QR code is scanned on exit)
• No Fee: Admin closed a session without charging
Admins could instantly identify violation types when reviewing hundreds of sessions.
access report 2.0 table
3. Report Table with Search, Filter, Sort
The Problem: Admins needed to find specific sessions among thousands of records quickly.
What I Built:
• Search by QR code, account ID, site name, or address
• Sort parking and charging session data
• Filter by site name, violation type, and date range
• Export CSV files for external analysis
Impact:
Gave admins granular control to investigate issues and identify patterns.
close session dialog box
4. Close Parking Session (The Money-Saver)
The Big Win: Admins can now manually close parking sessions that violate courtesy times.
How it works:
• Each open session in the table has a "Close" button
• Admin closes the session → Fee applied to the customer's account
• Manual override option: "Set billed amount manually" for edge cases
Impact:
EVgo stopped hemorrhaging money. Instead of absorbing thousands in parking fees, violators now pay.
parking session settings
5. Parking Session Settings (Courtesy Times & Rates)
User Authentication:
Created two permission levels to separate reporting from settings:
Created two permission levels to separate reporting from settings:
Super Admin:
• Set courtesy times for each location
• Configure daily rates or interval-based rates
• Manage all locations
• Full reporting access
Admin:
• View and operate Access Report
• Cannot change settings
Courtesy Time Inputs:
• Entry Time: Minutes allowed to enter and find a charger
• Exit Time: Minutes allowed to unplug and exit
• Charging Time: Minutes added per charge session (can have multiple)
• Max Time: Absolute limit before automatic fee, regardless of totals
Different garages have different layouts and pricing. This system allowed EVgo to customize rules per location.
set interval component
6. Daily & Interval Rate Billing
The Problem: Some garages charge flat daily rates. Others charge tiered rates based on time of use.
What I Built:
Flexible rate structure using intervals:
Flexible rate structure using intervals:
• Duration Start/End: When this pricing window applies
• Fee Assessment Interval: How often to charge (e.g., every 30 minutes)
• Fee Per Interval: Amount charged per interval
• Total Interval Fee: Sum for entire duration
Example:
Morning (6 am - 12 pm): $5/hour
Afternoon (12 pm - 6 pm): $8/hour
Evening (6 pm - 12 am): $12/hour
Morning (6 am - 12 pm): $5/hour
Afternoon (12 pm - 6 pm): $8/hour
Evening (6 pm - 12 am): $12/hour
Design Decision:
Reused EVgo's existing tariff UI pattern (multiple timer components) so admins didn't need to learn a new interface.
Jira workflow
How I Worked
Process:
• Daily standups to unblock engineers
• Weekly Design Story Writing (DSW) sessions to define requirements with the Product Owner
• Weekly sprint planning, demos, retros following Scrum
• Friday demos with full team + stakeholders
• Weekly notes distributed to marketing/communications teams
• 1-on-1s with engineers for support and feedback
Design Workflow:
• Created Figma prototypes in parallel with backend development
• Reviewed designs during weekly DSW with Product Owner and engineers
• Used Material Design (EVgo's existing UI library) to maintain consistency
• High-fidelity prototypes served triple duty: stakeholder review, QA testing, and dev handoff
Challenge:
Design and dev started the same day. No time for traditional handoff. Solution: I created prototypes a sprint ahead and got feedback in weekly reviews.
The Result
Shipped in 3 months.
The EVgo Access Report became the essential companion tool for EVgo Access:
• Saved thousands in monthly parking fees by billing violators
• Gave admins control to close sessions, set courtesy times, and enforce violations
• Prevented charger blocking by ending overstayed sessions
• Flexible billing to accommodate different garage fee structures
• Scalable permissions for multiple admin teams
Reflections
What Made This Work
Small, agile team.
2 engineers, 1 designer/PM. We sat together (virtually), collaborated constantly, and shipped features incrementally.
2 engineers, 1 designer/PM. We sat together (virtually), collaborated constantly, and shipped features incrementally.
No design system became an advantage.
We weren't constrained by existing patterns. We borrowed from EVgo's Operator Portal where it made sense, but moved fast on everything else.
We weren't constrained by existing patterns. We borrowed from EVgo's Operator Portal where it made sense, but moved fast on everything else.
Requirements emerged through building.
Design Story Writing sessions turned vague business needs into concrete user stories. We figured out courtesy time logic, violation types, and billing structures by prototyping and testing with stakeholders weekly.