Building with Claude
Pooli is a non-custodial payment verification platform for service businesses. We use Claude across our engineering, documentation, and internal tooling, and we're building a Claude-powered drafting layer on top of a deterministic payment core.
How we use Claude today
Engineering and code review
Claude assists with implementation, test generation, and review across our Go services and TypeScript web app.
Documentation and policy
Our public site, internal runbooks, and policy drafts are written and reviewed with Claude. The privacy, terms, and security pages are drafted with Claude. A lawyer has not reviewed them yet.
Internal tooling
Claude summarizes payment activity and assists with reconciliation checks for our own operations.
Workload identity
Our CI authenticates to the Claude API without static keys (see below).
Workload Identity Federation
Pooli authenticates to the Claude API from GitHub Actions using Workload Identity Federation. There are no static API keys in our CI.
What that means:
- GitHub Actions requests a short-lived OIDC token scoped to our repository and branch.
- The token is exchanged for a short-lived Anthropic access token through a federation rule.
- Trust is pinned to our immutable GitHub organization ID, not just the org name — so a renamed or re-registered org cannot inherit access.
- Tokens are single-use and expire in minutes.
This is production-grade keyless authentication. It means there is no long-lived secret to leak, rotate, or accidentally commit.
What is not LLM-driven
Payment verification is deterministic. Matching, state transitions, and settlement checks are implemented in Go and chain workers. Claude does not decide whether a payment is valid, and it never moves money.
We made this boundary explicit on purpose. Money conversations need high trust, and trust comes from code you can audit, not from a model you can't.
What we're building
Draft reminders
A follow-up message for unpaid payments, drafted by Claude from the job note and payment status. The merchant reviews, edits, and sends. Claude drafts text; the merchant acts.
Payment status questions
Answering customer questions like “Did I already pay?” from verified payment state, with Claude handling the language and the deterministic core handling the truth.
We build evals for payment accuracy and hallucination prevention, because a wrong answer about money is worse than no answer.
Why Claude
Payment workflows need accuracy, long context, and reliable tool use. Claude fits. We also chose to build on Claude because the safety posture matches ours: bounded, auditable, human-in-the-loop where it matters.