Infrastructure for agents that finish the job.

Build agents that find the right person, call, email, fax, and pull in a human when one is needed, until the job is done. One request, every channel, every retry.

SOC 2 Type II · HIPAA-ready · Built for FCRA workflows

See a task run start to finish →
WHAT YOUR AGENTS USEContact researchVoiceEmailFaxDocumentsYour team

Agents that do more than just talk.

Whoever holds your answer, an HR desk, a records department, a claims office, a court clerk, rarely just gives it to you. They send you to email. They demand a fax with a signed release. They take three days. A voice API covers the conversation. The job is everything after it.

STEP 1You call.Nine options in the phone tree. None of them is the one you need.
STEP 2They say email it.So the request goes in writing, and the call was never going to close it.
STEP 3They ask for a fax.With a signed release attached, addressed to the right desk.
STEP 4A person has to look.What comes back doesn't match what you were told.

See a task run start to finish.

Four tasks a customer’s agent might run, one from each of four industries, replayed a step at a time. Each is a single POST to /v1/tasks. The agent is theirs. The parts it calls are ours. Names, numbers, and companies are made up, the mechanics are not.

Tuesday 10:04am·step 1 of 5
CALL
Braddock Casualty, claims verification
14 minutes on hold, then a coverage clerk
AGENT
I'm verifying coverage on policy BC-4471822 for a loss on March 9.
CLERK
I can't confirm that to a third party. Fax a letter of representation to 312-555-0177 and reference the claim number.

Carriers will not read a policy out to a stranger. The requirement shows up mid-call, and the task changes shape.

Build agents that choose their own path.

See the platform →

Grant a task the channels it can use and let the agent sequence them. No pipeline to define, no state machine to maintain, and no branch to write for every way an institution can say no.

Contact research
Most outreach dies before anyone picks up. Groundrail finds who actually holds the answer, and a line that still works.
Voice
Build enterprise-grade voice agents that sound human and hold their own on a live line. They work phone trees, wait on hold, take transfers, leave voicemails, and disclose only what's authorized. Tuned on hundreds of thousands of real calls.
Email
A thread is where most automation quits. Your agent runs the whole exchange: reads the reply, answers what's inside it, attaches what was asked for, chases silence.
Fax
Records departments and clerks' offices still refuse everything else. Send, confirm, retry, and read what comes back.
Documents
Paperwork is usually the delay. Your agent validates the authorization before anything goes out, then reads and sorts what comes back, flagging anything outside the release for a reviewer to redact.
Orchestration
No channel finishes alone. One request moves between all of them, sleeps while someone else's office decides, and wakes when the reply lands.

Build human in the loop tools.

Agents do a lot, not everything.

Some steps need a person. A date that doesn’t match. A signature that isn’t there. A clerk who will only speak to a human.

Groundrail ships the tooling your team works in when that happens: every escalation from every channel lands in one queue, typed, with the whole task attached. That is what lets a handful of people supervise work that used to take a floor of them.

Review queue14 OPEN
RETURNED MAIL
Two class members in the Ashford matter came back undeliverable.
Resolve
SIGNATURE MISSING
The release from Meridian Health came back without a signature block.
Resolve
WANTS A PERSON, ON THE LINE NOW
An adjuster at Alder Mutual asked to be transferred to someone.
Take
“We built this stack to run our own verification business. Six people complete more than 300,000 verifications a year on it.”
Peter MarlerCEO, Superunit (YC S24)

Start from a real task.

Read the docs →
records-request.ts
import { Groundrail } from "@groundrail/sdk";

const gr = new Groundrail(process.env.GROUNDRAIL_KEY!);

const task = await gr.tasks.create({
  type: "records_request",
  target: { provider: "Meridian Health Partners", phone: "+15902092000" },
  channels: ["voice", "fax", "documents"],
  documents: [{ role: "hipaa_release", url: releaseUrl }],
  documentPolicy: {
    validateBeforeSend: ["signature_block", "expiry"],
    onReceive: { ocr: true, flag: "non_responsive_phi" }
  },
  // Redaction is a decision, so it goes to one of your reviewers.
  humanReview: { blockOn: ["document_review"] },
  webhook: "https://api.client.example/webhooks/groundrail"
});

console.log(task.id, task.status); // TASK-90388 running

Regulated work, handled the way your auditor expects.

Every task carries someone’s personal data. Groundrail treats it that way by default: PII redacted where it doesn’t belong, access scoped per request, every step logged.

HIPAA
BAA on request. PHI outside the authorization is flagged on receipt and redacted in review. Access scoped per request.
Call recording
Consent notice played per jurisdiction. Two-party states handled by policy, not by hand.
FCRA
Permissible purpose recorded per task. A dispute-ready trail on every step.
Retention
Per-tenant windows. Recordings, transcripts, and documents expire on schedule.
SOC 2
Type II certified. Report available under NDA.
Data residency
US-only processing by default. Subprocessor list published.

What teams build on Groundrail.

All solutions →

Built for teams whose product depends on an answer from someone else’s office.

Background screeningHealthcare recordsClaims operationsRevenue cycleLegal case operationsBusiness verification

Tell us what you are building.

Three questions, then pick a time. We will come back with which building blocks cover it and what it costs to run.

HOW IS THIS PRICED

Usage-based. You pay for what the agents consume, metered per call, message, page, and token. Talk to us for volume pricing.