Market · Self-hostable

Company context for market intelligence.

Pull new funding, launches, and market signals on portfolio and watchlist companies, and surface what to track next.

Try Lobu
Connects to
DiscordGitHubGmailGoogle CalendarGoogle ChatHacker NewsLinearMicrosoft TeamsPostgreSQLProduct HuntRedditRSS / AtomSlackTelegramWhatsApp CloudX (Twitter)YouTube+5 more
03/LOBU RUN ]

One company layer, in 4 steps.

See how organizations, financing projections, and source events connect without role-specific identity types.

01

Connect your company.

Connectors stream your databases, SaaS tools, files, devices, and internal APIs into context. Your systems of record stay where they are. Models, sandboxes, and devices are independent layers, credentials gateway-side. Flip the tabs to wire each one.

Connectors ↗
+50 built-in — or your agent writes one ↗
Crunchbase updates become events in the same shared context.
feed · event → shared memoryentity
Crunchbase
updateLovable closed $15M Series Anow
02

Turn activity into governed context.

Raw events resolve into people, customers, projects, policies, and goals, with the relationships between them. Every fact from the connectors above converges on the right record, carries its provenance, and is read under the caller's permissions.

Memory ↗
memory
Investment organization
idPK
organization_type
thesis
Operating organization
idPK
organization_type
stage
Funding round projection
idPK
round_type
amount_usd
Market signal event
idPK
entity_idsFK
signal_type
03

Deploy Automations that watch and act.

A trigger — a schedule, or reactive to connector events — plus a plain-language prompt. Once defined it runs unprompted: scans memory, matches the trigger, and surfaces the work with the evidence attached.

Automations ↗
automation
triggers⏱ ScheduleDaily · 8:00 AM⚡ On eventLovable closed $15M Series A
prompt

Each morning, scan @company for and . When a signal matches the thesis, draft an IC memo and ping the @investor who owns it.

@ connector@ entityReferences resolve to the sources and types you defined above.
04

Use it from any agent.

ChatGPT, Claude, and Codex connect over MCP; Slack, Teams, and WhatsApp over chat; your own apps over the API. Same context, same permissions, whoever's asking. Consequential work arrives as a proposal you review, edit, and approve.

Platforms ↗
#deal-flowLovable
lobujust now

New round · Lovable

  • $15M Series A led by Accel
  • Already in portfolio
  • Warm intro via Adam K. (ex-Replit)

Drafted an IC memo for Adam with the warm path. Review before I post it:

Draft · IC memo
Lovable closed a $15M Series A led by Accel — already in portfolio. Track v0, Bolt, Replit Agent as peer signals. Warm path: Adam K. (ex-Replit). Recommend IC review this week.
03/TWO WAYS IN ]

Bring any agent. Add shared context.

Use the agents your team already trusts. Managed agents are optional.

Start here

Bring your agents

Connect ChatGPT, Claude, Codex, OpenClaw, or any MCP client to the same company context, scoped to each user.

Connect an agent →
Optional runtime

Build a managed agent

Run repeatable work from live events or schedules under the same approval policy.

Build a managed agent →
04/UNDER THE HOOD ]

One control plane. Any agent.

Share context, permissions, approvals, and connected actions with any agent. Add Lobu's runtime only when you need it.

Halftone figure: multi-socket plug bank
Halftone figure: stacked storage drives
Halftone figure: vacuum tube in a ceramic socket
Halftone figure: sealed glovebox isolation chamber
Halftone figure: balance scale with calibration weights
Halftone figure: freight container on a crane hook
Halftone figure: oscilloscope with waveform
01·CONNECTORS

Plug into everything.

22+ connectors (Slack, GitHub, Gmail, Linear, Postgres and more) stream events in, and actions flow back out under scoped identities. Anything with an API fits the connector SDK.

For engineers

The same agent, in code.

The use case above is one project: connections, entity types, automations, and agent configuration. Inspect each piece or let your coding agent generate it.

lobu.config.tslobu.config.ts
import {
  connectorFromFile,
  defineAgent,
  defineAutomation,
  defineConfig,
  defineEntityType,
  defineRelationshipType,
  defineSkill,
  every,
  secret,
  field,
  Type,
} from "@lobu/cli/config";
import type ExaNewsFeedConnector from "./exa-news-feed.connector.ts";

const founderActivityTrackerSkill = defineSkill({
  name: "founder-activity-tracker",
  content:
    'Track high-signal public activity from people connected to organizations through `founded_by`. Return notable findings in `signals` as observation event drafts. Put the readable finding in `content`; put `{ kind: "founder_activity", person, activity_type, importance: "high" }` in `metadata`, and use `parent_event_id` when a source post supports the finding. Return an empty array when there is no notable activity.\n',
});

const opportunityMatcherSkill = defineSkill({
  name: "opportunity-matcher",
  content:
    "Monitor public activity from founders and organizations, identify specific collaboration or introduction opportunities, explain the overlap, and recommend a concrete next action. Only return high-signal matches grounded in current source events.\n",
});

const marketIntelligence = defineAgent({
  id: "vc-tracking",
  skills: [founderActivityTrackerSkill, opportunityMatcherSkill],
  name: "vc-tracking",
  description:
    "Track organizations, people, products, funding events, and market signals",
  dir: ".",
  providers: [
    {
      id: "anthropic",
      model: "claude/sonnet-4-5",
      key: secret("ANTHROPIC_API_KEY"),
    },
  ],
  network: {
    allowed: [
      "github.com",
      ".github.com",
      ".githubusercontent.com",
      "registry.npmjs.org",
      ".npmjs.org",
    ],
  },
});

// entity types and relationships defined here…

const founderActivityTracker = defineAutomation({
  agent: marketIntelligence,
  slug: "founder-activity-tracker",
  name: "Founder Activity Tracker",
  triggers: [every("0 10 * * *")],
  tags: ["market", "people", "daily"],
  minCooldownSeconds: 600,
  outputs: { signals: { event: "observation" } },
  skills: ["founder-activity-tracker"],
  sources: {
    founder_posts:
      "SELECT id, title, payload_text, author_name, source_url, occurred_at, score, origin_type, connector_key FROM events WHERE connector_key = 'x' AND origin_type IN ('tweet', 'reply') ORDER BY occurred_at DESC LIMIT 300\n",
  },
  reactionsGuidance:
    "Flag meaningful hiring, fundraising, product, strategy, or market-positioning changes for review.\n",
});

export default defineConfig({
  connectors: [
    connectorFromFile<typeof ExaNewsFeedConnector>(
      "./exa-news-feed.connector.ts"
    ),
  ],
  org: "market",
  orgName: "Market",
  orgDescription:
    "Public market graph for organizations, people, products, financing events, and sourced signals",
  agents: [marketIntelligence],
  entities: [
    organization,
    person,
    product,
    fundingRound,
    jobPosting,
    industry,
    country,
    region,
    city,
    technology,
    university,
  ],
  relationships: [
    foundedBy,
    productOf,
    roundOf,
    participatedIn,
    partnerAt,
    worksAt,
    previouslyAt,
    educatedAt,
    inIndustry,
    focusesOn,
    headquarteredIn,
    operatesIn,
    usesTechnology,
    investedIn,
    acquiredBy,
    subsidiaryOf,
    brandOf,
    integratesWith,
    competitorOf,
  ],
  automations: [founderActivityTracker, opportunityMatcher],
});

Connect your first agent to company context.

Connect any agent to shared context and keep consequential actions under approval.

Status:// connecting agent…