Solar Sales Tracker

web appsalesdashboard

The original system worked until it did not. Sales reps, coordinators, and managers were all operating from one large Google Sheet with formulas layered on top of formulas. It was flexible early on and increasingly fragile as team size and sales volume grew.

The constraint was clear from the start: stay inside the Google ecosystem. No full platform migration, no long retraining cycle.

So the project became a reliability upgrade, not a tooling reset.

The goal was not to replace Sheets. The goal was to make Sheets operational at team scale.

What was breaking in day-to-day operations

The biggest pain points were less about missing features and more about process friction:

AreaExisting behaviorPractical impact
Intake workflowManual entry and ad hoc formattingFrequent data cleanup and delayed reporting
Commission logicComplex formulas spread across tabsCalculation drift and hard-to-audit payouts
Team visibilityReports assembled after the factSlow decisions and poor pipeline awareness
CollaborationMultiple editors in one dense workbookAccidental overwrites and trust issues

None of these issues were dramatic on their own. Together, they created a lot of administrative drag.

Architecture that fit the constraint

The implementation used Google Apps Script plus structured Sheets/Drive workflows. The key design choice was moving critical logic out of cell formulas and into versioned script paths.

That made validation and payout logic easier to reason about and easier to update safely.

function processSaleRow(row) {
  const normalized = normalizeSale(row)
  validateRequiredFields(normalized)

  const commission = calculateCommission({
    contractValue: normalized.contractValue,
    role: normalized.repRole,
    splitPercent: normalized.splitPercent,
    bonusTier: normalized.bonusTier,
    chargebackRisk: normalized.chargebackRisk,
  })

  writeCommissionRecord({
    saleId: normalized.saleId,
    repId: normalized.repId,
    commissionTotal: commission.total,
    breakdown: commission.breakdown,
    calculatedAt: new Date().toISOString(),
  })
}

Once this logic was centralized, formula sprawl dropped and payout changes became more controlled.

Dashboarding and management workflow

The dashboard layer focused on real operational questions:

  • which reps are pacing to goal this week
  • where deals are stalling in the pipeline
  • where manager intervention is needed before month-end

Team leads no longer had to reconstruct status from scattered tabs. The same data model fed both rep-level performance views and leadership rollups.

Commission traceability was the highest leverage fix

Commission disputes were one of the most expensive time sinks in the old process. The updated workflow produced structured records for each payout event instead of only final numbers in a sheet cell.

{
  "sale_id": "SOL-2024-1182",
  "rep_id": "rep-047",
  "plan_version": "v3.2",
  "base_commission": 1450.0,
  "bonus": 300.0,
  "split_adjustment": -217.5,
  "chargeback_holdback": 100.0,
  "total_payout": 1432.5
}

That single change made auditing and manager review much faster.

Measured outcomes

The rollout produced the same outcomes the team was targeting from the beginning:

  • 75% reduction in administrative time
  • 90% decrease in calculation errors
  • faster commission turnaround
  • clearer, real-time visibility for team leaders

The important part was not a dramatic new stack. It was disciplined automation around existing workflows.

Final note

Solar Sales Tracker worked because it respected the team’s operating reality. By keeping the familiar Google environment and moving fragile logic into script-based contracts, the system became more reliable without forcing a disruptive process change.

Contact

Questions, feedback, or project ideas. I read every message.