> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vein.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> What Vein is, and how reporting works between companies and their investors.

export const Diagram = ({kind = "chain", steps = [], feedback = null, sources = [], decision = null, result = null, source = null, hub = null, branches = [], pairs = []}) => {
  const glyph = k => <svg viewBox="0 0 20 12" fill="none" aria-hidden="true" key={k}>
      <path d="M1 6h15.5" stroke="currentColor" strokeWidth="1.75" strokeLinecap="round" />
      <path d="M13.5 1.5 18.5 6l-5 4.5" stroke="currentColor" strokeWidth="1.75" strokeLinecap="round" strokeLinejoin="round" />
    </svg>;
  const arrow = k => <span className="vein-flow__chevron" key={`a${k}`}>
      {glyph(k)}
    </span>;
  const box = (n, k, variant) => n ? <div key={`n${k}`} className={variant ? `vein-flow__node vein-flow__node--${variant}` : "vein-flow__node"}>
        <span className="vein-flow__label">{n.label}</span>
        {n.note ? <span className="vein-flow__note">{n.note}</span> : null}
      </div> : null;
  const spine = paths => <div className="vein-flow__spine">
      <svg viewBox="0 0 100 100" preserveAspectRatio="none" fill="none">
        {paths.map(d => <path key={d} d={d} stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" vectorEffect="non-scaling-stroke" />)}
      </svg>
    </div>;
  if (kind === "merge") {
    return <div className="vein-flow">
        <div className="vein-flow__branching">
          <div className="vein-flow__stack">
            {sources.map((s, i) => <div className="vein-flow__row" key={s.label}>
                {box(s, i)}
              </div>)}
          </div>
          {}
          {spine(["M0 25C55 25 45 50 100 50", "M0 75C55 75 45 50 100 50"])}
          {arrow("d")}
          {box(decision, "d", "decision")}
          {arrow("r")}
          {box(result, "r", "strong")}
        </div>
      </div>;
  }
  if (kind === "fan") {
    return <div className="vein-flow">
        <div className="vein-flow__branching">
          {box(source, "s")}
          {arrow("s")}
          {box(hub, "h")}
          {}
          {spine(["M0 50C55 50 45 16.667 100 16.667", "M0 50H100", "M0 50C55 50 45 83.333 100 83.333"])}
          <div className="vein-flow__stack">
            {branches.map((b, i) => <div className="vein-flow__row" key={b.label}>
                {arrow(`b${i}`)}
                {box(b, `b${i}`)}
              </div>)}
          </div>
        </div>
      </div>;
  }
  if (kind === "compare") {
    return <div className="vein-flow">
        <div className="vein-flow__compare">
          {pairs.map((p, i) => <div className="vein-flow__pair" key={p.from.label}>
              {box(p.from, `f${i}`)}
              {arrow(`p${i}`)}
              {box(p.to, `t${i}`, "strong")}
            </div>)}
        </div>
      </div>;
  }
  const n = steps.length;
  const centre = i => `${((i + 0.5) / n * 100).toFixed(3)}%`;
  return <div className="vein-flow">
      <div className="vein-flow__track" style={{
    "--vein-flow-n": n
  }}>
        {steps.map((step, i) => <div className="vein-flow__cell" key={step.label}>
            {box(step, i, step.strong ? "strong" : null)}
            {i < n - 1 ? arrow(i) : null}
          </div>)}
      </div>

      {feedback ? <div className="vein-flow__loop">
          <div className="vein-flow__loop-path" style={{
    left: centre(feedback.to),
    right: `calc(100% - ${centre(feedback.from)})`
  }} />
          <span className="vein-flow__loop-chevron" style={{
    left: centre(feedback.to)
  }}>
            {glyph("loop")}
          </span>
          {feedback.label ? <span className="vein-flow__loop-label" style={{
    left: `calc((${centre(feedback.to)} + ${centre(feedback.from)}) / 2)`
  }}>
              {feedback.label}
            </span> : null}
        </div> : null}
    </div>;
};

Vein is where companies report to their investors, and where investors see their
portfolio without chasing anyone for it.

The difference from a spreadsheet and an email thread is where the numbers come
from. A company connects its financial systems to Vein once. From then on the
figures in every report are pulled from those systems rather than typed in by
hand, so an investor reading a report is reading verified numbers, not
self-reported ones.

## How it works

<Diagram
  kind="chain"
  steps={[
{ label: "Company connects its financial systems" },
{ label: "Data flows into Vein" },
{ label: "Company reviews and sends a report" },
{ label: "Investors see the portfolio", strong: true },
]}
/>

**A company connects its sources once.** Plaid for bank accounts, Stripe for
revenue, QuickBooks for the ledger, Gusto for payroll. The connection is
read-only, and it is a one-time setup rather than a monthly chore.

**Data flows in on its own.** Vein pulls from those systems on a schedule and
turns them into metrics: cash, burn, runway, revenue, headcount. Nobody
re-enters anything, and each number can be traced back to the system it came
from.

**The company sends a report.** A report combines those verified metrics with
the parts only a company can write: what changed this quarter, who was hired,
what the risks are, what help is needed. The company reviews it and decides when
it goes.

**Investors see the whole portfolio.** Reports arrive in one place, comparable
across companies, alongside a dashboard that aggregates them. Investors can ask
for something specific when they need it, and companies decide what to share.

## What each side does

<CardGroup cols={2}>
  <Card title="For Companies" href="/guides/connect-a-data-source">
    Connect your financial systems, build reports on top of them, and control
    what each investor can see.
  </Card>

  <Card title="For Investors" href="/guides/view-your-portfolio">
    See every company in one view, request what you are missing, and read
    across the portfolio rather than one PDF at a time.
  </Card>
</CardGroup>

## Why it is built this way

Investor reporting usually fails in one of two directions. Either the company
spends a week assembling a deck each quarter, or the investor spends the quarter
asking for one. Both come from the same root cause: the numbers live in systems
nobody has agreed to share.

Connecting the sources once removes the assembly work on one side and the
chasing on the other. What is left is the part that actually needs a human:
deciding what the numbers mean and what to say about them.

Ready to start? The [guides](/guides/overview) walk through every flow on both
sides. If something is not covered there, the [FAQ](/support/faq) probably has
it, and [team@vein.finance](mailto:team@vein.finance) reaches us directly.
