A solar sales org tracked rep performance through an Excel sheet. Most people didn't fill it in. The ones who did spent 10 minutes and still got it wrong. Management had zero real-time visibility — they'd ask for weekly reports and get back whatever people could remember. I built a replacement in a week as a side project. Then everyone started using it.
The design constraint was adoption. If it took more than a minute to use, it wouldn't get used. I started from the rep's perspective: phone in hand at the end of a long day, low patience, wants to be done. Everything else — the leaderboard, the manager dashboard, the Google Sheets sync — was secondary to that 30-second interaction.
"Points aren't stored anywhere. They're calculated fresh from raw activity counts every time you load the leaderboard. That sounds like extra work until you realize the scoring rules changed twice while people were already using the app. Because nothing was hardcoded, historical data recalculated automatically both times. No migration scripts. No stale numbers. No angry reps wondering why their score from last month looks wrong. The right way to build this was to never store derived data in the first place."
Strict Google OAuth flow checks domain allowlists. Role-based middleware ensures field reps and office coordinators access the correct reporting endpoints.
Submitting a report triggers a conflict-aware PostgreSQL upsert. Points are strictly a computed derivative of raw activity, maintaining a single source of truth.
Parallel execution paths push relevant lead statuses to an external Google Sheet using stored refresh tokens via the Google API.
React components map raw data into heatmap grids, 30-day trend lines, and tie-aware rank leaderboards instantly.
Field reps work on phones. That's the only requirement that matters. Building a native app for an internal tool means App Store approvals, release cycles, and maintenance overhead nobody needs. A PWA installs from the browser, works offline-capable, and ships like a website.
The team already had lead data in Google Sheets. That habit wasn't going away. Fighting it would mean a migration nobody wanted and a tool nobody trusted. So I plugged into their existing sheets instead. Reps manage leads from the app. Data writes back to the spreadsheet they already knew.
Points aren't saved anywhere — they're computed from raw activity counts every time they're needed. Storing derived values is a trap: the moment the scoring rules change, your historical data is wrong. The rules did change, twice. Because points are always recalculated on the fly, every change applied retroactively with zero effort.
Internal tool. Company emails only. Google OAuth with an email-domain allowlist means no password management, no reset flow, no account security headaches. Someone leaves the company — access stops working the moment IT revokes their account.
RepTrack is a PWA. Reps open it on their phone, pick their work mode — field, home, or off — enter their activity counts, and close it. 30 seconds on a bad day. Every activity converts to points through a weighted scoring system. The leaderboard updates in real time. Reps see where they stand. Managers filter by team and time period and see live rankings without asking anyone for a report. No more weekly emails. The numbers are always current.
The business owner finally had visibility into team performance. Within 3 months, sales grew 25% — not because of the app, but because of the conversations the data made possible.