Case studies

Recent work, warts and all.

We describe clients instead of naming them. What's here is what happened, including the parts still in progress.

Finance & RevOps

Closing the books without ten spreadsheets

A New York sleep-tech hardware company. We sit inside its Data & Internal AI group, supporting Accounting and Finance.

Ongoing

The problem

The month-end close was mostly manual. COGS got assembled by hand from 13 separate 3PL feeds, Stripe data and a bill of materials that only knew today's costs. Burn pacing, VAT filings, vendor onboarding and AP reminders were spread across Excel, Ramp and NetSuite. Then the accounting lead left mid-year, and a lot of the know-how left with her.

What we did

We built dbt models on Snowflake that pull it together: Stripe, all 13 3PL feeds, freight and customs costs, and a bill of materials that keeps its history. Those feed a COGS model and a contribution-margin model in Looker. Then we automated the recurring jobs: journal entry prep, a VAT filing tool, burn pacing reports, AP reminders and a NetSuite-to-Ramp vendor sync. Nothing posts until a person approves it.

11 workflowsin production by Q2 2026
13 feedsin one COGS model
Human sign-offon every entry before NetSuite
Warehouse + AI agents

A data foundation, and an agent that watches it

A Seattle B2B SaaS company that automates tip distribution for restaurants, hotels and casinos. About 35 people, Series A.

Ongoing

The problem

The COO needed company-level reporting on sales, operations, marketing and revenue, and none of it existed in a usable form. The data lived in an app database that wasn't built for analytics. Simple queries took ten minutes. Revenue was split across two billing systems in the middle of a migration.

What we did

We moved the app database into a real warehouse with dbt and Tableau on top, then built what the business needed: customer health for CS, revenue reporting for the fundraise, and an executive revenue dashboard. A RevOps audit mapped every handoff between HubSpot, Salesforce and billing. Most recently we built an agent that responds when a dbt job fails. It reads the logs, checks git history and the warehouse, and posts a root-cause diagnosis in Slack. It's read-only.

~3 minutesfrom failure to diagnosis
32 modelsfixed after a silent bug
8–9/10 painaudit turned into a ranked fix list
Data engineering

Untangling duplicate compliance records

A hiring platform for high-volume employers in retail, logistics, healthcare and hospitality. 201–500 people.

Validated, ready to roll out

The problem

I-9 employment eligibility records were showing up duplicated and attached to the wrong workers. Worker IDs were only unique inside one business subdomain, and some large customers span eight or more. An import bug was also bleeding into E-Verify case IDs. On a compliance product, that isn't cosmetic.

What we did

We traced it to the subdomain gap and rebuilt the I-9 case model. Five staging tables got re-keyed to a subdomain-scoped, versioned grain. Window-function logic was replaced with ClickHouse-native deduplication. Every worker was reattached to a globally unique case ID. We checked the fix across three production environments before proposing it.

1,847 → 0cross-subdomain mix-ups
437 → 0workers with two active I-9s
~230,000cases checked, zero mismatches
BI migration + AI agents

Moving 220+ dashboards without hand-porting them

A last-mile delivery and linehaul operator moving its reporting from Tableau to Looker.

Ongoing

The problem

More than 220 dashboards had to move. Underneath, the Looker project had grown to 46 separate models, each one a dead end. Tableau refreshes had been failing quietly, and the client was the one noticing.

What we did

We built a pipeline instead of porting by hand. It exports each workbook, screenshots every view and writes a migration brief. An agent drafts the LookML, validates it, and flags any calculation that needs a person to decide. A visual check compares the result with the original. Production deploys stay manual on purpose. Alongside that, we're consolidating 46 models into 9 and checking after each phase that no number moved.

220+dashboards in scope
5 of 7consolidation phases done
0regressions in shipped phases
Customer-facing reporting

Reporting as a product, not an afterthought

A Chicago SaaS platform for pet-care businesses: booking, POS, revenue management and CRM. Seed-funded.

Ongoing

The problem

The company handles its customers' revenue, but nobody owned turning that into reporting customers could trust. Most of what customers saw sat on raw data, run by about 22 hand-written SQL files on a schedule. No tests, no lineage.

What we did

We took on customer reporting end to end: data modeling, an Omni semantic layer, dashboards, QA and the pilot feedback loop. We shipped the first production dashboards to pilot customers, rebuilt a legacy adoption table as 200 weekly snapshots back to 2022, and scoped a move to dbt.

3 bugscaught before customers saw them
200weekly snapshots rebuilt
24 tilesof internal product health
Embedded engineering

An outsourced deployed-engineering team

A B2B SaaS company, 11–50 people, that makes an embeddable CSV and PDF importer.

Ongoing

The problem

The product proves itself when someone maps a prospect's messy files to the format they need, before and after the sale. That work kept pulling engineers off the product, and nobody owned it.

What we did

We became their deployed and sales engineering team, working in their Slack under set response times: 48 hours for a demo before the sale, tiered SLAs after it. For their largest enterprise account, an HR and payroll platform, we build and maintain the transformations that turn data from four payroll providers into W-2C, highly-compensated-employee and state deposit filings.

48 hoursdemo turnaround
4 providersof payroll data in production
0churn events or escalations
Next step

Recognize your own mess in one of these?

That's usually a good sign. Thirty minutes is enough to tell whether we can help.

Book a 30-minute call
or email questions@kelihi.com