An AI assistant drafts a roofing CEO's paperwork from voice notes

The CEO sends a voice note between roof inspections. His AI assistant finds the job and drafts an estimate or work order. Written instructions tell it to wait for his “approve” before saving or sending; it cannot send email.

Client: Lone Oak RoofingHome services (roofing)

CreditDesigned and built by our founder, as lead developer for a partner agency.

See it work

The assistant drafts an estimate for the CEO to approve

The missing-price stepThe assistant leaves the metal price blank because no rate is on file. The CEO provides the rate, and the assistant calculates the item price and total.
DraftStanding-seam metal panels32 sqPrice to be set by the CEO

He replies: “Metal at 640 a square.”

AfterStanding-seam metal panels32 sq × $640$20,480
  1. The CEO sends a voice note. He records the job details in the truck after an inspection. His own server turns the recording into text.
  2. The assistant finds the job. The assistant confirms the customer and address in one line.
  3. It drafts the estimate. One item has no price on file, so the assistant marks it for the CEO to fill in.
  4. He adds the missing price. He replies with the rate. The assistant updates the item price and the total.
  5. He approves it. He replies “approve”, and the estimate PDF is ready.

About Lone Oak Roofing

The CEO sells, inspects roofs, writes estimates and manages the crews. He spends much of his day driving between jobs.

Customers find the company through quote requests on its website, insurance-claim work and referrals. New leads arrive in a shared company inbox.

Client
Lone Oak RoofingA roofing, gutter and painting company in Texas with a team of 2 to 5
Industry
Home services (roofing)
How they sell
Owner-led, with in-home estimates

The problem

The CEO wrote estimates and work orders at night

  • He wrote documents after work

    Estimates, work orders and photo reports were written at night, around field work. He wanted that time for inspections and sales.

  • He checked four apps to answer one question

    “Where are we on that job?” meant checking the job system, the photo app, the lead system and his inbox, one after another.

  • Read leads still needed a reply

    Several people read the lead inbox on their phones. A lead marked as read was not always a lead followed up.

  • Ready-made chat tools didn't fit

    They don't know his jobs or read his systems. He also needed to keep his private financial files inaccessible to the assistant.

What was built

The assistant reads job records and drafts documents in one chat

  • It works from one Telegram chat

    He types or sends a voice note in Telegram, the messaging app he already uses. His server turns voice notes into text.

  • It reads the tools he already uses

    JobNimbus for jobs, CompanyCam for photos, GoHighLevel for leads and calls, and Google for his calendar, files and email. Nothing is replaced.

  • Paperwork comes back as a PDF

    The assistant uses 4 templates to make PDF drafts for him to review. It updates the document when the source text changes.

  • It checks in twice a day

    At 8 AM Central, he gets a summary of sales opportunities, inspections, overdue tasks, new photos and unread leads. At 6 PM Central, he gets a follow-up list that includes the shared inbox.

Control and safety

Written instructions require his approval before saving or sending

Notes, tasks, status changes, calendar events and messages are shown to him as drafts first. A vague “yes” is not enough. The assistant asks for “approve” against the specific draft.

  • Email is read-only. The assistant cannot send email from either mailbox.
  • Private files are out of reach. Google's own permissions block his private Operations folder.
  • No invented numbers. It is instructed to leave missing prices and measurements open rather than guess.
  • He chooses what runs on its own. Lookups and the two daily check-ins run by themselves. Written instructions require his approval before saving or sending.

For technical readers

How the system works

The assistant runs as one service on a small rented server. It fetches his Telegram messages itself, so the server has no open web ports. It follows written procedures (called “skills”) to read job records, draft PDFs and run the two daily check-ins.

CEO on TelegramText or voice note
Assistant serviceTurns voice into text
Scheduled check-ins8 AM and 6 PM Central
Chooses a written procedure13 written procedures
JobNimbusRead-only
CompanyCamRead-only
GoHighLevelRead-only
Google WorkspaceCalendar, files, email
Draft PDFGaps marked “needs CEO”
CEO approves?
Saved or sent

Dashed lines show supporting connections, or parts that are paused or not yet built.

In more detail

Technology used (11 parts)Each part of the system, and why it was chosen.
LayerTechnologyWhy it was chosen
InterfaceTelegram bot, voice notesHe can use text or voice notes from the truck in an app he already uses.
Assistant serviceOpenClaw gateway on one Hetzner server (4 vCPU, 8 GB, about €8 a month), run as a systemd serviceOne small service is easy to hand over and recover, with no containers to maintain.
AI modelOpenAI GPT-5.4 through OpenClaw's built-in Codex harnessThe model can use the connected business tools. One setting changes the model; several were tried before the team chose this one.
Skills13 custom skills: 8 he talks to, 5 small connectors to other systemsEach job (estimate, work order, briefing) is its own written procedure, so behaviour is predictable and easy to change.
Business systemsJobNimbus, CompanyCam and GoHighLevel APIsThe connectors read job records. Written instructions require approval before changes; they do not enforce it in code.
Google WorkspaceCalendar, Drive and Gmail through a service account with read-only accessReads his schedule and both mailboxes, with no permission to send email.
PDF documentsTypst templatesThe assistant writes a text file, then turns it into a PDF. A revision is a text change, not a redesign.
Speechwhisper.cpp on the serverVoice notes are turned into text on his own server, not sent to an outside service.
Memory and schedulingMarkdown workspace files, local search, nightly memory clean-up, OpenClaw scheduler in Central timeIt remembers his jobs and preferences, and check-ins run on a schedule.
Security and backupGateway reachable only from the server itself, key-only SSH, firewall, fail2ban, nightly backup to a private Backblaze B2 bucketNothing is reachable from the public internet except secure login. A lost server can be rebuilt from a script.
TestingA script that checks for made-up details, and scripts that test the Drive exclusionEach document skill is run against real job records and checked against the file on disk.
5 engineering decisions that matteredThe problem, what was done, and what it changed.
  1. Missing numbers stay missing

    A drafting tool that guesses a price is worse than no tool. Rules forbid inventing prices, measurements, suppliers or IDs, and the templates show gaps as “needs CEO”. Each test run compares what the assistant says about a file with the PDF actually saved.

  2. His private folder is out of reach by design

    A filter alone can fail because of a bug. The assistant's Google account was never given access to his Operations folder, so Google itself refuses to return it. A second filter checks each file’s parent folders as a backup; a script to move approved folders into a separate shared drive awaits his action.

  3. Output rules keep working notes out of scheduled messages

    Early-morning briefings leaked the model's working notes into Telegram, and a task scan picked up half-finished output. Changing the model did not fix it. Rules that set the first line of a scheduled run, and forbid handing off part-way through, did.

  4. The same Gmail connection reads both inboxes

    The same read-only Gmail connection checks the company inbox on a schedule because automatic message notifications support only one mailbox per assistant. It ignores read status because several people open the inbox on their phones. A 24-hour scan window prevents repeated leads.

  5. He approves recurring tasks before they start

    A scheduling rule tells the assistant not to create any repeating task until he approves what runs, how often and the rough cost.

Testing and build recordHow it was tested, and the build by the numbers.

Quality and reliability

  • Each document skill is tested against real job records by a script that runs it on the server and checks the file it made. Each run used 21 to 34 tool calls.
  • Separate scripts test that the private Drive folder stays out of reach along both access paths.
  • Approval tests cover drafting before sending, refusing to send without approval, and refusing to reveal its own instructions. One test found the model could report a change as done when it had not been saved, so at hand-over he was advised to confirm changes in the job system. A lock built into the code was planned as a follow-up.
  • Scheduled check-ins run through the same service and report whether they ran. The server's schedule shows both jobs switched on.
  • The OpenClaw version is fixed, and upgrades follow a written guide. A scheduled check runs every 12 hours to limit AI cost while the assistant is idle.
  • Daily off-site backups are kept for 14 days, and a rebuild script serves as the recovery plan.

By the numbers (build)

  • 69 commits over about 4 weeks, from 11 April to 12 May 2026.
  • 6 days from the onboarding call to all four document types passing.
  • 13 custom skills, 4 PDF templates, 5 business systems connected plus Telegram.
  • 2 scheduled check-ins a day and 2 mailboxes watched.
  • 1 server, 1 service, no containers.

Is it a fit?

Could this work for your team?

  • You run a home-services company. The person who sells also writes the paperwork, for roofing, solar, heating and cooling, windows, remodelling or landscaping.
  • You keep job records in a customer management system and a photo app. We connect what you use instead of replacing it.
  • You have your own estimate and work-order formats. We adapt the templates and load your price list, so fewer gaps are left for you.
  • You want to approve the assistant’s actions. You decide which actions run on their own and which wait for you.

Discuss an assistant for your job paperwork

Conducted by Apurva · Not a sales call