I just ran git log --oneline | wc -l on our codebase.
1,104 commits in the last 60 days.
That's roughly 18 commits per day. Every single day.
Some days it was 50+ commits. Some days it was fixing the same bug three times because I didn't understand what was actually broken.
This is what "building fast" actually looks like when you strip away the LinkedIn highlights.
September 23: Day One
The first commit was titled "Initial VerityInspect deployment setup."
VerityInspect. That's what PeakOps was called before we understood what we were actually building.
The plan was AI-powered video inspection for restaurants. Upload a walkthrough video, our AI would detect health code violations, PPE issues, cleanliness problems. We had AWS Rekognition integration, Bedrock for analysis, the works.
Beautiful technology. Wrong problem.
"Fix Celery module not found error"
"Fix Python externally-managed-environment error"
"Fix Redis health check by adding REDIS_URL"
"Optimize Celery startup to reduce memory usage and prevent restarts"
— Actual commit messages from September 24
Day two was spent fighting deployment infrastructure. Not shipping features. Not talking to customers. Debugging why Celery wouldn't start on Render.
September 28: The Rebrand
Five days in, we renamed everything from VerityInspect to PeakOps.
Not because of customer feedback. Because we finally articulated what we wanted to be: a platform for operational excellence, not just inspection software.
The rebrand involved:
- Changing the domain to getpeakops.com
- Updating every reference in the codebase
- Redesigning the marketing site
- Building a new ROI calculator
- Adding PostHog analytics
All of this before we had a single paying customer.
The First Real Feature Push: October
October was when the product started taking shape.
We built the multi-tenant foundation—Brands, Stores, Users. We added the manager review workflow. We migrated to a forward-compatible architecture that could support multiple videos per inspection.
Then we kind of... stopped. The main branch went quiet for almost a month.
We were in pilot conversations. Learning what actually mattered to restaurant operators. Discovering that nobody wanted to upload videos.
The best month for learning was the worst month for commits.
November: The Explosion
November is when everything accelerated.
We shipped more in three weeks than in the previous five. Not because we worked harder, but because we finally knew what to build.
Google Reviews Integration (Nov 3-4)
We built Google Places API integration with a scraping fallback.
Why a fallback? Because Google's OAuth requirements are brutal for small businesses. Not every restaurant owner has a Google Business Profile properly configured. So we built a system that works either way.
Then we added AI-powered sentiment analysis. Review Insights. Trending Topics dashboard. The ability to see what customers are actually saying across all your locations.
The Security Wake-Up Call (Nov 10)
This one still makes me uncomfortable to write about.
We discovered tenant isolation issues. The kind where, theoretically, data from one customer could leak to another if the access control wasn't perfect.
The commit message was: "Add critical security fixes for tenant isolation."
We spent the next two days implementing comprehensive tenant isolation infrastructure. Testing every viewset. Adding account-level and brand-level filtering. Making sure a GM at Store A could never accidentally see data from Store B.
The lesson: Security can't be an afterthought. We got lucky—we found this before it mattered. But "move fast and break things" has real limits when you're handling customer data.
7shifts Integration (Nov 10-14)
This was our first real third-party integration, and it taught us everything about building for the real world.
7shifts is workforce management software. Almost every restaurant we talked to used it. So we built an integration: sync employees, sync schedules, deliver micro-checks to whoever is actually working.
What we didn't anticipate:
- Rate limiting. We had to reduce our page size from 500 to 100 because larger requests kept failing.
- Cursor-based pagination. Their API doesn't use simple page numbers. Had to rewrite our sync logic.
- Transaction cascade failures. One bad record could kill an entire sync. We had to make everything atomic.
None of this is in the feature announcement. It's the invisible work that makes features actually work.
Employee Voice (Nov 11-19)
This feature went through three major redesigns in eight days.
We started with pulse surveys. Simple enough. Then we added AI-powered insights. Then week-over-week trends. Then we removed the Auto-Fix UI because it was confusing. Then we removed redundant tabs.
The commits tell the story:
"feat: add enhanced AI insights display for Employee Voice"
"fix: remove Auto-Fix configuration UI from Employee Voice"
"refactor: remove redundant Invitations tab"
"refactor: change insights to weekly report instead of 30 days"
Every "refactor" and "remove" is a lesson learned. Features we built that didn't survive contact with reality.
Multi-Store Employee Management (Nov 20)
We discovered that employees don't always work at just one store.
Seems obvious in retrospect. But our data model assumed one employee = one store. When a pilot customer asked "what about our floaters?", we had to rebuild the entire employee-store relationship.
15 commits in one day. New model, new API endpoints, new UI, new sync logic to preserve manually-set primary stores when 7shifts sync runs.
The Bugs That Taught Me the Most
The Timezone Bug
November 19: "fix: timezone issue causing date filtering to return no results"
Guest Reviews wasn't showing any results. Took hours to debug. The issue? We were filtering by UTC dates, but the frontend was sending local timezone dates. Classic.
The OOM Crisis
November 21: "fix: prevent OOM in admin analytics endpoints"
Our admin dashboard started crashing in production. The analytics endpoints were loading too much data into memory at once. We had to add pagination and streaming responses.
The N+1 Queries
We're still finding these. Today's commits included:
"fix: add select_related to video queries"
"fix: add select_related for template in micro-check responses"
"fix: add select_related('store') to inspection queries"
Every one of these is a page that was loading slowly because we forgot to optimize a database query. They're easy fixes once you find them. Finding them is the hard part.
What the Numbers Don't Show
1,104 commits sounds impressive. Here's what that number hides:
- ~180 pull requests merged. Most are tiny. Some are 50+ files changed.
- 4 major integrations. 7shifts, Google Reviews, PostHog, Twilio SMS.
- 1 complete rebrand. Domain, name, logo, marketing site.
- Dozens of features removed. Auto-Fix UI, AI Walkthrough navigation, Command Center sidebar item.
- At least 3 security fixes that I'm grateful we found before they mattered.
The product today looks nothing like what we started building on September 23.
That's the point. We learned what to build by building the wrong things first.
The Architecture Evolution
September 23: AI Video Inspection Platform
Upload videos, get AI-powered compliance reports. Beautiful tech demo. Zero customer pull.
November 21: Full-Stack Restaurant Operations Platform
- Micro-Checks (daily operational questions, shift-based delivery)
- Employee Voice (pulse surveys, AI insights, sentiment tracking)
- Guest Reviews (Google integration, trend analysis)
- 7shifts Integration (workforce-aware delivery)
- Multi-tenant, multi-store architecture
The video AI stuff is still there. It's just not the product anymore. It's a feature that some customers might use. Maybe.
What I'd Tell Past Me
Talk to customers before you have anything to show. We spent September building infrastructure. We should have spent September on the phone.
Security isn't optional. Multi-tenant isolation should be the first thing you build, not the 500th commit.
Integration APIs are never as clean as their documentation. Budget 3x the time you think you need.
Removing features is as important as adding them. Every feature you ship is one you have to maintain.
What's Next
We're still building. Still learning. Still finding N+1 queries.
The next 60 days will probably look different. Fewer features, more customer conversations. Less architecture, more iteration on what exists.
1,104 commits got us here.
The next 1,104 need to be smarter, not just faster.
Previous in The Pivot Chronicles
Part 10: Starting Over (Again): What Would Change With 10 Real Customers
If I had to start over tomorrow and get 10 paying customers in 30 days, almost everything I've built so far would be irrelevant.
Share This Post
Know a founder who's building in public? They might appreciate the raw honesty.
