Skip to content

Agentic AI Cowlar Design Studio, product studio of YC-backed Cowlar

Automated HR letters and the worklogs behind ~$1M/month billing

At Cowlar I built an LLM agent on Google Sheets and Apps Script that drafts HR letters and onboarding checklists and keeps the worklogs that feed a ~$1M-a-month billing system.

3 min read

Result
Letters, onboarding checklists and worklogs generated from plain-language prompts instead of written by hand; worklogs reached the billing datasets without being typed in twice.
Impact
Removed a manual re-entry step between HR records and billing, a standing source of billing errors in a pipeline processing close to $1M a month. Usage volumes were not tracked.
My role
Designed and built the agent, the Sheets data model and the Apps Script document flow; connected its worklogs to the billing datasets I owned · Solo build, ~175-person studio
Context
Cowlar Design Studio, product studio of YC-backed Cowlar
Timeframe
May 2024 – Jun 2025
Tools
Google Apps ScriptLLM APIsGoogle SheetsSlack APIWorkflow automation
Links
Code and data available on request
One worklog served HR and billing
Schematic of the HR agent A plain-language prompt goes to the agent, an LLM plus Apps Script that reads and writes a Google Sheets database. The agent produces three outputs: letters, onboarding checklists and worklogs. Letters and checklists are filed in Drive. Worklogs, highlighted, flow into the billing SQL datasets behind close to $1M a month of billing. Plain-language prompt Agent: LLM + Apps Script reads and writes the Sheets database Letters employment, experience Onboarding checklists per role Worklogs who worked on what Drive storage filed into folders automatically Billing datasets ~$1M/month pipeline
Schematic, not a chart. The highlighted path is the reason the agent mattered beyond HR: the record of who worked on what was also a billing input.

HR paperwork and billing were maintaining the same fact twice

Cowlar Design Studio has about 175 people, and its HR work was high-volume, templated and low in judgement: employment and experience letters, onboarding checklists, and worklogs of who worked on what. In a services business that last record is two things at once. It is an HR artifact, and it is the hours data that billing charges clients for. Keeping it separately in two places meant typing it twice, and every retyped hour was a chance for a billing error in a pipeline processing close to $1M a month.

How I built it

Sheets beat a CRM because the process kept changing

The HR processes were not stable. A packaged HR system makes you model the process before you understand it. Google Sheets as the database, with Apps Script on top, let the data model change as the process changed, and gave me native access to documents, Drive storage and email. I chose speed of change over the stronger access control a packaged system would have given.

The LLM drafts, and scripts do the filing

A plain-language prompt goes to the agent. The LLM turns it into a draft letter or checklist; Apps Script handles everything that must be exact: reading and writing the Sheets database, generating the document, naming it and filing it in the right Drive folder. Slack integrations handled compliance follow-ups. Keeping storage and records in code meant the model never decided where a document lived.

Worklogs went straight into billing

The agent maintained employee worklogs and wrote them where the billing datasets could read them, so hours reached billing without being re-entered. That billing pipeline is the one in my billing case study, where automated capture improved billing accuracy by about 25%. The agent was one part of that pipeline, and I don’t claim that figure for it alone.

Letters and worklogs on request, with no re-entry into billing

Letters, onboarding checklists and worklogs came from a prompt instead of being written by hand, and the manual re-entry step between HR and billing went away. I did not track how many documents it produced or how much time each one saved, so this page gives no usage numbers.

What I’d tell the next team

Look for the fact two departments both maintain, and automate it once. Here it was the worklog. Let the model draft text, and keep every step that must be exact (records, file names, storage) in code you can test.

Limitations and what I’d do next

  • No usage data. I didn’t log volumes or time per document. The next version should count both from day one.
  • Personal data reached the LLM provider. Letters need employee details. A production version needs a written data-handling policy, a provider agreement that excludes training on the data, and redaction of anything the draft doesn’t need.
  • Access control was spreadsheet-level. Sheets permissions are coarse. Role-based access and an audit log of who generated what would be the first upgrade.
  • It has a scale ceiling. Sheets plus Apps Script suited a ~175-person studio with changing processes; at several hundred people I would move to a proper HR system and keep the agent as a front end.
  • Human sign-off should be on record. Each letter should carry a logged approval before it goes out, so a wrong draft can be traced to who released it.
Technical appendix

Components

Part Tool Job
Interface Plain-language prompt Request a letter, checklist or worklog update
Drafting LLM API Turn the request and the employee record into a draft
Database Google Sheets Employee and worklog records, read and written by the agent
Documents Google Apps Script, Drive Generate, name and file each document; keep the folder structure
Notifications Slack API Compliance follow-ups
Billing link Worklog sheet → billing SQL datasets Hours reach billing without re-entry

Outputs. Employment, experience and warning letters; onboarding checklists per role; employee worklogs.