Recipes

Billr ships primitives, not automation. These are copy-paste patterns for your CLAUDE.md or AGENTS.md. Paste one into a repo and your agent follows it from then on. Every recipe here runs under your control, in your agent, on your machine. Billr doesn't run any automation on your behalf.

Billable time logging

Logs time as you finish work in a repo, so unbilled hours never pile up silently. It only calls log_time and never creates or sends anything, so there's nothing for the agent to get wrong on the money side.

## Billable time logging

When I finish a meaningful chunk of work in this repo (a feature, a bug fix,
a review, anything client-billable), log it to Billr before moving on:

1. Estimate the hours spent on the task you just completed.
2. Call `log_time` on the Billr MCP server, scoped to the "Acme Co" business,
   with the client name, a one-line description of the work, the date, and
   the hours.
3. Do not create or send an invoice. Just log the time. I'll ask for an
   invoice run separately.
4. If you're unsure which client the work belongs to, ask me before logging.

Month-end invoice run

Pulls everything unbilled per client and drafts invoices from it once a month. Every invoice lands as a draft. The agent never calls send_invoice, so nothing reaches a client without you looking at it first.

## Month-end invoice run

When I say "run invoices for <month>" or on the last business day of the
month if I ask for the routine:

1. Call `list_unbilled` for each active client to see unbilled time and
   expenses grouped by client.
2. For each client with unbilled work, call `create_invoice` with the
   unbilled line items pulled in as-is. Do not invent or round line items.
3. Leave every invoice as a **draft**. Never call `send_invoice` as part of
   this recipe.
4. Reply with a summary table: client, invoice total, and the dashboard link
   from the tool response, so I can review and send from the app.

Overdue chase drafts

Finds overdue invoices and writes the follow-up emails for you, but stops at drafting. The agent never sends the email or touches invoice status. You decide what goes out and when.

## Overdue chase drafts

When I say "check on overdue invoices":

1. Call `list_invoices` filtered to overdue status.
2. For each overdue invoice, call `get_invoice_link` to get the public
   invoice URL.
3. Draft a short, friendly follow-up email per client (not per invoice) that
   references the invoice number, amount, and due date, and includes the
   public link. Do not send anything.
4. Paste the drafts back to me in chat, one per client, so I can edit and
   send them myself, or forward them for me to send from the dashboard.
5. Never mark an invoice as paid or edit its terms as part of this recipe.

A reminder: these patterns tell your agent what to do, but your agent is the one doing it, under your account, with your API key, in your editor. Billr never runs a scheduled job or background automation against your data; if something happens, it's because your agent did it, when you asked it to.