Performance & Optimization

Engineered for performance.

Every millisecond matters. Every query optimized. Every bundle split. We obsess over performance because our customers' time is valuable.

47ms API
Sub-50ms target
35% Faster
Drive time reduction
94% Cache
Hit rate

Geographic Clustering

Other systems: 200ms to cluster appointments. Ours: 20ms. How? We don't calculate distances. We index space itself.

20ms clustering
10x faster than industry standard
35% drive time reduction
Real impact for technicians
Scales to 10,000+ jobs
Without breaking a sweat
clustering.ts
// How do we cluster 1000+ appointments in 20ms?
// Magic.

const clusters = await findOptimalClusters(appointments);

// That's it. No loops. No distance calculations.
// Just... magic.

return clusters; // <20ms
cache.ts
// Zone detection: 25ms elsewhere
// Ours: 2ms

const zone = await getZone(zipCode);

// How? We remember things.
// 94% of the time, we already know.

return zone; // <2ms

We Remember Everything

Other systems query the database every time. We remember. 94% of requests never touch the database. How? We care enough to cache intelligently.

94% hit rate
We already know the answer
12.5x faster
25ms → 2ms lookups
Smart invalidation
We forget when it matters

Queries That Don't Hurt

Other systems: table scans, sequential reads, slow queries. Ours: every query has a path. Every lookup is instant. How? We think ahead.

<10ms queries
Even with thousands of records
No table scans
We know where everything is
Index-only reads
The database barely works
queries.ts
// Find appointments: <10ms
// How? We prepared.

const appointments = await findAppointments(criteria);

// No loops. No scans. Just... fast.

return appointments; // <10ms
bundles.ts
// Initial bundle: 450KB elsewhere
// Ours: 287KB

export default function Page() {
  return <App />;
 }

// How? We only load what you need.
// Magic.

We Only Load What You Need

Other systems: 450KB initial bundle. Ours: 287KB. How? We don't load everything at once. We're patient. We wait until you actually need it.

33% smaller
Initial load reduction
1.2s first paint
Pages appear instantly
Lazy everything
We load on demand

Technical Architecture

H3 Spatial Indexing

Most routing software calculates distances between every appointment pair. For 1,000 appointments, that's 499,500 distance calculations. Even with optimizations, this takes 200-300ms.

We use Uber's H3 hexagonal spatial indexing system. The earth is divided into hexagons at multiple resolutions. Each location gets an H3 index. Nearby locations share the same index prefix.

To find nearby appointments, we query by H3 index prefix. No distance calculations required. Database returns results in under 10ms. We then use PostGIS for precise distance calculations only on the filtered results. Total time: 20ms for 1,000+ appointments.

Redis Caching Strategy

We cache aggressively using Upstash Redis. Service areas, zip code mappings, equipment catalogs, and pricebook items are cached with multi-hour TTLs. Cache hit rate averages 94%.

Cache keys use hierarchical namespacing. Company-level cache includes company ID in the key. User-level cache includes both company ID and user ID. This prevents cache poisoning across tenants.

Cache invalidation uses dependency tracking. When a pricebook item changes, we invalidate all estimate caches that reference that item. Stale cache bugs are caught in CI tests before deployment.

Database Query Optimization

Every database table has composite indexes optimized for common query patterns. Appointments table has indexes on (companyId, scheduledDate), (companyId, technicianId, status), and (companyId, customerId).

We use PostgreSQL's EXPLAIN ANALYZE in CI to catch slow queries before they ship. Any query taking longer than 50ms on our test dataset (10,000 records) fails the build.

Prisma's query builder generates efficient SQL. We avoid N+1 queries by using include statements for related data. Complex reports use raw SQL with optimized joins.

Frontend Performance

Initial bundle size is 287KB gzipped. We achieve this through aggressive code splitting. Each route loads only the components it needs. Heavy libraries like chart.js are lazy-loaded.

React Server Components render on the server for instant first paint. Client components hydrate progressively. Critical UI appears in under 1.2 seconds on 3G connections.

We use TanStack Query for client-side caching. API responses are cached in memory. Background refetching keeps data fresh without blocking the UI. Optimistic updates make actions feel instant.

Offline-First Mobile Architecture

The mobile app uses a local SQLite database that syncs with the server. Technicians download their assigned appointments, customer history, and pricebook data when they have connectivity.

All actions (creating invoices, taking photos, collecting signatures) work offline. Changes are queued and synced when connection returns. Conflict resolution uses last-write-wins with server timestamp authority.

Photos are compressed on-device before upload. We use WebP format at 80% quality. Average photo size is 150KB instead of 3-5MB. This reduces cellular data usage by 95% and upload time by 90%.

Real-Time Updates

Dispatch board updates use Supabase Realtime (WebSocket). When a technician's status changes, all dispatchers see the update within 500ms. No polling required.

Customer portal shows live technician tracking via GPS updates every 30 seconds. We use battery-efficient location services that don't drain the technician's device.

WebSocket connections include automatic reconnection with exponential backoff. Missed messages are replayed from server-side buffer. UI stays consistent even with network interruptions.

How do we do it?

Coffee. Lots of coffee. And caring enough to optimize every single thing.

We Measure Everything

Every optimization is benchmarked. Every improvement is tracked. We don't guess. We know exactly how fast things are.

We Care About Results

Technicians saving hours. Customers getting faster service. Real impact, not vanity metrics.

We Never Stop

Every release includes performance improvements. Every feature is built with speed in mind. Optimization is the default, not the exception.

We Think Ahead

We don't optimize after things are slow. We optimize before they're built. Every decision considers performance from day one.

Ship code that matters.

Join a team that obsesses over performance. Where every millisecond counts. Where optimization is the default, not the exception.