Data & Connectivity

A system of record that fills itself.

A CRM is only as good as what gets typed into it — and nobody has time to type. Here the data arrives on its own: from APIs, files, websites and your inbox, on a schedule, validated before it ever touches a record.

For ops

Build the request. Let the AI map the response.

An API-client-grade editor lives inside the CRM: compose the request with pill-based variables — encrypted environment secrets, per-record loop fields, even relation hops — hit send, and read the response tree right there. Approve the AI's extraction spec once and it travels with save.

  • Pill-based variables — env secrets, loop fields like a record's ticker, and relation hops, all inserted without hand-typing a template.
  • AI-inferred mapping — the model proposes the extraction spec and field mapping from a live sample; you approve, don't author.
  • Any format — JSON, CSV, XML or a scraped web page, one editor either way.
Data source · Portfolio KPIs — weekly
GETapi.filings.example/v2/kpis?key={{ENV.api_key}}&company={{record.ticker}}
Response · JSON
{ "revenue": 52400000, "arr": 61100000, "region": "NA-East" }
Mapped to
revenue → Financial metric · revenue
arr → Financial metric · arr
region → unmappedreview
For the team scraping rate sheets

No API? Point at the page.

A guided picker overlays the live site: click the list container, click each field, click next-page. Selectors generate themselves, and the crawl runs headless on schedule from there — slow JS pages settle properly first, and captured HTML is sanitized before anything is parsed.

  • Point, don't code — no CSS selectors, no XPath, just clicks on the rendered page.
  • Handles slow pages — waits for the page to settle, and an explicit "wait for" selector when a site needs it.
  • Multi-record in one pass — a list container plus per-field selectors extracts every row on the page, then follows pagination.
Web capture · centralbank.example/rates
List container · table.rates
Field · Effective date
Field · Rate %
Pagination · Next ›
Preview24 rows extractedLooks right
For whoever gets paged

Every sync, fully observable.

Hourly, daily or weekly schedules with pagination caps keep runs bounded. Every run keeps a full log — per-request status and duration, failure bodies, unresolved-placeholder warnings — with secrets redacted before anything is written down. Failed runs are runs too: they show up, with reasons.

  • Redacted by construction — env values and decrypted credentials are registered as secrets before a single line is logged.
  • The #1 failure mode, caught early — an unresolved {{placeholder}} warns loudly instead of silently sending a broken request.
  • Created, updated, unchanged, skipped — every run reports exactly what it did to your data.
Runs · SOFR daily rates
06:00312 rows1.2sSuccess
Yesterday298 rowscreated 3, updated 295Success
Jul 62 rows failed validationPartial
Jul 5HTTP 503retried ×2Failed · logged
For data quality

A bad row never corrupts a record.

Rows that fail validation land in a review queue instead — the exact field-level issues, rendered in the same typed inputs as the record form. Fix and insert, or reject; recurring failures dedupe instead of piling up. Write policies and a dedupe key keep syncs from trampling manual edits.

  • Typed, not text — a date field shows a date picker, a relation shows a search, even in the review queue.
  • Upsert, create-only or update-only — choose per source whether a sync may touch existing records at all.
  • No pile-up — the same failing row across scheduled runs updates one queue entry, not a hundred.
Pending rows · 2 need review
Row · Meridian Foods2 issues
Revenue'n/a'— required number
As-of date31/02/2026invalid date
Fix & insertReject row
For private credit

A rate feed in, a covenant watched.

Map a source column straight to a financial metric — per period, daily granularity included, with a value scale for feeds quoted in percentage points — and downstream everything just works: interest accrual workflows compute daily, covenant formula fields update, mandate monitoring watches the result.

  • Daily granularity — a rate feed can post one value per calendar day, not just per period.
  • Value scale, no code — a "3.73" from the feed lands as the decimal fraction your metrics expect.
  • One mapping, three downstream effects — accrual, covenant formulas and monitoring all read the same written metric.
Mapping · SOFR → base_rate (daily)
Date Rate %
Jul 7 4.29
Jul 8 4.31
Jul 9 4.31
Writes metric · base_rate (daily)
Triggers · daily interest accrual — 11 loans
Feeds · leverage covenant monitoring
For everyone

Your inbox, already linked.

Gmail and Outlook connect per-user or workspace-wide: threads and meetings link themselves to the deal, the LP, the company. A Gmail-style compose dock with scheduled send lives right in the app — and one hybrid search spans records, files and email at once, so a scanned deck is findable by what's inside it.

  • Self-linking — an email or meeting attaches to the matching record automatically, no manual filing.
  • Compose without leaving — a minimizable dock with drafts, scheduled send, and record attachments.
  • Keyword + semantic, one box — search finds a document by its content, not just its filename.
Inbox · linked to records
NC
Nora Chen — Cascade PensionRe: co-invest side letter — final redline attached
08:41Investor · linked
JB
James Boyd — Helix CFOQ2 board pack attached — EBITDA ahead of plan
YesterdayPortfolio · linked
MF
Meridian Foods — deal roomManagement presentation + data room access
MonDeal · linked
Search "co-invest side letter" Found 3 records · 2 files · 4 emails
Trust the pipe

Automated in, governed forever.

Provenance on the record

Every synced record carries its source and run id — you can always answer "where did this number come from."

Secrets stay secret

Credentials are encrypted at rest, resolved server-side only, and redacted from every log — even a failed run's.

Live everywhere

A synced change updates every open screen instantly — the same audit-driven live layer as a human edit.

Leverage per head

Where the typing stops.

Ops

Sources, not spreadsheet imports

Point at the API or the page once; every run after that is unattended, logged, and reviewable.

Deal team

The inbox already knows the pipeline

Threads and meetings link to the deal automatically; search finds the deck by what's inside it.

Credit team

Rates in, accruals and covenants out

A daily rate feed drives interest accrual and covenant formulas with nobody re-keying a number.

IR

LP correspondence, on the record

Every email lands against the right investor, and a scheduled send goes out without a reminder.

Get started

Bring an API key
or just a URL.

In 30 minutes we'll wire a live source — request, mapping, schedule — and watch rows land as governed records, review queue and all.