W. Blanchard-Butter
Senior Systems Engineer
Will Blanchard-Butter

I build the integration and classification systems that sit between a business's CRM, its phone system, its payment processor and its ad platforms.

Mostly Python and SQL, with low-code tooling where it earns its place.

Currently at Contractor Independence, working on lead ingestion, verification and routing for US home-services companies. Most of what follows is about knowing when a problem has outgrown the tool it started in.

Selected work

94%
Agreement with manual review · 1,000 hand-validated leads

Lead verification

Replaced a 297-module visual automation, which called a language model 33 separate ways, with a rules-first Python service and a 40-module dispatcher. Several hundred deterministic conditions decide what can be decided from a transcript; the model handles only the remainder. Around 1,000 leads a weekday.

V13297
V1940
Modules in scenario
1in9,336
Payments missed since January 2025

Payment credential isolation

An API key that could create charges and read stored card details was needed by a pipeline running in an environment the whole team and its contractors could read. Split across two instances behind a minimal internal API that returns three fields and nothing else, so a compromised endpoint yields a name rather than billing data.

9,063 payments · 273 refunds · 1 missed
~50%
Of transcription spend removed

Call pipeline audit

Inherited a 127-module call tracking scenario, nine levels deep, that was treating each leg of a call as a separate conversation and transcribing every one twice. Audited it end to end, fixed the duplication and the malformed recording URLs, and corrected reporting figures that had been double-counting for months.

Inherited
Repaired
Transcriptions per conversation
98
Client accounts on one scenario

Multi-tenant lead intake

A 24-hour hold before outbound contact, absorbing the window in which upstream systems correct themselves. Hold state lives in the CRM where staff can see it; an hourly reconciliation sweep back-fills any lead whose ledger write failed, so a partial write cannot strand someone in the queue.

Lead in 24h hold Outbound hourly reconciliation sweep

Stack

Languages
PythonJavaScriptSQL
Frameworks & data
FlaskMySQLGoogle Sheets
Platforms & APIs
Make.comTwilioOpenAIPaySimpleGoHighLevelGoogle Apps ScriptSlackMonday
Infrastructure
Cloudflare PagesGitVPS deployment

Elsewhere

Figures are measured rather than estimated. Each write-up describes the method behind its number, and what I would do differently.