brdy.ai Book a call
Founding engagements / Engagement 01

PPC International — Butler

An operations platform for a distributor running Odoo ERP against several Shopify storefronts. It reads widely, drafts the work, and writes back only into the ERP, only after a person approves.

Read this before the results

PPC International is not an arm's-length client. It sits inside the same ownership group as Brdy AI, and the person who signed off this work is a partner here. Vendor and customer are the same people.

So treat what follows as a work sample, not as a reference. The engineering is real and inspectable. The business outcomes are self-reported by us about us, and we say so at each one rather than once at the bottom.

The client

01 — Who
Entity

PPC International, LLC (dba PPC International). Founded 2015.

Sector and footprint

Distribution. Headquarters in Irvine, California. Distribution sites in San Marcos, CA and Mount Dora, FL. House Plant Resource is one of its projects.

Systems in place

Odoo as the ERP and system of record, with several Shopify storefronts selling against it.

Commercial basis

Internal. No arm's-length contract value is published, because there is none to publish.

The baseline

02 — Before
We did not measure this

No before-state time study was taken. We know which processes Butler now covers — purchase planning, end-of-day reporting, wholesale shipping, order intake and first-line support — because we automated them. We do not have an hours-per-week figure for what those cost before, because nobody counted, and we are not going to reconstruct one after the fact.

This is the single biggest gap in this case study, and it is the first thing we will fix on the next engagement: the baseline gets measured before anything is built.

What we built

03 — Intervention

"Butler reads widely and writes narrowly, always into the system of record, always through a human. It never writes a storefront directly — every price and every listing goes into Odoo, and Odoo's existing connector exports it."

Butler's design doctrine, from the project's own architecture notes

Scheduled automations

Thirteen automations run on a scheduler, covering purchase planning, end-of-day reporting, wholesale shipping and order intake.

A support desk where the model never acts

The language model drafts replies. It does not place, amend or cancel orders. Those are executed deterministically by Butler's own code, and a person approves the send. If the model is wrong, the cost is a bad draft, not a bad order.

A merchant API

Partners pull inventory and push sales orders that create and confirm real Odoo sale.order records and deduct real stock. Idempotent on order reference, so a retried request cannot double-book, and fail-closed on error, so an ambiguous response does not become an invented order.

The stack

FastAPI and APScheduler on Python 3.12. Postgres with raw SQL migrations and no ORM. pgvector for retrieval. React, Vite and TypeScript on the front end. Docker Compose for deployment.

Integrations

Butler integrates with the following. None of these is a partnership, a certification or an endorsement, and we do not describe them as one.

Odoo ERP
Shopify (multiple storefronts)
ShipStation (v1 and v2)
Slack
Postmark
Meta / Instagram
Google Workspace
Anthropic Claude API
Ollama (local fallback)
Infisical (secrets)
Serper

Size of the system

04 — Scope

Counts from the Butler repository and its migration history, taken by the engineering team that wrote it. These measure how much was built. They are not a claim about business value.

450

HTTP routes

36

routers

120

Postgres tables

138

idempotent migrations

4,300

backend tests

36

dashboard pages

17

external connectors

13

automations live

Approximate, and they move with every release.

The result, and its limits

05 — Outcome

Everything in this section was reported by PPC International about its own deployment, to people who own PPC International. Nobody independent has checked it.

~60%

of manual ERP and ecommerce operations work automated, as estimated by PPC International after Butler went live.

No task inventory, no before-and-after time study, no measurement window, no raw data. It is one team's estimate of its own work. One deployment is not an industry benchmark, and we would rather say so than round it up into a claim.

Qualitative, July 2026

A company update records that the customer service bot was deployed and adopted into the support workflow, and that the ticket resolution rate held high with most tickets cleared on time.

No number was given for either statement, and we are not going to supply one.

Withdrawn

We have previously quoted roughly 70% less manual effort on reordering and purchase-order work.

It was asserted once, with no baseline, no period and no method. We are not repeating it until it has all three.

Timeframe

06 — When

We are not publishing a start date, a go-live date or a build duration for this engagement, because none was recorded at the time. The only dates we can stand behind are the ones in version control and in the incident below.

What went wrong

07 — Incident

Any vendor who shows you only successes is showing you an edited record. Here is the one real incident on this deployment.

7 – 15 July 2026

A staging stack had been left holding production Slack credentials. For nine days it posted duplicate end-of-day report drafts into real channels, once a day.

Why it stayed small

Because of the write rule. What escaped was a draft message into a channel. A staging stack with production credentials could not place an order, change a price or touch the ERP, because nothing in Butler writes without a person approving it.

What it cost us to admit

Nine days of noise in a working channel, and a credential-separation rule we should have had on day one. We would rather you read it here than discover it later.

What we do not claim

08 — Limits

No independent verification

Nothing on this page has been checked by anyone outside the ownership group. No third-party audit of this deployment exists.

Attribution, not a unified audit log

Butler attributes approvals to a configured operator identity across five action types. That is what we will say it does. It is not yet a per-user audit trail across the whole system, and we will not call it one until it is.

Single tenancy is architecture, not a metric

Data staying in a dedicated, encrypted instance is a property of how the system is deployed. It is verifiable by inspection, and it is never something we will put a percentage on.

No certification

We hold no security certification today and will not claim one before an audit is complete. What we do hold is described on the security page, and what we do not hold is described there too.

The quote we are not printing

09 — Reference

A case study is supposed to end with a customer saying it worked. The only testimonial attached to this system is attributed to Andy B., CEO of PPC International, who is also a partner at Brdy AI. It is the principal of this business praising a system built for a company he owns.

We could print it and let you assume it came from a client. We would rather tell you what it is and leave the space empty until someone outside this ownership group fills it.

What the next one gets that this one did not

10 — Next

A measured baseline

Hours counted before anything is built, by the people doing the work, over a stated window.

Dates on the record

Start, go-live and each milestone, written down when they happen rather than reconstructed for a website.

A result someone else can attest to

An engagement outside this ownership group, so that the next page like this one is evidence rather than a work sample.