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

# Love from the community

> Real posts from the devs, founders, and engineers<br/>shipping on VideoDB.

export const communityTestimonials = [{
  name: "Rimsha Bhardwaj",
  username: "@heyrimsha",
  avatar: "/assets/testimonials/profiles/rimsha.png",
  testimony: "BREAKING: Someone just built the open source Loom killer that turns your screen recordings into AI agents. It's called Bloom and it does something Loom never could. Your recordings don't just sit as files. They become queryable, searchable, agent-ready data the moment you stop recording. Here's what actually happens: You hit record. Bloom captures your screen, mic, and system audio locally. While you're still recording, it uploads chunks to the cloud in real time. The second you stop, it auto-generates a full transcript, creates visual embeddings, and indexes every spoken word. Then the wild part kicks in. You can query your recordings through APIs. You can hook Claude Code directly into your video library and ask it questions. Your screen recording just became a knowledge base. → Local-first, your files never get locked in → Cmd+Shift+R starts and stops from anywhere on your system → One-click shareable link for any recording → Chat directly with your video content through VideoDB Chat → Works with Claude Code and other agent frameworks out of the box Recordings are no longer files. They're inputs for AI. MIT License. 100% Opensource.",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg",
  platformUrl: "https://x.com/heyrimsha/status/2041534907500105764?s=20"
}, {
  name: "Erick",
  username: "@ErickSky",
  avatar: "/assets/testimonials/profiles/eric.png",
  testimony: "¿Y si tu próxima reunión tuviera un AI coach susurrándote al oído en tiempo real? Imagina esto: Estás en una reu importante… Grabando TODO localmente (nada se va a la nube) Transcripción en tiempo real separando tu voz de la del cliente Un agente IA te avisa mientras hablas: • “Estás hablando de más” • “Haz esta pregunta ahora” • “El cliente está dudando aquí” Y cuando cuelgas… → Resumen perfecto → Action items automáticos → Export directo a Notion / CRM Se llama call.md y es open-source + 100% local-first. Esto no es otro notetaker. Es un agente vivo dentro de tu llamada. REPOOO",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg",
  platformUrl: "https://x.com/ErickSky/status/2039856596465967537?s=20"
}, {
  name: "AI駆動塾",
  username: "@L_go_mrk",
  avatar: "/assets/testimonials/profiles/ai.png",
  testimony: "これがOSSで出る世界線、マジで何？？？ 会議中にAIが自律的に動くリアルタイム会議AI「Call.md」 ・デュアルチャンネル書き起こし — 自分の声と相手の声を分離して記録 ・リアルタイムコーチング — 話しすぎ、質問少なすぎを検出してナッジ ・MCP自動トリガー — 会話中に「情報必要」と判断したらツールを勝手に起動 ・会話メトリクス — 発言比率、WPM、質問数、独白検出をリアルタイム表示 ・3種のAI要約 — 概要・トピック別キーポイント・アクションアイテムをMarkdown出力 ・Webhook連携 — n8n / Zapier / CRMへ自動送信 全データはローカルのSQLiteに保存。MITライセンス。現在macOS専用。",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg",
  platformUrl: "https://x.com/L_go_mrk/status/2038930806065004886?s=20"
}, {
  name: "Vish",
  username: "@rv_RAJvishnu",
  avatar: "/assets/testimonials/profiles/vish.png",
  testimony: "Screen awareness is huge because most real debugging work happens outside the code file itself. logs, browser state, and tiny UI regressions are where hours disappear... once an agent can watch that context directly, prompting gets simpler and the loop gets much faster. if this ships with solid privacy controls, it could become default workflow for people who build all day.",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg",
  platformUrl: "https://x.com/rv_RAJvishnu/status/2026646727734804947?s=20"
}, {
  name: "Sushant Rai",
  designation: "Building AI sous chef",
  avatar: "/assets/testimonials/profiles/sushant.png",
  testimony: "Recently attended \"Give your AI agents eyes and ears\" workshop by VideoDB. What stood out most was their approach: rather than forcing the AI to scrub through footage linearly, they rely on real-time indexing and semantic search.",
  platform: "LinkedIn",
  platformIcon: "/assets/social-platforms/linkedin.svg",
  platformUrl: "https://www.linkedin.com/posts/connect-sushant-rai_videodb-artificialintelligence-generativeai-ugcPost-7449152206055845888-ECD8?utm_source=share&utm_medium=member_desktop&rcm=ACoAAB-K4nYBSnZD35GwD4Q7Q7u9MKOhbbZk8BE"
}, {
  name: "Sulaiman",
  avatar: "/assets/testimonials/profiles/suli.png",
  testimony: "Hey everyone, I’m Sulaiman and I work with Yonatan at Zoo. I spent the last few days playing around with VideoDB and I want to give you all props for providing a great product evaluation experience! Usually, I can’t just focus on a product’s features. Instead I have to worry about the nuts and bolts and intricacies of setting up and using the service. Director provided a much smoother experience; you guys have an AI salesperson at your disposal. It felt like magic being able to use the project in such a significant way with a low amount of effort. I’m looking forward to using it more!",
  platform: "Discord",
  platformIcon: "/assets/social-platforms/discord.svg"
}, {
  name: "Vikas Yadav",
  designation: "Founder at Kubenine",
  avatar: "/assets/testimonials/profiles/vikas.png",
  testimony: "I am currently trying to build a market fit for video-based intelligence product for creators. I am trying to partner with some creators in India. I am sure videodb would help me get a lot of things that I anyway wanted - with videodb I won't need to build a lot of this in house and can simply leverage your API.",
  platform: "LinkedIn",
  platformIcon: "/assets/social-platforms/linkedin.svg"
}, {
  name: "Nathan Benaich",
  designation: "Founder & General Partner at Air Street Capital.",
  avatar: "/assets/testimonials/profiles/nathan.png",
  testimony: "Hey! I stumbled on VideoDB and thought it could look useful for several of my video AI investments like Intenseye (health and safety) and V7. Would love to learn more! I run airstreet.com/portfolio and write the stateofai.com report.",
  platform: "LinkedIn",
  platformIcon: "/assets/social-platforms/linkedin.svg"
}, {
  name: "BenniePie",
  avatar: "/assets/testimonials/profiles/bennie.png",
  testimony: "Helloo, I’m Bennie form UK. Have been working with a lot of long form video content, transcription to text, summarisation and splitting into topics, then ingesting, vector embeddings and store in a knn indexex on an OpenSource cluster allowing semantic search of the text - but only as text. Very cool that you’re taking this to another level - I came across your work when trying to work out how to automate video editing to produce short form content without losing accuracy, making a mess of it and not introduce bias. Glad to have found you. Very enthusiastic/obsessive about this AI stuff..., and terrible at proof reading!",
  platform: "Discord",
  platformIcon: "/assets/social-platforms/discord.svg"
}, {
  name: "Eric Stevens",
  username: "@Eric_M_Stevens",
  avatar: "/assets/testimonials/profiles/eric-steven.png",
  testimony: "This is the gap. running AI agents all day and the biggest friction is always describing what i'm looking at instead of just pointing at it. screen awareness changes everything",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg",
  platformUrl: "https://x.com/Eric_M_Stevens/status/2026309045427327414?s=20"
}, {
  name: "Twlv",
  username: "@twlvone",
  avatar: "/assets/testimonials/profiles/twlv.png",
  testimony: "The screen context is what changes everything. half the time claude code fails its because it cant see what you see. adding that visual loop closes the gap between 'impressive demo' and 'actually useful daily tool'",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg",
  platformUrl: "https://x.com/twlvone/status/2026670804767809584?s=20"
}, {
  name: "BombasticSideEye",
  username: "@BombasticEye77",
  avatar: "/assets/testimonials/profiles/bombastic.png",
  testimony: "We just hit the agents watching content for you era. Summarising, tagging, answering questions…Coral’s videodb director is basically giving agents eyes and contextual memory. Wild upgrade",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg",
  platformUrl: "https://x.com/BombasticEye77/status/1946516075677643088?s=20"
}, {
  name: "Nour",
  username: "@Defi_Nour",
  avatar: "/assets/testimonials/profiles/nour.png",
  testimony: "VideoDB crunched a 10-min clip in 14 s, then zipped tags straight into Postgres. That throughput beats most closed-source stacks I’ve benchmarked this quarter",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg"
}, {
  name: "Aman Hanspal",
  username: "@han__ama",
  avatar: "/assets/testimonials/profiles/aman.png",
  testimony: "One problem I kept thinking about while building a side project: “how do you actually make events in videos searchable?” Turns out @videodb_io is working on exactly this. Attended their session in Mumbai recently — interesting to see how they’re approaching video querying at a systems",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg",
  platformUrl: "https://x.com/han__ama/status/2043892824379404350?s=20"
}, {
  name: "Strakyo",
  username: "@Strakyo",
  avatar: "/assets/testimonials/profiles/strakyo.png",
  testimony: "This is the missing layer for agentic coding: shared context from screen + voice + code state. Super useful.",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg",
  platformUrl: "https://x.com/Strakyo/status/2026746062753382582?s=20"
}, {
  name: "Bilal Bakr",
  username: "@bil0090",
  avatar: "/assets/testimonials/profiles/bilal.png",
  testimony: "This is what every single AI tool should have Would love to see this in @cursor_ai & Codex too, as these are the main tools I use.",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg",
  platformUrl: "https://x.com/bil0090/status/2026704621738004520?s=20"
}, {
  name: "Yohei",
  username: "@yoheinakajima",
  avatar: "/assets/testimonials/profiles/yohei.png",
  testimony: "Woah nice! Sounds like an MUCH easier way to build on top of video without needing to transcribe, chunk, embed...",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg",
  platformUrl: "https://x.com/yoheinakajima/status/1742988738354085956?s=20"
}, {
  name: "Paru Saha",
  username: "@paru_saha",
  avatar: "/assets/testimonials/profiles/paru.png",
  testimony: "Pair programming for ai? interesting solution to the visual and auditory limitations of claudecode",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg",
  platformUrl: "https://x.com/paru_saha/status/2026680022426333669?s=20"
}, {
  name: "Karen",
  username: "@Web3Karen",
  avatar: "/assets/testimonials/profiles/karen.png",
  testimony: "Hold up... VideoDB Director Agent can TAG SCENES?? So it actually understands context not just transcribing? Netflix gonna need this tech asap",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg",
  platformUrl: "https://x.com/Web3Karen/status/1946513836665704884?s=20"
}, {
  name: "Geovanna Gomez",
  username: "@Geovannafit",
  avatar: "/assets/testimonials/profiles/geovanna.png",
  testimony: "the videoDB director agent is wild, \"binge-watch for you\" might be my favorite upgrade so far",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg",
  platformUrl: "https://x.com/Geovannafit/status/1946585059173003612?s=20"
}, {
  name: "Oliver Cameron",
  designation: "Co-Founder & CEO of Odyssey ML",
  avatar: "/assets/testimonials/profiles/oliver.png",
  testimony: "For a long time, I have been thinking what you are building needs to exist! glad you are building it!",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg"
}, {
  name: "blake41",
  avatar: "/assets/testimonials/profiles/blake.png",
  testimony: "Discovered this today. Really amazing what you’ve built. I read all the docs. I’m trying to understand on a conceptual level how the backend architecture is designed. Are there any docs that describe at a high level (without giving away any trade secrets) of how you are doing what you’re doing. Seems like magic",
  platform: "Discord",
  platformIcon: "/assets/social-platforms/discord.svg"
}, {
  name: "tooz",
  username: "@adarshsolanki",
  avatar: "/assets/testimonials/profiles/tooz.png",
  testimony: "This is a great idea, coming from someone who has been working in video streaming for the past ten years 👍🏽",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg",
  platformUrl: "https://x.com/adarshsolanki/status/1743251896742429127?s=20"
}, {
  name: "Arthur Anderson",
  username: "@Arthur_Ande",
  avatar: "/assets/testimonials/profiles/arthur.png",
  testimony: "Should've had the VideoDB Director Agent in my university days to grab quick summaries to learn easily, AI Agents are getting a lot smarter through @Coral_Protocol",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg",
  platformUrl: "https://x.com/Arthur_Ande/status/1946413070370410575"
}, {
  name: "Tom Dörr",
  username: "@tom_doerr",
  avatar: "/assets/testimonials/profiles/tom.png",
  testimony: "Real-time AI meeting agent loops https://github.com/video-db/call.md",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg",
  platformUrl: "https://x.com/tom_doerr/status/2038648089955729715?s=20"
}, {
  name: "Johnny Boufarhat",
  designation: "Founder of Hopin",
  avatar: "/assets/testimonials/profiles/johnny.png",
  testimony: "VideoDB is cool!",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg"
}, {
  name: "Tom Mason",
  designation: "Prev CTO @ stability.ai",
  avatar: "/assets/testimonials/profiles/mason.png",
  testimony: "VideoDB team... nice work! Would love to chat!",
  platform: "X",
  platformIcon: "/assets/social-platforms/x.svg"
}];

export const legacyTestimonialScreenshots = ["/assets/testimonials/video-industry-love.avif", "/assets/testimonials/arthur.avif", "/assets/testimonials/karen.avif", "/assets/testimonials/bombastic_side_eye.avif", "/assets/testimonials/langerous.avif", "/assets/testimonials/nour.avif", "/assets/testimonials/geovanna.avif", "/assets/testimonials/collage.avif", "/assets/testimonials/khaja.avif", "/assets/testimonials/hiya.avif", "/assets/testimonials/hobby-dev.avif", "/assets/testimonials/another-collage.avif", "/assets/testimonials/nathan.avif", "/assets/testimonials/suli.avif", "/assets/testimonials/bennie.avif", "/assets/testimonials/blake.avif", "/assets/testimonials/dis.avif", "/assets/testimonials/vikas.avif", "/assets/testimonials/amagi.avif", "/assets/testimonials/alfred.avif"];

export function TestimonialCard({testimonial}) {
  const byline = testimonial.designation || testimonial.username;
  const platformMark = testimonial.platformIcon || testimonial.platform || "X";
  const platformColor = testimonial.platformColor || "var(--community-testimonial-platform-color)";
  const isLinked = Boolean(testimonial.platformUrl);
  const CardElement = testimonial.platformUrl ? "a" : "div";
  const cardProps = testimonial.platformUrl ? {
    href: testimonial.platformUrl,
    target: "_blank",
    rel: "noreferrer",
    "aria-label": `View ${testimonial.name}'s testimonial on ${testimonial.platform}`
  } : {
    role: "article",
    "aria-label": `${testimonial.name}'s testimonial on ${testimonial.platform}`
  };
  const platformIconUrl = `url(${platformMark})`;
  const platformContent = platformMark.startsWith("/") ? testimonial.platform === "X" ? <span role="img" aria-label={`${testimonial.platform} logo`} style={{
    display: "block",
    width: "22px",
    height: "22px",
    backgroundColor: "var(--community-testimonial-platform-color)",
    WebkitMaskImage: platformIconUrl,
    maskImage: platformIconUrl,
    WebkitMaskRepeat: "no-repeat",
    maskRepeat: "no-repeat",
    WebkitMaskPosition: "center",
    maskPosition: "center",
    WebkitMaskSize: "contain",
    maskSize: "contain"
  }} /> : <span role="img" aria-label={`${testimonial.platform} logo`} style={{
    display: "block",
    width: "22px",
    height: "22px",
    backgroundImage: platformIconUrl,
    backgroundRepeat: "no-repeat",
    backgroundPosition: "center",
    backgroundSize: "contain"
  }} /> : platformMark;
  const platformLabel = <span aria-label={testimonial.platform} style={{
    display: "inline-flex",
    alignItems: "center",
    justifyContent: "center",
    width: "22px",
    height: "22px",
    flex: "0 0 auto",
    margin: 0,
    padding: 0,
    color: platformColor,
    fontSize: "22px",
    lineHeight: 1,
    fontWeight: 700
  }}>{platformContent}</span>;
  const cardStyle = {
    display: "flex",
    width: "100%",
    maxWidth: "351px",
    margin: 0,
    padding: "20px",
    flexDirection: "column",
    alignItems: "flex-start",
    gap: "16px",
    borderRadius: "12px",
    border: "1px solid var(--community-testimonial-card-border)",
    background: "var(--community-testimonial-card-bg)",
    boxSizing: "border-box",
    breakInside: "avoid",
    pageBreakInside: "avoid",
    cursor: isLinked ? "pointer" : "default",
    textDecoration: "none",
    color: "inherit",
    transition: isLinked ? "transform 160ms ease, border-color 160ms ease, background 160ms ease, box-shadow 160ms ease" : "none"
  };
  return <CardElement {...cardProps} style={cardStyle} onMouseEnter={event => {
    if (!isLinked) return;
    event.currentTarget.style.transform = "translateY(-2px)";
    event.currentTarget.style.borderColor = "var(--community-testimonial-card-hover-border)";
    event.currentTarget.style.background = "var(--community-testimonial-card-hover-bg)";
    event.currentTarget.style.boxShadow = "var(--community-testimonial-card-hover-shadow)";
  }} onMouseLeave={event => {
    if (!isLinked) return;
    event.currentTarget.style.transform = "translateY(0)";
    event.currentTarget.style.borderColor = "var(--community-testimonial-card-border)";
    event.currentTarget.style.background = "var(--community-testimonial-card-bg)";
    event.currentTarget.style.boxShadow = "none";
  }}>
      <div style={{
    display: "flex",
    alignItems: "center",
    justifyContent: "space-between",
    gap: "16px",
    width: "100%",
    margin: 0,
    padding: 0
  }}>
        <div style={{
    display: "flex",
    alignItems: "center",
    gap: "12px",
    minWidth: 0,
    margin: 0,
    padding: 0
  }}>
          <img src={testimonial.avatar} alt={`${testimonial.name} profile picture`} style={{
    display: "block",
    width: "40px",
    height: "40px",
    margin: 0,
    padding: 0,
    borderRadius: "6px",
    objectFit: "cover",
    flex: "0 0 auto"
  }} />
          <div style={{
    display: "flex",
    flexDirection: "column",
    gap: "2px",
    minWidth: 0,
    margin: 0,
    padding: 0
  }}>
            <strong style={{
    fontSize: "15px",
    lineHeight: "20px",
    fontWeight: 500,
    color: "var(--community-testimonial-name-color)"
  }}>{testimonial.name}</strong>
            {byline && <span style={{
    display: "-webkit-box",
    fontSize: "14px",
    lineHeight: "18px",
    fontWeight: 400,
    color: "var(--community-testimonial-byline-color)",
    overflow: "hidden",
    textOverflow: "ellipsis",
    WebkitLineClamp: 2,
    WebkitBoxOrient: "vertical"
  }}>{byline}</span>}
          </div>
        </div>
        {testimonial.platform && platformLabel}
      </div>
      <p style={{
    margin: 0,
    padding: 0,
    fontSize: "15px",
    lineHeight: "24px",
    fontWeight: 400,
    color: "var(--community-testimonial-body-color)"
  }}>{testimonial.testimony}</p>
    </CardElement>;
}

export function TestimonialGrid({testimonials}) {
  const columns = testimonials.reduce((result, testimonial) => {
    const shortestColumnIndex = result.heights[0] <= result.heights[1] ? 0 : 1;
    const estimatedHeight = testimonial.testimony.length + (testimonial.designation || testimonial.username || "").length * 2;
    result.columns[shortestColumnIndex].push(testimonial);
    result.heights[shortestColumnIndex] += estimatedHeight;
    return result;
  }, {
    columns: [[], []],
    heights: [0, 0]
  }).columns;
  return <div style={{
    display: "flex",
    alignItems: "flex-start",
    gap: "16px",
    width: "100%",
    maxWidth: "718px",
    marginTop: "30px",
    flexWrap: "wrap"
  }}>
      {columns.map((column, columnIndex) => <div key={`testimonial-column-${columnIndex}`} style={{
    display: "flex",
    flex: "1 1 300px",
    maxWidth: "351px",
    flexDirection: "column",
    gap: "16px"
  }}>
          {column.map(testimonial => <TestimonialCard key={`${testimonial.name}-${testimonial.platform}`} testimonial={testimonial} />)}
        </div>)}
    </div>;
}

export function LegacyTestimonialGallery({screenshots}) {
  return <div style={{
    display: "flex",
    flexDirection: "column",
    gap: "20px",
    marginTop: "32px"
  }}>
      {screenshots.map(src => <img key={src} src={src} style={{
    width: "100%",
    height: "auto",
    borderRadius: "8px"
  }} alt="Community feedback" />)}
    </div>;
}

<section style={{marginTop: "28px", marginBottom: "8px"}}>
  <a href="https://discord.gg/py9P639jGz" style={{display: "inline-flex", alignItems: "center", gap: "8px", padding: "8px 14px", borderRadius: "999px", background: "#1F1F1F", color: "#FFFFFF", fontSize: "14px", lineHeight: "20px", fontWeight: 500, textDecoration: "none", border: "1px solid rgba(255, 255, 255, 0.04)", boxSizing: "border-box", transition: "background 160ms ease, border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease"}} onMouseEnter={(event) => { event.currentTarget.style.background = "#2B2B2B"; event.currentTarget.style.borderColor = "rgba(255, 255, 255, 0.12)"; event.currentTarget.style.transform = "translateY(-1px)"; event.currentTarget.style.boxShadow = "0 8px 22px rgba(0, 0, 0, 0.22)" }} onMouseLeave={(event) => { event.currentTarget.style.background = "#1F1F1F"; event.currentTarget.style.borderColor = "rgba(255, 255, 255, 0.04)"; event.currentTarget.style.transform = "translateY(0)"; event.currentTarget.style.boxShadow = "none" }}>Join Our Discord <svg aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" style={{display: "block", flex: "0 0 auto"}}><path d="M5 12h14" /><path d="m12 5 7 7-7 7" /></svg></a>
</section>

<div className="community-love-testimonials">
  {communityTestimonials.length > 0 ? (
      <TestimonialGrid testimonials={communityTestimonials} />
    ) : (
      <LegacyTestimonialGallery screenshots={legacyTestimonialScreenshots} />
    )}
</div>
