Jethro Macute

I build the automations that run a business, then keep them running.

Nine years in development and automation. Today I design AI agents, workflow automations and internal tools for law firms and service businesses, from scoping with the people who will use them through to production and handover.

Inbound mail AI classifier document type Route by type Template merge draft reporting letter … Letter to reviewer One of the pipelines below, simplified

How a build runs

The receipt-to-QuickBooks automation from the work below, step by step. Each stage lights up as a receipt moves through it.

Drop the receipt

Staff save a photo or PDF into one SharePoint folder. That is the whole interface.

Read it

OCR turns the image into text, including crumpled thermal receipts.

Extract the fields

ChatGPT returns vendor, date, line items, tax and total as strict JSON.

Validate

Totals are re-added, vendors matched to existing records, anything doubtful goes to review.

Post to QuickBooks

The invoice is created through the API with the original file attached.

Every build on this page follows the same shape: one place to put things in, AI that is checked against its source, and a system of record at the end.

Selected work

Most of these were built for clients under NDA, so each is described by the problem, what was built, and what changed. Clients are identified by the kind of business they run.

Personal-injury law firm, US
2026 · Through an automation agency
Copilot StudioPower AutomateDataverseAI BuilderCustom connectorSharePoint

Multi-agent assistant that works inside the firm's practice-management system

Problem

Staff were creating tasks, calendar events and matter notes in the practice-management system by hand, one screen at a time. The firm wanted to do it from a chat window, in plain language, without anyone keying data twice.

What I built
  • A router agent that hands off to four specialist agents (tasks, events, notes, conditional tasks), each with its own Adaptive Card forms and guard nodes before any write happens
  • A custom API connector for the practice-management platform, plus the Power Automate flows the agents call
  • Guardrails against the orchestrator "confirming" work it never did, fixed variable leakage between agents, and consistent error handling with logging to a firm-owned list
  • A Dataverse layer for reference data so hard-coded lists in the forms moved out of the agents
  • HIPAA review of the environment and an ALM setup the firm can edit and export itself
What changed

Passed a structured acceptance-test cycle run by the firm's attorney and is in production. Records now land in the practice-management system from a single chat exchange, with a trace of every write and every failure.

Intellectual-property law firm, US
2026 · Through an automation agency
Make.comAzure Content UnderstandingAzure OpenAIWord templates

Reporting letters drafted automatically from patent and trademark office correspondence

Problem

Every notice from the patent and trademark office, and from foreign offices, had to be read, identified and turned into a client reporting letter by a paralegal. Volume was steady, the letter formats were predictable, and the turnaround was slow.

What I built
  • Two pipelines (patent, trademark) that pull the incoming document, extract its fields with Azure Content Understanding, classify the document type and route to a branch per type
  • Branches for office actions, notices of opposition, foreign examination reports, provisional refusals, Madrid irregularity notices, §8 declarations and §8/§9 renewals, among others
  • A cross-check validation step so a classifier result can never fall through to the wrong letter template
  • Word template merges that produce a review-ready draft for the attorney
What changed

Letters for the covered document types are drafted without manual data entry and wait for an attorney to review. New document types are added as a branch rather than a rebuild.

Real estate property group, US
2022 – 2026 · In-house full stack developer
Power AutomateSharePointOCROpenAI (ChatGPT)QuickBooks Online API

Receipts dropped in a folder become QuickBooks invoices on their own

Problem

Agents and staff were sending receipts and bills in as photos and PDFs, and someone in the office spent around three hours a day reading each one and keying it into QuickBooks. Entries were late, vendors were spelled three different ways, and month-end was a cleanup job.

What I built
  • A SharePoint folder as the only thing staff need to know about: drop the receipt in, done
  • A flow that picks up each new file, runs OCR on it, and passes the raw text to ChatGPT with a strict schema so it returns vendor, date, line items, totals and tax as structured data
  • Vendor and account matching against existing QuickBooks records before anything is created, so one supplier doesn't become four
  • Creation of the invoice in QuickBooks through the API with the original receipt attached, and the file moved to a processed folder with the QuickBooks reference in its name
  • A review queue for anything the model wasn't confident about, instead of guessing
What changed

Daily bookkeeping went from roughly three hours to about thirty minutes, most of it reviewing exceptions rather than typing. Entries land the same day the receipt arrives, and every invoice in QuickBooks links back to its source document.

Internal tooling for an automation agency
2026 · Own initiative
PythonPower Platform solutionsPower AutomateMake.comZoho CRM API

Generator that turns Make.com scenarios into importable Power Automate solutions

Problem

A client was moving a large set of Make.com scenarios onto Microsoft Power Automate. Rebuilding each one by hand in the designer was slow and inconsistent, and the alternative of creating flows through the management API needed an interactive sign-in for every single flow.

What I built
  • A manifest-driven generator that emits a complete, importable solution package: flows, connection references and environment variables
  • A static validator that catches broken references, dangling steps and missing authentication before anything is imported
  • A documented set of translation rules for Make patterns that have no direct equivalent (fallback routes, error handlers, sequential execution)
  • First production translation: a CRM webhook → search → upsert flow with a retry path, where no certified connector existed, so it was built on raw HTTP with OAuth token refresh
What changed

The manifest is the source of truth and lives in source control. Importing to a new environment binds connections once rather than per flow, and re-running the generator updates flows in place instead of creating duplicates.

Personal-injury law firm, US
2026 · Through an automation agency
Power AutomateDataverseSharePointExcelAzure OpenAI

Client-intake pipeline with one flow for every lead source

Problem

Leads arrived from web forms, referral channels and ad campaigns into a tracker that had been imported from another tool and never fit. Duplicates were common, and a new lead source meant a new flow.

What I built
  • A purpose-built leads table with dedupe keys and controlled choice fields for case type, source, stage and outcome, mirrored to a spreadsheet the intake team already used
  • One dynamic intake flow that handles every source, runs an AI spam check, and deduplicates against both the table and the sheet
  • A scheduled flow that moves prospect folders between "current", "past" and "unqualified" based on a status the attorney sets, capturing a reason each time
  • Schema changes shipped as versioned solution patches so the flow's field mappings never broke
What changed

Adding a lead source is a configuration change, not a build. Intake staff work from one list with no duplicates, and folder housekeeping that used to be forgotten now happens on a schedule.

Marketing agency serving IT service providers, US
Freelance · ongoing
n8nHubSpotFacebook Lead AdsLooker StudioGoogle AdsMeta Ads

Lead intake and cross-channel reporting on n8n

Problem

Leads from paid social campaigns were landing in the CRM late, in the wrong segments, or twice. Campaign reporting was assembled by hand from several ad platforms.

What I built
  • n8n workflows that take Facebook Lead Ads submissions into HubSpot, resolve the right segment dynamically per campaign, deduplicate, and notify the marketing team by email
  • A Google Ads dashboard in Looker Studio, and a Meta Ads data pipeline feeding a combined cross-channel view
  • Migrated a website visitor-identification webhook integration off Power Automate onto n8n so the whole stack lived in one place
What changed

Leads reach the right list within minutes of submission, with no duplicates, and campaign performance is on one dashboard instead of being rebuilt each week.

Automation agency and a law-firm client
2026
Power AutomateMicrosoft GraphOneDriveSharePointAzure OpenAI

Meeting recordings turned into recaps, without anyone uploading anything

Problem

Daily huddles and client calls were recorded in Teams, but the transcripts stayed in people's OneDrive and nobody wrote the recap.

What I built
  • A daily flow that finds the day's meeting recordings through the Graph API, pulls the transcript, and files it in a dated folder on the team site
  • An AI recap step that produces a summary and action items from the transcript
  • A variant for client calls that resolves the call date from the file name first, because transcripts are often uploaded days late
  • The same pipeline ported into a law-firm client's own tenant for their morning meeting
What changed

Every meeting has a transcript and a recap in a predictable place by the next morning, in both the agency and the client tenant.

Own product
2026
JavaScriptFirebase FirestoreFirebase Hosting
Live app (link)

Cue Clock — a synced countdown timer for live events

Problem

Speakers and stage crews need a timer that one person controls and everyone else can see, on any device, without installing anything.

What I built

A controller view and a viewer view kept in sync through Firestore, with named profiles and separate viewer and controller access links, hosted on Firebase so it runs at no cost.

What changed

It's live and in use. Included here because it's the one build I can link to directly, end to end.

How I work

Three habits that show up in every build above.

Scope with the people who'll use it

I sit with the attorney, the intake coordinator or the marketing lead and turn what they need into something buildable. Sometimes that means saying a request is the wrong build and proposing the right one.

Ship it, then run it

Acceptance testing with the client, error handling that tells someone what failed, and the servers, domains, mailboxes and credentials behind the build are part of the job, not an afterthought.

Document so someone else can take over

Every build leaves behind a README, a manifest or a build log that another engineer could pick up cold. Verified, not eyeballed: changes are traced to their outcome before they're called done.

Stack

  • Power Automate and Power Platform solutions
  • Microsoft Copilot Studio and AI Builder
  • Make.com, n8n, Zapier
  • Azure OpenAI, Azure Content Understanding
  • Dataverse, SharePoint, Microsoft Graph
  • Python, JavaScript, PHP
  • Custom connectors and REST/OAuth APIs
  • HubSpot, Zoho CRM, PracticePanther, Odoo, QuickBooks
  • Firebase, Looker Studio, JotForm

Get in touch

Based in the Philippines (UTC+8), working with teams in Australia, the UK and the US.