DEVELOPMENT · SHIPPED LOG
We don't just plan campaigns. We ship the software that runs them.
Multi-tenant SaaS, client portals, internal tools, iOS apps, autonomous AI agents. The same person who runs your Google Ads writes the code behind the dashboards, the daemons, the booking flows. Below is a partial ledger.
Crewbase
An operations OS for landscaping companies. CRM, kanban pipeline, jobs, routes, invoices, crew PWA with geofenced clock-in, customer portal. Built for the office, the truck, and the homeowner, with true tenant isolation enforced at every Prisma query.
Try the live demo
A marketing site that closes the trial.
Operator-voice hero, three-perspective demo (owner, crew, customer), no signup gates. A landscaping company owner clicks "Try the live demo" and is inside a fully populated sandbox workspace in under three seconds.
The admin desk built for someone who'd rather be in the field.
Today's jobs, open AR, leads in pipeline, jobs this week, all on one screen. Every KPI is a hyperlink into the action it implies. No dashboard tabs. No filter panels. Just the day, made operable.
A pipeline that doesn't lie to its operator.
Drag-and-drop kanban with stage value totals at the top of every column. Real deals, with real source tags (Website form / Referral / Google search), real dates, real owners. Filters that filter, not "Coming Soon" pills.
Multi-tenant isolation, hardcoded as a project contract.
Every model carries tenantId. Every server action pulls it from the session, never the request. Every Prisma lookup uses findFirst({ where: { id, tenantId } }). Six-role membership above tenants. The rule is enforced in code, not docs.
Apex Hub
The agency's internal control plane. Client portal, employee desk, ad-account dashboards, outreach console, and integrations to Google Ads, GA4, Gmail, QuickBooks, and Anthropic, all in one Next.js app. One codebase, ~30 distinct surfaces.
Visit the portal
A four-digit PIN gets a client to their numbers.
Clients tap in a PIN, land on their dashboards, see their campaigns, their reports, their invoices. Zero "Sign in with Google" friction, zero password resets. The cost-per-call is the headline, not the login flow.
The desk an operator with two years of receipts would build.
Every account move flows through one surface. Reports, inboxes, ledgers, ticket queues, all wired together so a single decision propagates everywhere it needs to. Built over two years of running real campaigns, refined every week.
Institutional knowledge that doesn't live in your ad account.
Every account move we've made across every client is captured, indexed, and replayable. When we run a sweep on your account, we're applying lessons from every account we've run before. That corpus compounds. You can't get that from a SaaS subscription or a Loom walkthrough.
One repo runs the whole operation.
Same Next.js repo hosts the client portal, the employee desk, the 70+ Google Ads scripts, a public Chromecast TV surface, a Chrome extension, and a Raspberry Pi kiosk daemon. We dogfood every architectural decision before we recommend it to a client.
Every line on this list is shipped in production, not sitting on a "we're learning" list. If it isn't here, we didn't pick it.
Web frameworks
- Next.js 16 (App Router)
- React 19
- Tailwind v4
- Radix UI
- Framer Motion
- Three.js / R3F
- SWR
Backend & data
- Prisma 6 / 7
- Neon Postgres
- iron-session
- NextAuth 5
- Vercel KV / Blob
- Supabase Realtime
- Server Actions
Mobile & native
- SwiftUI
- SwiftData
- VisionKit / Vision
- WidgetKit
- visionOS
- PWA (offline-first)
- Xcode 26
AI & automation
- Anthropic (Claude Opus 4.7)
- Google Gemini API
- Playwright
- Pychromecast
- Python schedule daemons
- Webhooks & cron
- Zod validation
Integrations
- Google Ads API v23
- GA4 / Looker Studio
- googleapis (Gmail, Cal)
- QuickBooks
- Stripe / Twilio / Resend
- Mapbox GL / Turf
- Helius / Jupiter / Jito
Infra & deploy
- Vercel (edge + serverless)
- Railway (long-running daemons)
- GitHub Pages (static)
- Cloudflare DNS
- Docker for the bots
- Raspberry Pi kiosks
- LaunchAgents (macOS daemons)
Tooling
- TypeScript strict
- pnpm / npm workspaces
- Vitest
- Prisma migrate
- git, obviously
- Cursor / Claude Code
- SF Symbols + JetBrains Mono
Things we won't use
- WordPress / Elementor
- No-code "agency" stacks
- PHP CMS bloat
- jQuery in 2026
- Smooth-scroll libraries
- Crypto wallets in marketing
- Chatbots that aren't useful
The other things we've built this year.
Smaller surfaces, internal tools, weekend projects that turned into client engagements. Every one of these lives in production somewhere, even if the user count is one.
Client portal with a 3D vehicle visualizer.
Marketing site embeds real GLTF car models in an interactive WebGL frame. Sixteen-section customer portal covers garage, jobs, quotes, invoices, subscriptions, warranty, and rewards, with no page reloads.
A Python daemon that prospects over iMessage.
Five interleaved jobs run on a schedule: send, watch, refresh, follow-up, daily-gen. Hardcoded safety: 20-send daily cap, 4-8min jittered spacing, business-hours only, per-lead and system-wide auto-reply caps. Claude drafts replies into a review queue.
An autonomous Solana memecoin bot with Opus 4.7 as the brain.
Risk policy is hardcoded: 15% daily / 30% weekly circuit breakers, -35% stop-loss, ladder take-profit at 2x / 3x / 5x / 10x. Every Claude decision captured as a span tree for full reasoning replay. Honest README framing: month-one is tuition.
A StoryBrand site for a PPC client, framework in code.
Every section is a BrandScript beat: Hero, ProblemSection, GuideSection, PlanSection, StakesSection. The component names are the conversion architecture. Schema.org LocalBusiness baked in.
A 15-scene Chromecast OS with a phone remote.
One 3,500-line HTML file (Chromecast-compatible, no frameworks) with hand-written WebGL2 fragment shaders for the visualizer. Scenes: clock, dashboard, S1000RR, weather, Spotify with BPM-synced Party Mode, matrix, fireplace, lava lamp, message board, scoreboard, trader P&L.
An iOS app that turns paper mail into action items.
VisionKit scans, Vision OCRs, Gemini extracts sender + summary + due dates + amounts + URLs into typed fields. Three-tab metaphor: Inbox, Ledger (action items with due dates), Cabinet (10 color-coded categories). Built to replace virtual-mailbox services.
A working surface in week one.
The first thing you see is a deployed URL, even if it's just a clickable shell. From there, every week is a real iteration on a real surface.
A deployed shell
A URL on Vercel, a Postgres schema in Neon, an auth flow that works, the first three real screens you'll be looking at for the next six months. No Figma frames you have to imagine into existence.
Real surfaces, real data, every week
One demo every Friday. Real data, real users (us at first, you next), real flows. We add scope only when the existing scope ships and is in use. If a feature isn't getting used, it gets cut before more get added.
Soft launch, then real users
Internal users first. Then a friendly cohort. Then open. Every cohort is a learning loop, every loop changes the roadmap. Version ones don't survive contact with real users, so we never ship a "big bang" version one.
We stay in the seat after launch
Weekly batches: bugs, polish, the one new thing that came up in a user call. Anything that takes an afternoon just gets done. We keep building the same surface, indefinitely.
Your idea. Our code. Shipped.
30-minute call. You describe the surface you want to exist. We tell you what week one looks like, what stack we'd pick, and whether it's a fit. You walk away with a real plan, even if we don't end up building it.
in the past year
ROSTER CAP · 3 ACTIVE BUILDS