Ingest a document. Analyze a company, a person, or a whole fund. Score it against your own criteria, keep it under watch, and extract exactly the metadata your model consumes. This page is the catalog.
Every call carries your API key in the Authorization header and comes back in the same envelope, so a client you write once reads every response on this page.
GET https://api.kruncher.ai/api/integration/projects
?page=0&pageSize=20
Authorization: YOUR_API_KEY{
"metadata": {
"code": "1000",
"title": "Successful",
"description": ""
},
"data": [ ... ],
"pagination": {
"page": 0,
"pageSize": 20,
"totalCount": 42,
"nextPage": true
}
}Structured, sourced, timestamped output on every call. Take one family, or chain all five.
Send a deck, a data room file, a financial statement or a spreadsheet. Nothing is extracted until the engine knows which document it is reading and which entity the content belongs to.
Upload one file or a folder. Each file is classified, parsed and resolved to the company, fund or person it describes before any figure is read.
Returns: A document id, its class, and the entity it resolved to
Point the extractor at your own field definitions and get exactly the fields your model consumes. The thousand data points become the sixty, or the thirty two, you actually use.
Returns: Your schema, filled, with provenance on every value
Add files to a company or a fund that already exists, so the record keeps one history instead of forking into a second one.
Returns: The updated entity, with the new sources listed
{
"file": "Q1-2026-report.pdf",
"resolveTo": "fund",
"fields": [
"nav",
"unfunded",
"accrued_carry"
]
}{
"documentId": "doc_9f2c41",
"class": "quarterly_report",
"period": "2026-03-31",
"resolved": {
"type": "fund",
"name": "Elmsworth Europe VII"
},
"fields": [
{
"field": "nav",
"value": "1246629.00",
"currency": "USD",
"status": "extracted",
"source": {
"file": "Q1-2026-report.pdf",
"page": "14"
}
},
{
"field": "accrued_carry",
"value": null,
"status": "missing",
"reason": "not printed in this document"
}
]
}Analyze any company against a thesis you define, score it on your own criteria, and keep it under watch afterwards. Roughly a thousand structured data points, each one sourced and timestamped.
Run a full analysis from your documents and the premium sources underneath: profile, financials, employee growth, web traffic, competitive landscape, founding team, market sizing and investor history.
Returns: The full company model, every field sourced and dated
Score against your own criteria. Up to 500 deal score parameters, weighted the way your firm decides, returned with the reasoning behind each contribution.
Returns: Deal score, thesis match, and the reasoning per dimension
Put a company under continuous watch. Re analysis on the cadence you set, with 600 configurable signals across people, liquidity, M&A and business deals. Add your own on top.
Returns: Signal events with source and date, pushed by webhook
Find companies across your own pipeline and the wider universe, filtered on the attributes your thesis actually turns on.
Returns: A paginated list of resolved companies
{
"companyWebsite": "https://novacrop.com",
"criteriaId": "agritech_series_a",
"prompt": "Weight unit economics.",
"sections": [
"financials",
"team",
"competitors"
]
}{
"metadata": { "code": "1000" },
"data": {
"id": "521a93a6-091d-4943-ba13-7c1a654a14ae",
"companyName": "NovaCrop",
"companyIndustry": ["AgriTech", "SaaS"],
"companyStage": "seriesA",
"processing": "completed",
"projectScores": [
{ "score": 8.5, "scoreText": "Strong Fit" }
],
"analyses": [
{
"id": "analysis_xyz789",
"type": "company",
"status": "completed",
"createdAt": "2026-09-16T10:30:00Z"
}
],
"datapoints": 1043,
"sources": ["crunchbase", "linkedin", "registry"]
}
}Resolve a person from a name and a company, then enrich them into a structured, sourced profile. Entity resolution collapses the same person appearing under different spellings into one node.
Resolve a founder, an executive or a professional from a name, a company or a LinkedIn URL, narrowed by the role you are looking for.
Returns: A resolved person, or an explicit no match
Career history, current and prior roles, education, co founder history, prior company outcomes and public signal activity, each claim carrying its source.
Returns: The full person model, every field sourced
See who on your own team is connected to that person, drawn from the address books and inboxes you have connected.
Returns: Connections, ranked by strength, with where each lives
{
"fullName": "Marta Vellone",
"companyName": "NovaCrop",
"linkedinUrl": "linkedin.com/in/mv",
"type": "founder"
}{
"metadata": { "code": "1000" },
"data": {
"fullName": "Marta Vellone",
"currentRole": "Co-founder & CEO",
"pastExperience": [
{
"role": "VP Engineering",
"name": "Torvex",
"startDate": "2017-04",
"endDate": "2021-11",
"isTopCompany": true
}
],
"education": [
{
"universityName": "ETH Zurich",
"degree": "MSc Computer Science",
"isTopSchool": true
}
],
"connections": [
{
"memberName": "Your partner",
"source": "linkedin",
"degree": 1
}
]
}
}Analyze a whole fund, not just the companies inside it. The fund family is resolved from the LPA before a single figure is extracted, so sleeve mechanics stop being a manual job and nothing is counted twice.
Point a run at a data room. Every file is classified, the fund structure is resolved from the LPA, figures are extracted against your definitions, derived, validated, and returned as a workbook. One fund in about an hour, ten in parallel inside ninety minutes.
Returns: A run id, then the workbook, cell by cell
Every position carries its status, its source file and page, the competing candidates, and the deterministic checks that ran against it. Nothing is asserted and nothing is guessed.
Returns: Sheets, cells, candidates, checks and annotations
An independent value for each holding as of today, taken down to the fund's stake and set against the GP's mark, with a confidence level attached.
Returns: Per holding estimate, stake value, and variance to NAV
Feed a completed run new documents only. The pipeline loads the base run as the baseline and stamps every row with how it relates to it: carried, restated, new period or new.
Returns: A new run, diffed against the base
{
"name": "Elmsworth Europe VII",
"folderPath": "/dataroom/elm-vii",
"refDate": "2026-03-31",
"projectMode": "analyze",
"customerIsInvestor": true
}{
"metadata": { "code": "1000" },
"data": {
"id": "3dc77b09-2f9f-4009",
"name": "Elmsworth Europe VII",
"status": "completed",
"refDate": "2026-03-31",
"portfolio": { "total": 19, "held": 9 },
"companies": [
{
"name": "Torvex",
"holding": "held",
"stake": 0.342,
"nav": 1027680102,
"estimate": {
"basis": "enterprise",
"stakeValue": 891616572,
"vsNavPct": -13.2,
"level": "low",
"asOfDate": "2026-09-16"
},
"signals": { "count": 3, "positive": 2 }
}
],
"validation": {
"summary": { "pass": 44, "warn": 3, "fail": 0 }
}
}
}The same data layer, reachable where your agents and your systems already are. No UI to adopt, and your governance boundary stays where it is.
Traverse typed, directional relationships across millions of companies: investor, partner, vendor, customer, competitor, founder, executive. Every edge resolves to a source.
Returns: Nodes and edges, each with provenance
Connect Claude, ChatGPT or your own agents straight to the data layer and query it conversationally, inside your own governance boundary.
Returns: Tools and resources your agent can call directly
Ask any question across every company, document and note you hold, and get an answer with the source and the date behind each claim.
Returns: An answer, plus the passages it was drawn from
Build repeatable agents on the same primitives, so a research routine your team runs by hand becomes something that runs on a schedule.
Returns: A task run, with its artifacts
A completion webhook per run and per signal, so your systems react rather than poll.
Returns: The event, and the entity it fired on
{
"entity": "novacrop.com",
"edges": [
"investor",
"competitor",
"customer"
],
"depth": 1
}{
"metadata": { "code": "1000" },
"data": {
"node": { "type": "company", "name": "NovaCrop" },
"edges": [
{
"type": "investor",
"target": "Corvale Partners XI",
"since": "2024-06",
"source": "registry"
},
{
"type": "competitor",
"target": "Kelvara",
"confidence": "high",
"source": "analysis_xyz789"
},
{
"type": "customer",
"target": "Draymont",
"source": "quarterly_report"
}
]
}
}Five modules and the data layer beneath them. Each one is a place to see the APIs already composed into a working workflow.
Get the right companies and people in front of you, and decide fast what is worth pursuing.
Do the deep work and produce outputs that can be defended in front of an IC.
Keep visibility on what you own, and report on it without the quarterly scramble.
The record fills itself in, and the decisions your firm takes stay attached to it.
Turn a data room into a reviewed register, and set an independent mark against the GP’s.
Consolidate every GP report and look through each fund to the companies beneath it.
How all of the above is produced: one resolved, current, thesis aware record per company.
Kruncher gives you the infrastructure: ingestion, entity resolution, the premium sources, the graph and the analysis engine. What you build on it stays yours, and we do not want visibility into it.
There is no UI to adopt. Several customers run entirely on the API and the MCP server and never open the platform. Take one primitive or take all of them.
The roughly one thousand data points per company can become the sixty your model consumes. Narrowing the schema improves accuracy rather than reducing value.
Managers change how they report every few weeks and models move faster than that. The upkeep sits with us, not with the one or two engineers on your team who also have deals to do.
Kruncher is model agnostic by design, and deploys where your data has to stay.
Claude models, and the MCP standard Kruncher exposes its data layer through.
Accelerated compute behind ingestion, extraction and the analysis pipeline.
Isolated tenants, Entra identity, and the deployment target most institutions already run on.
Gemini models and GCP as a deployment target, for teams standardized there.
Open source and self hosted models are supported, and the pipeline can run entirely on your compute with no egress to a vendor endpoint. Security, compliance and data residency.
Access to the APIs, the MCP server and the knowledge graph starts with a call. Bring the use case and we will tell you in that call which primitives it needs.