There's a myth that small teams need enterprise software to operate professionally. That a 5-person startup needs Salesforce, Tableau, and Monday.com to compete with companies 10x their size.

It's the opposite. The companies that scale fastest with small teams are the ones that build lean, integrated systems, not ones that stack software. And the fastest way to build those systems? Google Sheets and Apps Script.

We've built operational systems for hundreds of small teams. The pattern is always the same: 5 core systems, all in Sheets, all connected. Here's the playbook.

The 5 Systems Every Small Team Needs

SYSTEM 01

CRM: Every Lead, Deal, and Conversation in One Place

Track leads from first touch to closed deal. QUERY-powered views filter by stage, owner, or date. No per-seat licensing.

Your CRM doesn't need 200 features. It needs 4 views: all leads, my leads, pipeline by stage, and closed this month. QUERY formulas create each view from one master dataset.

Pipeline by stage with total value =QUERY(Deals!A:J, "SELECT D, COUNT(A), SUM(F) WHERE D IS NOT NULL GROUP BY D ORDER BY SUM(F) DESC LABEL COUNT(A) 'Count', SUM(F) 'Value'", 1)
SYSTEM 02

Dashboard: Live KPIs Without a BI Tool

Revenue, pipeline, conversion rates, cash position. All auto-calculated from your data. No Tableau subscription needed.

A dashboard is just formulas that pull from your other systems. Monthly revenue is a SUMIFS. Pipeline value is a QUERY. Conversion rate is a division. SPARKLINE adds trend charts directly in cells.

KPI formulas // Monthly revenue =SUMIFS(Revenue!D:D, Revenue!B:B, ">="&DATE(YEAR(TODAY()),MONTH(TODAY()),1), Revenue!B:B, "<"&EDATE(DATE(YEAR(TODAY()),MONTH(TODAY()),1),1)) // Conversion rate =COUNTIFS(Deals!D:D,"Closed")/COUNTIF(Deals!D:D,"<>") // Revenue trend sparkline =SPARKLINE(QUERY(Revenue!A:D, "SELECT SUM(D) GROUP BY MONTH(B)+YEAR(B)*12 ORDER BY MONTH(B)+YEAR(B)*12"), {"charttype","column";"color","#0F9D58"})
SYSTEM 03

Invoice System: Generate, Send, Track

Create invoices from a template, auto-send via Gmail, track payment status. No QuickBooks needed for most businesses.

A template tab formats the invoice. Apps Script populates it with client data, exports as PDF, and emails it. A tracker tab shows outstanding, paid, and overdue invoices.

Apps Script - Invoice Generator function generateInvoice(row) { const ss = SpreadsheetApp.getActive(); const template = ss.getSheetByName('Invoice Template'); const data = ss.getSheetByName('Invoices') .getRange(row, 1, 1, 10).getValues()[0]; // Populate template template.getRange('B4').setValue(data[1]); // Client template.getRange('B5').setValue(data[2]); // Email template.getRange('D4').setValue(data[0]); // Invoice # template.getRange('D5').setValue(new Date()); // Date template.getRange('B10').setValue(data[4]); // Description template.getRange('D10').setValue(data[5]); // Amount // Export as PDF const pdf = ss.getUrl().replace(/edit.*/, '') + 'export?format=pdf&gid=' + template.getSheetId(); GmailApp.sendEmail(data[2], `Invoice ${data[0]} from Your Company`, `Hi ${data[1]},\n\nPlease find your invoice attached.`, { attachments: [UrlFetchApp.fetch(pdf, { headers: { Authorization: 'Bearer ' + ScriptApp.getOAuthToken() } }).getBlob()] } ); }
SYSTEM 04

Project Tracker: Tasks, Deadlines, Workload

Assign tasks, track status, see who's overloaded. Conditional formatting turns it visual. No Monday.com needed.

Columns: Task | Owner | Status | Priority | Due Date | Notes. Data validation on Status (To Do / In Progress / Done / Blocked). Conditional formatting: red for overdue, yellow for due this week.

SYSTEM 05

Automated Reporting: Reports That Write Themselves

Weekly and monthly reports compiled from your data and emailed to stakeholders automatically. Zero manual effort after setup.

Apps Script - Weekly Report Email function sendWeeklyReport() { const ss = SpreadsheetApp.getActive(); const dash = ss.getSheetByName('Dashboard'); const revenue = dash.getRange('B3').getValue(); const pipeline = dash.getRange('B4').getValue(); const newDeals = dash.getRange('B5').getValue(); const closedDeals = dash.getRange('B6').getValue(); const body = `Weekly Report\n\n` + `Revenue MTD: $${revenue.toLocaleString()}\n` + `Pipeline Value: $${pipeline.toLocaleString()}\n` + `New Deals: ${newDeals}\n` + `Closed This Week: ${closedDeals}\n\n` + `View dashboard: ${ss.getUrl()}`; GmailApp.sendEmail( 'team@yourcompany.com', 'Weekly Report | ' + new Date().toLocaleDateString(), body ); }

The SaaS Cost Comparison

Here's what these 5 systems typically cost in SaaS tools vs. Google Sheets:

  • CRM (HubSpot Starter): $20/user/month × 5 = $1,200/year
  • Dashboard (Tableau): $70/user/month × 2 = $1,680/year
  • Invoicing (QuickBooks): $30/month = $360/year
  • Project Management (Monday): $12/user/month × 5 = $720/year
  • Reporting (Databox): $72/month = $864/year

Total SaaS: ~$4,824/year. And that's the starter tiers.

Google Sheets: $0/year + one-time build cost of $4,000–10,000. Breakeven in 10–24 months, then pure savings.

The Compound Effect

The real power isn't any single system. It's that they're all connected.

Your CRM feeds your dashboard. Your invoice data feeds your revenue metrics. Your project tracker shows workload tied to active deals. When a deal closes in the CRM, the invoice system knows. When a payment clears, the dashboard updates.

In a SaaS stack, this connectivity requires Zapier ($20–200/month), custom integrations, or manual copying. In Google Sheets, it's a formula: =Dashboard!B3 or =IMPORTRANGE(). Native. Free. Instant.

Scale isn't about headcount. It's about systems. The right 5 systems in Google Sheets let a team of 5 operate with the precision and visibility of a team of 50.