Greenline: jobs, invoices and payments for a lawn care business
Customer booking, a crew job queue, comment threads that update live, invoices by email, and card payments.
Agent specs
- Agent
- Claude Code, Opus 5.5 Medium
- Time
- 14 min
- Cost
- $6.64*
Agents work faster and more accurately on Elements.
* Cost at API rates, September 2026.
Run it yourself
Paste this prompt into your AI agent. You get the finished app on your own machine, ready to change however you like.
Install elements: curl -fsSL 'https://install.elements.dev?os=darwin' | sh && export PATH=~/elements/bin:$PATH Create an Elements app from the elementscode/demo-greenline scaffold: cd ~/elements/projects elements create greenline -scaffold=elementscode/demo-greenline cd greenline Start the app.
How it's built
Greenline needed customer booking, a crew queue that stays current, comment threads on each job, invoices by email when work is done, and card payments that mark a job paid. Each of those is a part of Elements, so the agent spent its 14 minutes on the lawn care business itself.
What Elements gave the app
- Live jobs. Jobs are a LiveTable that the crew's queue, each customer's list and each job page all watch. Bookings, completions and payments reach every open page as they happen, so a new booking lands in the crew's queue and a payment shows on the customer's page live.
- Live comment threads. Comments are a LiveTable opened per job. A comment appears for the crew and the customer at once, carries its author from the session, and schedules an email to the other side.
- Booking and crew actions as function calls. The booking form and the crew's complete and invoice buttons call
@rpcfunctions, with types checked from the page to the database. - Invoices from background jobs. Completing a job schedules its invoice in the same transaction, so every finished job has its invoice on the way. The job prices it from the service and emails the customer a payment link.
- Card payments. Checkout charges exactly what the invoice says. The return page and the webhook both mark the job paid, and the payment is recorded once, whichever arrives first.
- Data from SQL files. Two migrations define the business and seed a crew account, two customers, three services, and jobs in every status from scheduled to paid, with comment threads.
What the project server gave the agent
The project server runs alongside the agent and answers as soon as a file is saved: it type-checks the templates, TypeScript and SQL, applies migrations and reruns the tests, so every question came back right away and the agent kept building.
What shipped
The app type-checks with zero errors and all 24 tests pass. Every page works on desktop and phone, and live updates arrive across tabs, such as a new booking in the crew's queue and a comment on a job.
The code
Build it from scratch
To watch your agent build this app from an empty project, use the prompt we used instead. It takes longer than starting from the finished app above.
Install elements: curl -fsSL 'https://install.elements.dev?os=darwin' | sh && export PATH=~/elements/bin:$PATH Create an Elements app: cd ~/elements/projects elements create greenline cd greenline Start the app, then build this: Build a job management web app for a lawn care business. Two kinds of accounts: company and customer. Any company user can do all company actions. Customers only see their own jobs. CUSTOMER - Sign up, log in. - Book a job: pick a service, pick a date and time, describe the work. Business hours are weekdays 9am to 5pm. - See their jobs. - Open a job to see details and a comment thread they can post to. - Pay the invoice with a credit card when the job is done. COMPANY - Log in. - Queue view: all scheduled jobs, soonest first. - Completed view: completed jobs, showing which ones have been paid. - Job detail: customer, address, service, scheduled time, description, comment thread, and a Mark Complete button. - Marking a job complete invoices the customer at the service's fixed price and emails them a payment link. Send email when an invoice is ready and when someone posts a new comment. Job status: scheduled, completed, invoiced, paid. Seed one company user, two customers, three services (mowing, leaf cleanup, hedge trimming), four jobs across statuses. All status changes updated in real time.
Comments· 0