Blossom Landscaping: the back office for a one-crew landscaping company, run from a phone.
Blossom Landscaping promises Vancouver homeowners a reply the same day, a site visit within 48 hours, a quote within 24 hours of that, and a crew on site within a week. Keeping that promise with one person handling every quote, booking and invoice needed a system, so we built one.
The promise was the product. The admin was the risk.
Blossom's whole pitch is speed and transparency: one qualified crew member owns the client relationship from first call to final invoice, prices are all-inclusive, and the timeline is published on the website. That works beautifully until the same person is also the one juggling a calendar, a quote template, an invoice tool and a text thread with the crew.
The company is insured and WorkSafeBC covered, and the owner is out on site most days. We had a front row seat to where the evenings went: re-typing quoted line items onto invoices, chasing which jobs had never been given a date, and reconciling e-transfers against a spreadsheet.

One system from lead to paid, and a way to run it by talking.
Clients and their properties sit at the top. A job carries its quoted line items. Visits are crew appointments booked against a job, assigned to a team member, with standing instructions that carry over unless someone overrides them. Standalone tasks, such as a follow-up call or an in-person quote for a brand new lead, live on the same calendar, and creating one can create the client and property in the same step.
Invoicing copies the job's quoted line items onto a draft as a snapshot, so editing the invoice never changes the quote. The invoice is emailed from the system, payments are recorded by method, and the moment payments cover the total it marks itself paid.
Then we added the part that makes it usable from a truck. The whole system is exposed through a Model Context Protocol server, and every function is also available over an API, so the owner can run the CRM in plain language from an AI assistant: what is on the schedule this week, book an in-person quote tomorrow for a new lead, invoice the job we finished on Tuesday, record the e-transfer that just came in.
- Unscheduled queue: every job that exists but has never been given a visit date, in one list
- Crew assignment and visit status per appointment
- Invoices with draft, sent and paid states and a line item snapshot
- Payments by cash, cheque, credit card or e-transfer, with notes such as a cheque number
- An API and an MCP server, so natural language control matches what the web interface can do

Lead to paid, in the app or by asking.
The same six states, two ways to move through them. Switch between the app and the assistant.
Built to disappear into the day.
The system is judged by one thing: whether the published timeline holds while the owner is on site with a hedge trimmer. It is in daily use, and the work that used to happen after dinner now happens in the gaps between jobs. We keep it running and add to it when the business asks for something new.

Small operators do not want software. They want the evening back.
Nothing here is novel as technology. What made it work was building only the objects the business already thought in, clients, jobs, visits, invoices, and then removing every step that stood between a finished job and a paid one. That is the same discipline we bring to a product with a thousand users.
The people behind the build.
Charley BallantyneDesigned the data model, built the application and the MCP server that exposes it to an AI assistant.LinkedIn
Taylor MartinShaped the workflow with the owner and keeps the roadmap tied to what the business actually needs next.LinkedIn
Wyatt LambertTested every release against real jobs in the field and shaped how the assistant is asked to schedule, invoice and record payments.LinkedIn See it for yourself.
More from the studio.
Tell us what you're trying to build.
Thirty minutes, no deck, no pitch. We'll tell you what we'd do, roughly what it takes, and whether we're the right people for it. Sometimes the answer is no and that's a useful call too.

