Case Study · No. 01 Instawork · Commercial governance platform · 2024–present

Six systems. One pipeline. Built solo in eight weeks — then I argued to pause it.

A commercial pricing engine across Salesforce, Django, Slack, Ironclad, Redshift, and Hightouch — shipped from architecture to production in eight weeks. First month: $5.3M processed, $1.1M in leakage surfaced. Then I made the case for the architectural rewrite that's reshaping our roadmap.

§ I

The brief.

Instawork runs a marketplace where businesses book hourly workers across the country. The commercial side of that business — pricing, approvals, contracts, exceptions — is where the most consequential decisions get made. Whether a deal is profitable. Whether a customer comes back. Whether the system can scale.

In March 2024 I joined as the solo RevOps engineer. The brief: build the system that governs how those decisions get made. Approvals, pricing rules, exception handling, the queue, the writeback, the measurement. End to end.

What I inherited was the opposite of a system. Pricing requests were submitted with no evaluation, no floor enforcement, and no structured routing. Managers reviewed them over Slack with no audit trail, no SLA, and no reliable way to confirm an approved rate ever made it into production.

Before
  • Pricing decisions in Slack threads
  • No audit trail or approval record
  • No SLA — some deals waited days
  • Approved rates manually entered into Django
  • No floor enforcement or exception visibility
  • No forecast linkage to commercial decisions
After
  • Structured submission with pricing evaluation on intake
  • Full audit trail — every decision recorded
  • 4-hour SLA with automated escalation
  • Approved rates sync to Django in real time
  • MSA terms auto-default from contract data
  • Every approved deal creates a forecast record
§ II

A deal, from request to revenue.

The pipeline runs across six systems with one human decision point. A deal enters as a sales request and exits as a live production rate, a forecast record, and a full audit trail.

i.
Rep submits a deal request
Guided

The system pre-fills MSA terms, current rate card, and account history. Rep selects positions, markets, and proposed rates.

Salesforce · Flow + LWC
ii.
Auto-evaluation classifies the deal
Automated

Apex evaluates every line against 51 state-specific pricing floors, 21 markup tiers, MSA rates, and payment terms — all driven by admin-configurable rules. About 41% of deals auto-approve instantly.

Apex Custom Metadata Redshift
iii.
Approver decides
Human

Non-standard deals appear in a triage-ready queue with exception size, dollar impact, and SLA timer. Exception severity determines routing — small exceptions to the sales manager; larger ones escalate to RevOps or Finance.

LWC Queue Slack · #deal-desk
iv.
Rate goes live in production
Automated

On approval, Apex fires a REST callout to Django's /approved-rates/ endpoint. Self-healing retry handles stale region IDs. The rate is live before the approver closes the tab.

Apex Callout Django API
v.
Notifications + audit trail
Automated

Slack posts on submission, decision, and rate-is-live. Chatter logs every decision. Ironclad syncs contract status bidirectionally.

Slack API Chatter Ironclad
vi.
Forecast record created
Automated

Every approved deal generates 90-day, 180-day, and 365-day revenue projections with a distribution shape. Actuals flow back from the data warehouse for deal-level variance tracking.

Apex + Flow Redshift Hightouch
§ III

What the approver actually sees.

The approval queue surfaces exception size, dollar impact, and SLA timer in one card. Each deal renders its own evaluation: which positions are within guardrails, which are below target, and which trigger an exception that requires human judgment.

Visual trust grammar throughout. Solid borders mean validated. Different status colors carry semantic weight — never red for "we don't know," always red for "below floor." Provenance pills show where each piece of context came from. Demo data shown.

Terms Exception Payment

Net 45 requested — policy is Net 30 for new customers

Payment Terms
Sietch Tabr · New Customer · Needs VP sign-off
Requested
Net 45
Policy
Net 30
Within Guardrails

Rate and markup meet floor requirements

Line Cook
Las Vegas · 8hr shifts · NV Tier 2
Submitted
Floor
Rate
$20.00/hr
$16.50/hr
Markup
35%
28%
Rate +$3.50 above floor · Markup +7pt
Rev $38,880 Within Guardrails
Below Target Markup

Markup below target but above floor

Barista
Las Vegas · 8hr shifts · NV Tier 2
Submitted
Floor
Rate
$19.00/hr
$15.50/hr
Markup
30%
28%
Markup 8pt below target (30% vs 38%)
Rev $11,880 Below Target
Within Guardrails MSA-Aligned

Rate matches CHOAM contract terms

Food Service Worker
Arrakeen · 8hr shifts · Arrakis Tier 1
Submitted
Contract
Rate
$18.50/hr
$18.00/hr
Markup
45%
40%
Rate +$0.50 above contract · Markup +5pt
Rev $26,640 Approved · Sent
§ IV

Every approved deal becomes a forecast.

Approval triggers 90-day and 365-day net revenue projections automatically. The account executive draws a distribution shape — ramp, steady, frontloaded, spike — that becomes the basis for cohort analysis and variance tracking as actuals flow back from the data warehouse.

Atreides Spice Operations — Arrakeen
Approved · Mar 25 · AO-Arrakeen-Q2
Ramp
$91,066
90-Day NR
$173,025
365-Day NR
440
Shifts / mo
13 · 27 · 60
Month 1 · 2 · 3 (shifts/day)
M1 M2 M3 M4 M5 M6 M7

Ramp shape — revenue grows month-over-month as crew volume scales. Most enterprise food & beverage deals cluster near this distribution. Shape accuracy becomes a signal over time across reps, deal types, and markets.

§ V

Solo build. AI as force multiplier.

I designed the architecture, made every integration decision, and shipped the platform with Cursor and Claude as development co-pilots. The AI wrote Apex, scaffolded tests, debugged callout failures. I focused on system design, stakeholder alignment, and production operations.

58
Apex Classes
Services, controllers, batch jobs — plus full test coverage. 8 weeks to production.
53
LWC Components
Queue, detail views, exception summaries, forecast cards, Slack thread viewers.
6
System Integrations
Salesforce, Django, Slack, Ironclad, Redshift, Hightouch — wired without manual handoffs.

First month in production.

$5.3M
Forecasted spend processed
$2.6M
Approved and priced
260
Rate lines pushed to production
41%
Auto-approved, zero human delay
$1.1M
Revenue leakage surfaced
8 wks
First commit to production

Every approved rate reaches production without human data entry. Full audit trail from request to live rate. No tribal knowledge required.

§ VI

What surfaced after launch.

The system worked. It would have kept working. The next chapter of the story is the one most case studies leave out.

For a commercial decision to clear automatically, the system needs to know everything that's been previously agreed: the master agreement terms, the negotiated rates, the payment schedule, the rebate triggers, the state-level cost overrides. All of it. Cleanly. With database-level guarantees.

What I inherited was the opposite. The contract data that determines whether a deal can auto-clear lived across four separate systems: contract management (Ironclad), finance spreadsheets, Salesforce, and Slack DMs between the Deal Desk reviewer and account owners.

A reviewer evaluating a single deal would hunt across all four sources to assemble the picture. The reviewers were doing what a system should do: reconciling fragmented data so a decision could be made.

Most of the data needed for auto-approval already lived in our Django backend's contract entity. The rest was scattered across the four other sources. The 41% auto-approval rate was real, but the ceiling on it wasn't on the Salesforce side I was building. It was upstream, in the foundation.

The gap wasn't on the surface I was building. It was in the foundation underneath it.

That distinction matters. If the gap were on the Salesforce side, I would have kept adding rules, exceptions, and policy modules. That's the natural move for a builder — keep building. But the gap wasn't there. It was upstream, in the backend, in how contract data was modeled and stored. No amount of Salesforce work would close it.

§ VII

The architectural argument.

The most useful thing I could do at this point was the least comfortable thing I could do: stop building and surface the problem.

I wrote up the data architecture problem, the cost of working around it, and the proposed reshape. I named the trade-off plainly. The work I'd been doing could keep going, with marginal returns and accumulating workarounds. Or the engineering team could take on a focused refactor of the contract data model, and the Salesforce side would benefit immediately and permanently.

I made the case for pausing Deal Desk and prioritizing the refactor. The decision wasn't mine to make — but the case was mine to make well.

Leadership agreed. Deal Desk got paused. Product engineering reallocated to the rewrite. The new architecture defines our product roadmap for the next phase.

A builder who keeps building on a broken foundation is rewarded for visible output and punished by the system they create. A builder who surfaces the foundation problem is rewarded by the system that comes after.

This was the move that's hardest to fit on a resume. There's no metric for "the right architectural argument made at the right time." It only shows up later, in the work that becomes possible because the foundation got fixed.

§ VIII

Beneficiary and casualty.

Here's the part most case studies leave out.

When auto-approval works for matched-contract deals, the Deal Desk function I built changes shape. The volume that justified a dedicated team falls to the residual cases that require genuine human judgment: non-standard terms, new partner agreements, edge cases the rules can't yet encode.

The honest question now is: what does Deal Desk look like when the system absorbs the volume? Is the residual workload enough to justify a dedicated team, or does it become a part-time responsibility within a broader role? What decisions can never be encoded as rules and therefore survive automation indefinitely?

The dynamic is real: I'm optimizing the system in a way that reduces the scope of the function I built it to serve. That's the right move for the company. It's a less obvious move for the person who built it.

I am explicit about this trade-off. Companies hiring senior commercial engineers should want people who will absorb their own function into the system rather than entrench it. The signal is the willingness to make that argument.

Where we are now.

The refactor is in progress. Engineering has reallocated to the contract entity rewrite. Deal Desk work is paused except for production support.

The work I'm doing during the pause is the supporting architecture: writing the Salesforce side companion specs, mapping the Hightouch sync, defining the transition strategy, working through the persona-based process changes that will land when the new system goes live. The path to MSA-matched deals auto-approving at the correct contracted rates without human intervention is the milestone. Everything before it is preparation.

§ IX

What's under the hood.

Salesforce · Platform Apex · Backend Lightning Web Components · Frontend Flows · Orchestration Django · Rate API Slack API · Notifications Ironclad · Contracts Redshift · Data Warehouse Hightouch · Reverse ETL Cursor · AI Development Claude · AI Agent MCP · Tool Protocol
What I take from this

The build keeps mattering. The argument for the build matters too.

The system kept working. It would have kept working for another year on the foundation it was on. Surfacing the architectural debt cost short-term velocity to buy permanent foundation. The argument was mine to make. The decision wasn't.

The work I want to do next is on systems where both halves are explicit. Where the case for what to build, why, and when to stop is part of the engineering, not a separate conversation that happens elsewhere.

What's next A RevOps prioritization engine — applying the decision-surface design language to RevOps work itself. What to build next, why it matters, and what to deprioritize. In progress.
Back to portfolio →