Documentation
Biloh documentation
How Biloh works, how to do things in it, and how it is built. Public and built to be read by people and AI agents alike — the full corpus for agents is at /llms-full.txt.
How-to guides
- Dispatching and triaging jobs
Dispatch a job to a contractor, act on it from the Job Command Sheet, and clear what needs attention — overdue, missed, and unassigned work.
- How to send a proposal
Build a proposal in Biloh, preview the investment summary, and send it to your client for a legally-binding email acceptance — by chat or in the app.
Reference
- Connecting Biloh over MCP
How to connect a Biloh tenant to an AI assistant over the Model Context Protocol — the endpoint, authentication, personas, and the operator toolset.
- Route optimization: the runs bolt-on
Runs group a day's stops in Biloh. Ordering them by hand is free; an optional paid solver sequences them and hands the route to your maps app.
Explanation
- Delivery models: dispatch, self-perform, or both
One delivery-model setting adapts Biloh to operators who subcontract every job and to owner-operators who do the work, without splitting into two products.
- Scheduling jobs by the day, not the minute
Why a field-service schedule models jobs at day granularity, and how editing a recurring series splits into this-occurrence and all-future changes.
- How Biloh handles money: the two Stripe tills
How Biloh separates platform subscription billing from each business charging its own customers — two independent Stripe tills.
- When completing a job bills the client
Field-service billing cadence is per-client: invoice each job on completion, consolidate a period, bill on the period's last job, or invoice by hand.
- Why your brand assets should outlive your designer
How Biloh's Brand Pack keeps finished files AND editable source masters with your business, so any designer can continue the work.
- What is Biloh?
Biloh is an AI-native operating system for service businesses — run quoting, scheduling, contractor dispatch and invoicing by chat or any AI agent.
Engineering notes
- Show the price you'll charge: one source of truth
Show prices from the same source that charges the customer. Copying a price into a second surface invites silent displayed-versus-charged drift.
- Drag is a desktop idiom; the phone wants a tap
Drag-and-drop dispatch boards are desktop tools. On touch a press-and-move is a scroll, so the field surface has to be tap-first, not drag-first.
- The gap between a green build and a live deploy
Lessons from building a docs system into a deploy-on-every-push platform: a green local build and a working deployment are different claims.
- Lessons from shipping agent-facing MCP tools
Lessons from shipping a batch of MCP tools: test the consumer not just the logic, surface what agents need, and watch the build and version traps.
- When the money arrives but can't be recorded
When a provider confirms a payment your system can't record, alert a human and still acknowledge the provider — never fail silently.
- Making a multi-connector MCP setup safe to act on
How Biloh stops an agent holding several tenant connectors from acting on the wrong one: identity, a per-response stamp, a mismatch guard, confirm-gates.
- One write path, many callers
Why every mutation should funnel through one core that the UI and the agent both call — and the billing bug that appears when a caller skips it.
- Tool discoverability for agents
How an agent finds the right tool among hundreds — a categorised map, intent search, and the zero-result rate as the signal the catalogue works.
- Trust the signed account, not the webhook's metadata
A payment webhook must bind each charge to the provider's signed account, not to client-supplied metadata — the pattern that blocks cross-tenant spoofing.
- Verifying the tenant that isn't your default
A test harness that injects tenant context can't catch a tenant-resolution bug. Only live use on a non-default tenant exposed a 401 the suite couldn't see.
- A handler nothing subscribes to does nothing
An event handler can be unit-tested yet never run in production if nothing subscribes it to its event. Verify the wiring, not just the handler.