YouTube Video
Project Description
Data Caddy is the AI admin panel for vibe-coded apps. You paste a Postgres URL, get a dashboard, ask questions in plain English, and edit data without writing SQL.
The user we’re after: someone who shipped an app with Lovable, Bolt, or v0, ended up with a Supabase or Neon database, and has no idea how to look at their own data. Supabase Studio assumes SQL. Metabase assumes you’ll build the dashboard yourself. ChatGPT with a DB connection gives you markdown tables, not interactive UI. Nobody serves that user.
Working code today: connection-string onboarding, schema introspection, inferred-domain dashboard generation, plain-English chat over the data, and a preview-before-delete confirmation surface that renders the affected rows so you can deselect anything you don’t want gone. Demo runs against a seeded Postgres for an indie coffee shop (customers, subscriptions, orders, payments).
Stack:
- Next.js + React with CopilotKit’s host SDK
- AG-UI underneath for streaming agent events and tool calls (bundled with CopilotKit)
- A2UI as the default rendering target: KPI tiles, charts, tables, edit forms, delete confirmations
- Native React fallback via useCopilotAction({ render }) when A2UI can’t express a surface
- Postgres MCP server for schema introspection, queries, and mutations
- Claude as the agent; Gemini 2.5 Flash for the insight-batch generation pass
- An optional Claude Skill the user runs locally in their own coding tool. It extracts the meanings the schema doesn’t carry (status enum mappings, soft-delete conventions) and sends only the structured understanding back. We never see the user’s source code.
Generative UI matters here because no two databases look alike. Pre-building dashboards for every app shape is impossible, and asking a non-technical founder to configure a semantic layer defeats the entire point. The agent picks the shape per request, the frontend draws it.
Prior Work
None, we ideated and completed a very rough MVP during the duration of the hackathon (less than 3h)