Available
Demo Build Principles Notes FAQ About Contact →
Available · taking new projects
Custom software · Tucson, AZ

The tool you wish existed? We'll build it.

Custom dashboards, automations, integrations, and AI-assisted tools for operators who've outgrown spreadsheets but don't want to hire an agency. Not configured. Not templated. Built around how your business actually works.

Small team 1–6 week sprints Custom quote per project You own everything
Live · Interactive

Drop a rough idea.
Get a real build plan.

Type anything you're trying to build — a tool, an automation, an internal dashboard. Hit run. Get back a real spec: user flow, technical approach, week-by-week plan. Powered by Claude. Same kind of output we'd send you after our first call.

928@builds:~/idea-to-spec
v0.1 · live
Describe what you want to build
Build plan
Want me to actually build this? Start a conversation →
What we build

Software that does a specific job for a specific business.

Not generic SaaS. Not templates. Custom systems built around how YOUR business actually works.

01 / Internal tools

Dashboards & operations

The tool you wish existed for your specific workflow. Lead trackers, job pipelines, crew management, inventory, custom CRMs.

examples: lead tracking · job pipeline · crew dashboard
02 / Automations

The stuff you keep doing by hand

That manual process you do every day. Form submissions to CRM, lead routing, follow-up sequences, status updates, notifications.

stack: Zapier · Make · Apps Script · Twilio · webhooks
03 / Integrations

Get system A talking to system B

You've got 5 tools that don't talk to each other. I make them. Custom Sheets ↔ Stripe ↔ Twilio ↔ Gmail ↔ your CRM.

apis · webhooks · OAuth · scheduled syncs
04 / Scrapers & data

Watch the web, alert you

Monitor sites for changes. Pull data on a schedule. Alert systems for new listings, price drops, mentions, opportunities.

python · puppeteer · cron · APIs
05 / MVPs

The thing in your head, working

You've got an idea. You want a working prototype to show users or investors. Built in weeks, not months. Real, deployable code.

stack: React · Next · Supabase · Stripe · Netlify
06 / Custom AI

AI integrations that earn their keep

Practical AI inside your operations — classify leads, draft responses, summarize calls, score inputs. Not chatbots — useful work.

claude api · openai · vector search · embeddings
Operating principles

How I think about building software.

The opinions that shape everything I ship. If these resonate, we'll probably work well together.

01 / Stack

Boring tools > shiny tools.

Postgres over the latest vector DB. React over whatever just trended on Hacker News. Boring tech ships faster, attracts more maintainers, and won't go to zero next year. Shiny tech is for hobby projects.

02 / Speed

Ship in weeks, not months.

If a feature takes more than a week to ship, it's probably too big. Slice it smaller. The faster you ship something usable, the faster you learn what's actually wrong with it. Months-long builds are just months-long guessing.

03 / Scope

Cut the feature, not the quality.

When deadlines tighten, agencies cut corners on craft. We cut features. A working three-thing tool beats a buggy ten-thing tool every single time. We figure out the three things upfront so cuts aren't dramatic.

04 / Ownership

You should be able to fire me.

Every project ships with full code transfer, documented setup, and infrastructure access in your name. If you ever want to hand this to another developer, the path is two emails and a handoff call. No lock-in by accident.

05 / Communication

Write the spec together.

We don't disappear for two weeks and surface with a finished thing. You see a working demo every Friday. You catch direction problems on week one, not week four. The cost of a wrong assumption is hours, not weeks.

06 / Honesty

The right answer is sometimes "don't build it."

If your problem is solvable by configuring a $20/month SaaS, we'll tell you. We'd rather refuse a $10k project that doesn't need to exist than build a thing nobody will use. Honest scope-down conversations are part of the engagement.

How we work

No agency theater. Just the five steps between rough idea and shipped software.

You describe the problem

You fill out the form below or we hop on a call. I want to understand the business reality first — what hurts, what you've tried, what success actually looks like. No tech jargon required.

30 min

We write the spec & quote

Within 48 hours you get a real document: what gets built, in what order, with what tech, for what price. No "starting at" or "depending on." A concrete number for concrete work.

48 hr

You approve. We start.

50% upfront, 50% on delivery. No retainers. No "discovery phase" billing. The spec is the contract — if I find scope creep, we talk before changing anything.

Day 1

You see weekly progress

Every Friday: working demo link + 5-minute Loom + what's next week. You catch direction problems early instead of seeing a finished thing that's wrong.

Weekly

Ship & hand off

You get the code, the deployment, the documentation, and a 14-day stabilization period for fixes. After that, optional retainer or you take it from here. You own everything.

End
Stack

What I actually reach for.

Boring is good. We optimize for what ships, what scales reasonably, and what you can hand off to anyone else later. No exotic dependencies.

Frontend
  • React / Next.js
  • Vue (when needed)
  • Vanilla TypeScript
  • Tailwind
Backend
  • Node / Express
  • Python / FastAPI
  • Apps Script
  • Serverless functions
Data
  • PostgreSQL
  • Supabase
  • Google Sheets
  • Airtable
Integrations
  • Stripe, Twilio
  • Claude / OpenAI
  • Zapier / Make
  • Custom webhooks
Deploy
  • Netlify
  • Vercel
  • Railway / Fly
  • AWS (when warranted)
AI/ML
  • Claude API
  • OpenAI API
  • Embeddings & search
  • Local Whisper
Comms
  • Twilio SMS
  • SendGrid
  • Slack webhooks
  • Discord bots
Misc
  • Puppeteer scrapers
  • Cron / scheduled tasks
  • GitHub Actions
  • Cloudflare Workers
Field notes

Opinions we've earned the hard way.

Short writeups on technical decisions we've made or watched fail. Pick whichever sounds relevant.

Before any custom build, I ask: could this be done with a $20/month SaaS and a Zap? Honest answer for most "I need a tool for X" requests: yes, partially. CRM functions? Notion or Airtable. Booking? Calendly. Quote generation? Better Proposals. Email sequences? Mailchimp.

The real question is whether the off-the-shelf option is 85% of the job or 40% of the job. If 85%, configure it. If 40%, build. The mistake is building from zero when off-the-shelf gets you most of the way there with a tenth of the work.

We've turned down projects because the right answer was a one-hour Airtable setup, not a $5k custom dashboard. That's the engagement we want — honest scope-down conversations are part of how we work.

Zapier wins when: the integration is between two well-known SaaS tools, the logic is simple (form → email, payment → spreadsheet row), volume is moderate (under 10k tasks/month), and the customer wants to tweak it later without a developer.

Custom code wins when: the logic gets complex (multi-step branching, conditional retries, error recovery), the volume is high enough that Zapier billing gets ugly, you need fine control over timing/ordering, or the integration involves something Zapier doesn't have a native connector for.

My honest split is roughly 60/40 in favor of Zapier for small business clients, and the opposite for SaaS founders who'll outgrow Zapier within a year. If a Zap works, ship a Zap. Don't build a custom thing to feel sophisticated.

The mistake I see: people building custom from day one "for flexibility" — then never needing the flexibility, but eating maintenance forever.

We've built AI integrations into client tools, and watched a lot of founders waste money trying to AI-ify things that didn't need AI.

AI is the answer when the problem involves unstructured text in, structured action out. Classifying inbound leads ("hot vs cold based on this message"), summarizing call transcripts, extracting fields from messy emails, generating first drafts of customer responses. These are tasks where the rules are real but too fuzzy to code.

AI is a distraction when the problem is fundamentally about storage, retrieval, or workflow. Don't use AI to "find documents" — use search. Don't use AI to "track tasks" — use a CRUD app. Don't put AI in the middle of a process just because you can.

Rule of thumb: if a smart human intern would do the task the same way every time, AI probably isn't necessary. If a smart human intern would use judgment on every input, AI might be a fit.

Most $10k builds become $20k builds because of one phrase repeated five times: "can we also..."

"Can we also add a way to export to CSV?" "Can we also have it text me?" "Can we also let the team add comments?" Each one sounds small. Each one adds 3-8 hours. Five of them add a week.

My defense: the spec we agree on is the contract. New asks get logged as v2 ideas, not added to the current build. After we ship, we look at the v2 list together and decide what's actually worth a second engagement.

This isn't rigidity — it's finishing. A tool that ships in 4 weeks at original scope is 10x more valuable than one that's "almost done" 12 weeks in. Velocity is a feature.

Saying no to projects has saved us more grief than any contract ever could. The patterns we've learned to spot:

The committee project. If decisions require 4+ stakeholders to agree, the project will take 3x longer and end up beige. We work best when one person has clear decision authority.

The vague vision. "I want something like Airbnb but for X." If you can't describe the first 3 things a user does, we're not ready to build yet. We need a conversation first, code second.

The compliance-heavy build. HIPAA, SOC 2, finance regulations. Real expertise required. We'll happily refer you to specialists; we won't pretend we're one.

The fixed-deadline-on-a-vague-spec project. "Launch by November." Sure — but what's launching? Locked deadlines need locked scope. If both are squishy, we're going to have a bad time.

The best projects: one decision-maker, clear pain point, room to ship something useful in 4-6 weeks, no compliance landmines. If that's you, let's talk.

Frequently asked

Questions, answered.

Everything I get asked, in one place. Type your question below and the list filters. No matches? Use the form at the bottom.

0 questions across 8 topics
Jump to
Topic 01

Cost & Pricing

It depends on scope, which is why we quote per project after we talk. Rough mental model: a small automation or simple internal tool is a few-thousand-dollar project. A working MVP with backend, database, and integrations is usually mid-to-high four figures, sometimes low five. We'll tell you exactly what something costs after a 30-minute conversation — no estimates dragged out over weeks.

50% on project start, 50% on final delivery. Stripe invoice both times — you get a real receipt for accounting. No retainers, no monthly minimums, no surprise overages. If scope changes mid-project, we have an explicit conversation and either adjust the quote or descope something else. Surprises only happen on the upside.

Roughly anything above $1,500. Below that, the overhead of writing a spec, setting up the engagement, and doing weekly check-ins eats too much of the value. For tiny one-off automations or quick fixes, our honest advice is to use Zapier, Make, or find a freelancer on Upwork. We'd rather refer you well than overcharge for something that doesn't justify the formal engagement.

We comfortably build up to about $50k. Above that, we'll be honest: you probably need a larger agency. We can refer you to people we trust. The reason: a real $100k+ project usually has parallelizable workstreams beyond what a small team can handle. Better to know upfront than crash into it in month 3.

Sometimes. If you fill out the contact form with enough detail, we can sometimes ballpark a range over email. But anything beyond rough ranges needs a call — we need to understand your business reality before quoting, and that's almost never doable via async messaging. The good news: the call is 30 minutes, free, and you walk away with a written spec either way.

That happens a lot, and it's fine. The first call is partly therapy — we help you articulate what you actually want by asking the right questions. If after 30 minutes we still don't have a clear scope, we'll suggest a small scoping engagement (a few hundred to a couple thousand depending on complexity) where we write a full spec, mock up the UI, and price the actual build. You can take that spec to anyone — us, another developer, no one.

Topic 02

Timeline

Most projects ship in 1–6 weeks. A clean automation is usually a week. A full MVP is usually 4–6 weeks. We'll give you a real timeline in the spec — including the buffer for the surprise stuff that always shows up. We don't optimistic-estimate. The number we give you is the number we actually believe.

Sometimes. If your deadline is real (investor demo, regulatory date, contractual milestone), tell us upfront. We can usually compress timeline by cutting scope — there's almost always 30-40% of a v1 that isn't actually needed for the deadline. What we won't do: take on a rushed deadline and ship something broken just to hit the date. If it can't be done well in the time available, we'll tell you.

Usually within 1-2 weeks of signing off on the spec. If we're fully booked, we'll tell you upfront — no false promises about start dates. The site shows "Available · taking new projects" at the top when we have real capacity.

Two at most, sometimes one when projects are large. Anything more and quality drops. This is a hard rule — we'd rather turn down a project than pretend we have capacity we don't.

Topic 03

Process

Five steps. 1) 30-min call where you describe the problem. 2) Within 48 hours we send a written spec + fixed quote. 3) You approve, we kick off (50% upfront). 4) Working demo every Friday with a 5-minute Loom walkthrough. 5) Ship, hand off code/docs/access, 14-day stabilization for fixes.

Weekly Friday update by default — Loom + working demo link. Plus async text/email anytime you have a question or change request. Most weeks the Friday update is the only formal sync. Heavier-touch projects can include weekly 30-min calls if useful.

Two paths. Small changes (a minor tweak, a copy edit, a button reposition) are part of the engagement. Real scope changes (new features, new sections, "can we also...") trigger a conversation: we either adjust the quote, descope something else, or log the idea for v2 after launch. The goal is no surprises in either direction.

Either party can pause or stop at any milestone. You pay for what's been built; we hand over the code and documentation; we both walk away cleanly. No drama, no lawyers, no kill fees. We'd rather end a project early than drag a bad fit across the finish line.

Sometimes the right move is "you don't need custom software, here's the existing tool you should use." If a 30-minute call saves you a 10-week build, we'd rather tell you that. Honest advice in the first call is free. Spec-writing for actual builds is part of the engagement.

Topic 04

Project Fit

Good fit: you have a specific problem you've already felt, you can describe what success looks like, and you can make decisions without 6 stakeholders.

Bad fit: you want me to figure out the business model, you need a 12-person team for compliance reasons, or you want enterprise-grade SaaS that competes with companies who have 50 engineers.

Yes, with one caveat: we're not your co-founder, and we won't function as one. We'll build the version of your idea you bring to us. We'll push back on technical decisions where we have strong opinions. But we won't validate your business model, find your customers, or commit to revenue share. If you need that, you need a technical co-founder — different relationship, different contract, different price.

No. Most of our best clients are operators, not engineers — landscapers, restaurant owners, contractors, small SaaS founders. You describe the problem in plain English, we translate to code. The only requirement is being able to make decisions and give clear feedback.

Yes — agency overflow and sub-contracting are fine. We'll happily plug into your stack, your project manager, your ticketing system. The only thing we won't do is anonymize our work as if you built it. White-label is fine; ghost-build is not.

HIPAA, SOC 2, PCI Level 1, FINRA, FedRAMP — these aren't lanes for a small team. Real expertise required. We'll refer you to firms that specialize. Lighter compliance (handling PII responsibly, basic data hygiene) is fine — that's just good engineering.

Probably yes. Most projects don't compete with anything we're running. If there's a genuine conflict we'll flag it upfront and we can both decide if it's workable.

Topic 05

Ownership & Code

You do. Full IP transfer on final payment. Code, infrastructure access, documentation — all yours. You can hire anyone else to extend or maintain it. No platform lock-in, no licensing fees, no surprises in year two.

Every project includes 14 days of free stabilization for bugs and small adjustments. After that, you either take it from there (you own everything) or we set up a small monthly retainer for ongoing changes. No mandatory retainers — your call.

Wherever makes sense for the project. Usually Netlify or Vercel for frontends, Supabase or Railway for backends, your own Google account for Apps Script work. Everything is in your accounts, not ours — we get access as a collaborator while building, then drop access on handoff if you want.

Code in your GitHub. Deployment configured and live in your accounts. README with setup steps. Architecture doc explaining what's where and why. Login credentials transferred securely. A 30-minute walkthrough call. Everything another developer would need to take over without ever talking to us.

Yes. Standard mutual NDA available if you want one signed before sharing details. For most projects it's not necessary — but if your idea is competitive-sensitive, just say so in the form.

Topic 06

Tech & Stack

We match the stack to the project. Frontends: React, Next, vanilla JS. Backends: Node, Python, serverless functions, Google Apps Script. Data: Postgres, Supabase, Sheets, Airtable. Deploy: Netlify, Vercel, Railway. AI: Claude API, OpenAI. We optimize for boring, well-supported, easy-to-hand-off. See the Stack section above for the full list.

WordPress (different ecosystem, better builders for that), heavy game engine work (Unity, Unreal), low-level systems programming (kernel modules, drivers), enterprise Java (Spring, etc.), and Salesforce admin work. We also stay away from anything where the primary skill is regulatory compliance — HIPAA, SOC 2, PCI Level 1 — because the right answer there is a specialist firm, not a small team.

Mobile-responsive web apps that work great on phones: yes, that's a big chunk of what we build. Native iOS/Android apps with App Store distribution: not our lane — different toolchain, different skill set. We'll refer you to specialists. For most "I need a mobile experience" cases, a well-built mobile web app is the right answer anyway.

Yes — practical AI integrations are one of our favorite types of project. Lead classification, document extraction, transcript summarization, response drafting, sentiment scoring. Claude and OpenAI APIs are the usual tools. We're not interested in building chatbots for chatbot's sake, but AI inside an operational workflow that earns its keep — that's good work.

Usually yes. Salesforce, HubSpot, Stripe, QuickBooks, custom CRMs, internal databases — most modern systems have APIs or webhooks. If yours is older or weirder, we'll figure out a path: scheduled syncs, CSV imports, scraping if absolutely necessary. The harder integrations are usually old SOAP APIs or proprietary file formats — doable, but slow.

Topic 07

Builder vs Agency

Three real differences. 1) Direct contact: you talk to the builders, not a project manager. 2) Velocity: agencies optimize for billable team-hours; we optimize for shipping. Same project usually finishes in half the time. 3) Honesty about scope: agencies have an incentive to add features (more billing); we have an incentive to ship the minimum useful thing (move to the next project). It's not better or worse — different. For projects under $50k we think small teams win. For projects over $100k a larger agency is usually right.

Fair concern. Our answer: boring tools + clean code + documented handoff. We deliberately use stacks any competent developer can pick up. Code lives in your GitHub. Deployments live in your accounts. If something happened to us tomorrow, you'd hire another developer and they'd be productive within a day. The bus factor is real but mitigatable.

Sometimes, yes. Agencies sub-contract us when they're slammed or need a specific capability they don't have in-house (custom Apps Script work, Claude integrations, scrapers). We're comfortable working under another agency's brand on white-label terms.

Topic 08

Misc

Most of our work is internal tools for businesses that don't want their operations dissected publicly. We're happy to walk you through specific examples (with the client's permission) once we're in a conversation about your project.

Tucson, AZ. We work remotely with clients anywhere in North America. For Tucson/Phoenix clients we can do occasional in-person kickoffs if useful, but it's almost never necessary. 90% of our projects never involve a single in-person meeting.

Generally no. We take cash. If you want to bolt on a small equity grant as a bonus that's fine, but the base engagement is paid in dollars. We've all been the "early developer with equity who got nothing" — not doing that again.

Mountain Time. Most of our deep work happens 6am-12pm; afternoons are for calls and shallower stuff. We're responsive to text/email during business hours. Don't expect replies on weekends or after 7pm — that's how we avoid burnout, which is how we keep shipping.

Yes — once we're seriously talking about a project, we'll connect you with one or two past clients in a similar space. They'll tell you what we got right and what we'd do differently. We find pre-engagement reference calls more useful than scrolling testimonials.

— NO MATCHES —

Couldn't find your question.

That's on us. Use the contact form below — we'll answer directly within 48 hours.

Ask via the form →
About

A small team building real software, the right way.

928 Builds is a small studio out of Tucson focused on custom internal tools, automations, integrations, and AI-assisted operations. We build for operators and small teams who've outgrown spreadsheets but don't want a 12-person agency. Real software, shipped fast, owned by you.

Joel Bennett Lead builder · Tucson, AZ Joel leads every project end-to-end with support from a small extended team of trusted collaborators we've worked with for years. You always talk to Joel directly — no project managers, no account reps.

You have an annoying manual process, an idea that hasn't been built, a tool you've been waiting for someone else to make — and we show up with custom software that ships. Internal dashboards. Automation pipelines. Integrations. AI-assisted operations. Real applications, not configured templates.

What we're not: a 12-person agency. There's no project manager, no account rep, no sales engineer between you and the work. You text Joel, he responds. You email a spec change, the commit goes up. Direct line, no game of telephone. When you talk to us, you're talking to the person actually writing the code.

If you've got a problem that you think might be solvable with code but keep getting agency quotes that feel insane — that's exactly when to talk to us. Worst case, we tell you it's not a fit and point you at the right tool. Best case, we ship something in a few weeks that earns its keep for years.

Start a conversation

Three questions.
Get a real response within 48 hours.

Joel reads every one of these personally. If your project isn't a fit, we'll tell you — and try to point you to what is.

▸ Inquiry received

You'll hear back within 48 hours with either next steps or honest feedback that we're not the right fit. Either way — straight answer.

928@builds:~$available.