Custom SaaS development: a construction management system built to sell
Custom SaaS development: we designed and built a construction management system for a company that sells it, validated with a pilot builder.
- Rebar ADN 420 Ø 8 mm 703 kg left 600 kg
- Portland cement 50 kg 166 bags left 120
- 2½" nails Not in the budget 10 kg
- Masonry 35 %
- Structure 66 % Consumed more than it progressed
- Concrete 48 %
- Plastering 12 %
- 01 / 04The approved budget is frozen: each line with what was consumed and how far work got.
- 02 / 04The site manager orders from a phone, from the budget. Unplanned items get flagged.
- 03 / 04What reaches the site draws down the line item. Nobody updates a spreadsheet.
- 04 / 04Overruns show up while work is underway, not after it’s finished.
The case on video, explained.
Go to the questions ↓A company wanted to sell a construction management system
BuildBuy is a custom build. A company wanted to bring a construction management system to market —the budget, the site’s requests, the suppliers’ quotes and what reaches the site, all in one workflow— and asked us to design and build it. It has been in production since September 2026. That’s what building a SaaS with us looks like: the client brings the industry and the idea, and we turn it into a product it can sell. To validate it, we brought in a pilot builder that runs several sites at once: it contributed its real catalog, its rules and a review of every module; the client, the product vision and the go-to-market; and we, the design, the development and going live.
Generated image
Generated image - Role
- Product owner
- First user
- Needed
- A product it can sell to any builder
- To know what each site has spent
- Brought
- The product vision and the go-to-market
- Its real catalog and 8 scope documents
- What they share
- The same workflow, from budget to site
- The same workflow, from budget to site
- Today
- The product live, with a landing page and sales demos
- Its catalog and sites, loaded and in use
What building a SaaS with us looks like: every request comes in, gets built and goes live
There was no fixed scope at the start and a delivery at the end. Whatever the client and the pilot builder asked for was written up as a specification, built, tested against the real database and shipped to production, and the pilot’s architect reviewed it again on her sites. Along the way we added what a product needs to sell and nobody had asked for: security between companies, a back office to run it, support by signing in as the user, usage analytics, a connector to run it with AI and the landing page to sell it.
The problem the product had to solve
Before writing a line of code we had to understand how a builder buys, because that’s the problem the product would solve for every customer. A building project is budgeted once and executed over months. The budget comes from a takeoff —how many square meters, how much material per meter, how many people, how much equipment— and then it sits in a spreadsheet while the site keeps moving. The request came in over WhatsApp and Purchasing copied it into a spreadsheet. To get prices, one email per supplier; to compare, every reply into another spreadsheet; to buy, the order typed in again. The delivery note arrived as a photo and nobody checked it against the order. And every site bought on its own: two sites needing the same rebar in the same week ordered it separately. Mid-project, nobody could answer the simplest question: how much have we spent against what we estimated?
- LOS ÁLAMOS ORDER
600 kg 8 mm rebar
120 bags cement - Casa Pilar needs
8 mm rebar too - PDFQuoteLa Estrella yard
- PDFQuoteSan Justo Steel
- Did the rebar ship?
We pour tomorrow - Photo · Delivery note · 850 kg arrived
- XLSBudget_LosAlamos_v3.xlsx
- 8:10 · Pasted list Copy it into the all-sites request spreadsheet
- 8:42 · Text Order it separately, even though it’s the same rebar
- 9:30 · PDF Copy the prices into the comparison spreadsheet
- 10:15 · PDF Copy again and compare line by line
- 11:02 · Text Search the inbox for where it stands and reply
- 12:20 · Photo Check the delivery note against the order, by hand
- 13:05 · Spreadsheet Update spending, if anyone remembers
Purchasing spent the day copying from one place to another, and the budget found out when the project ended.
What we designed: one workflow, from the budget to the site
The product doesn’t change how a builder buys: it puts it in one place. The budget is built from recipes —how much material, labor and equipment each unit of work takes— and the approved version is frozen. Everything else flows from it, each step from the one before: the site’s request, the request for quote, the comparison, the purchase order and the delivery. People decide where a decision is needed: Purchasing chooses which suppliers to ask and who to award, and Management approves the budget. The system does the rest: merging requests, building the comparison, issuing the order from what was awarded and drawing down the budget with what arrives.
- Budget Built from recipes; the approved version is frozen.
- Site request From a phone, showing what’s left to order.
- Request for quote Similar requests from several sites, merged.
- Purchasing awards With offers side by side; awards line by line.
- Order and delivery Comes from the award; what arrives draws down the budget.
Everything that was added, month by month
BuildBuy started as a tool to order materials from the site and pool purchases across sites. Month by month we added what the client asked for —the budget, the catalog, the roles, the suppliers— and what we added ourselves so the product could be run and sold to any builder. The biggest change came from the pilot builder: start with the materials catalog and the budget, not with the request. And a rule she set herself: no data from an automated source touches the budget until a person has validated it. What the timeline marks as “We added” wasn’t requested by anyone: we put it in because a product sold to many companies needs it.
- Dec 2025Survey with the client: how each site orders and buys
- Apr 2026First version: multi-company with invitations, site requests, requests for quote, supplier portal and awards
- May–Jun 2026Request board, takeoff with progress, warehouse, purchases pooled across sites and builders, price lists and supplier accounts
- Jul 2026In production
- Aug 2026At the pilot’s request, it starts from the catalog: Excel importer, materials, labor, machinery and recipes
- Sep 2026A budget module with versions, a frozen approved baseline, Excel and PDF; AI drafts lines from a document and a person validates them
- Sep 22We added: a security audit between companies, a platform back office and “Sign in as” for support
- Sep 25Suppliers with their own portal and several builders, usage analytics, the architect’s dashboard and budget increase requests
- Sep 26We added: the landing page with an 8-step demo, the meeting request and assisted demos from the back office, with their alert
- Sep 30One account for someone on one builder’s team and supplier to another; MCP connector by role; master catalog
- Oct 5–6Pilot review: delivery confirmed on site, supplier sign-up, licenses and role groups with access by site
- Oct 13We added: code and production matching, function by function
How it’s run: every company and every role with its own part
Five profiles use the platform, and each person sees what their role calls for. The site manager orders from a phone. Purchasing works on a board with every site’s requests in three columns: pending, in progress and received. Each supplier logs into its own portal, quotes, talks to Purchasing inside the request and accepts the order. Management sees each site’s progress against its budget and is alerted if someone bought at a higher price than another offer. And on site or at the warehouse, what arrived is recorded against the order. Because the client sells it to many builders, each one only sees its own data and sets up its own roles: groups with their permissions and access by site. Someone who is on one builder’s team and also sells to another signs in with the same account.
No builder sees another’s sites or numbers, even when they buy together.
What we added: what a SaaS needs in order to sell
A system one company uses isn’t yet a product sold to many. We put in that difference ourselves, without anyone asking: each builder sees only its own data, the client can run the product and give support without touching code, it knows how the product is used and it has what it needs to sell it.
- MCP connectorBuildBuy can be run from Claude or another AI assistant, as a person, with their company and role.
- Usage analyticsWhich screens are used, where people get stuck and what they search for without finding it, without exposing sensitive data.
- Assistant and guidesIn-app help, tested with real user questions.
- Secure multi-companyAn audit found and closed the gaps between companies; each one sees only its own data.
- Back office and “Sign in as”Companies, users, licenses and support by signing in as the user, with an audit trail.
- Landing page and assisted demosThe prospect requests a meeting and the back office sets up a demo with sample data.
Under the hood: every material with its history, document by document
BuildBuy is a web app in React and TypeScript, with its database on Supabase (PostgreSQL) and deployed on Vercel: it runs on a computer or a phone, with nothing to install. It’s multi-company from the database up: every builder the client signs up has its data kept apart by the database itself, and each supplier only sees what concerns it. The client runs the product from its own back office —companies, demos, licenses and analytics— and more than 4,400 automated tests run before every change. What used to be a WhatsApp chat, a spreadsheet and someone typing is now a row: the material, the budget line it came from, its status and its history, from budget to delivery note.
- A WhatsApp chat 600 kg of 8 mm rebar
- A spreadsheet
- Someone typing PO 0142 · rebar Ø8
- Budget
- Structure · v3
- Status
- 850 kg received
- Supplier
- San Justo Steel
- History
- Sep 2 budget v3
- Oct 7 R-0047 · site
- Oct 9 PO-0142 · Purchasing
- Oct 14 delivery · warehouse
Answer and we’ll tell you if this works for your company.
We review it quickly. If it’s a fit, we set up a meeting.
5 questions, 1 minute. We'll tell you whether your idea is ready to become a product.
It makes sense to talk
From what you told us, your product is ready to start being built. Pick a time with Alfonso: 30 minutes to look at what you want to bring to market and how we'd validate it.
Looking for open times…
Alfonso already has your answers and will write to set a time.
We couldn't save your answers. Send them over WhatsApp and we'll reply all the same:
Send on WhatsAppWe'll write to you within one business day
We will send you a concrete idea of where to start with your product. If you prefer, write to us on WhatsApp.
We couldn't save your answers. Send them over WhatsApp and we'll reply all the same:
Send on WhatsAppThanks for telling us
It doesn't look like the right time to build a product yet. Take a look at the other cases: one of them may be closer to what you need.
We couldn't save your answers. Send them over WhatsApp and we'll reply all the same:
Send on WhatsApp6 questions, 2 minutes. We'll tell you where we'd start with your product.
It makes sense to talk
From what you told us, your product is ready to start being built. Pick a time with Alfonso: 30 minutes to look at what you want to bring to market and how we'd validate it.
Looking for open times…
Alfonso already has your answers and will write to set a time.
We couldn't save your answers. Send them over WhatsApp and we'll reply all the same:
Send on WhatsAppWe'll write to you within one business day
We will send you a concrete idea of where to start with your product. If you prefer, write to us on WhatsApp.
We couldn't save your answers. Send them over WhatsApp and we'll reply all the same:
Send on WhatsAppThanks for telling us
It doesn't look like the right time to build a product yet. Take a look at the other cases: one of them may be closer to what you need.
We couldn't save your answers. Send them over WhatsApp and we'll reply all the same:
Send on WhatsAppRather talk now? Message us on WhatsApp



