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.