Back to templates

Template details

eve Data Analyst Template

Slack-based data analyst built on eve that answers business questions from a Postgres database.

About this template

The eve Data Analyst Template is a Slack-based business analyst agent that answers natural-language questions about your Postgres data and replies with numbers, charts, and tables.

What is the eve Data Analyst Template?

The eve Data Analyst Template is a Slack integration that lets users ask plain-English questions like "What was our MRR last month?" and get answers pulled from a Postgres database. It runs on the eve agent framework, connects to Slack through Vercel Connect, and is deployable on Vercel. It is maintained in the Vercel Labs GitHub organization under the MIT license.

Key Features

  • Slack-based queries — @mention the agent in a channel and ask a question; it responds in the thread with the number, the exact period, and the time zone.
  • Charts and tables — trends, rankings, and breakdowns appear as Slack charts and tables when visual output helps.
  • Metric definitions — a skill file at agent/skills/metric-definitions.md holds your team's rules for terms like MRR and churn, so answers follow your definitions.
  • SQL transparency — each answer includes a collapsed "SQL query" section showing the queries run, tables read, and timing.
  • Read-only database access — queries run in a read-only transaction wrapped as a single SELECT with a time limit and rollback, and expensive queries wait for requester approval.
  • Per-user role mapping — the ANALYST_ROLE_MAP environment variable maps Slack user and channel IDs to Postgres roles, so database permissions control what each person sees.
  • Persistent memory — the agent remembers preferences such as number formatting or a channel's default region, stored in a private Vercel Blob store.
  • Demo data — setting ANALYST_SEED_DEMO_DATA to true loads 18 months of subscriptions, billing, and website traffic for a fictional SaaS company.

Who is it for?

  • Business and finance teams who want to ask revenue or churn questions in Slack without writing SQL.
  • Data teams who need to expose Postgres data to colleagues with role-based, read-only access.
  • SaaS operators who want to load the bundled demo data and try the agent before connecting their own database.

What can you do with the eve Data Analyst Template?

  • Finance leads: ask for last month's MRR or churn in a Slack channel and get the figure with the period and time zone.
  • Growth teams: request trends and breakdowns and receive them as Slack charts and tables.
  • Database administrators: assign Slack users and channels their own Postgres roles to restrict what data each can query.
  • Developers: run pnpm eval to check the agent's answers against the demo data.

How does the eve Data Analyst Template work?

Vercel's setup flow creates a repository and project, installs a Slack app via Vercel Connect, adds a private Vercel Blob store, and prompts for DATABASE_URL and ANALYST_SEED_DEMO_DATA. Each deploy prepares the database, loads demo data when enabled, and creates the read-only user the agent queries with. To use your own tables, set ANALYST_SCHEMAS to your schema names and redeploy.

FAQ

Is the eve Data Analyst Template free?

Yes. The template is released under the MIT license in the Vercel Labs GitHub repository, so you can clone, modify, and self-host it. You still pay for the Postgres database, Vercel project, and Slack app you connect to it.

What Postgres version does the agent need?

The template requires Postgres version 14 or later, and the DATABASE_URL must use a database user that can create schemas and roles, such as the database owner. The agent then creates and queries through its own read-only user.

Can the agent modify or delete my data?

No. The agent connects as a dedicated user, runs each query in a read-only transaction with a time limit, and wraps each query as a single SELECT statement that is rolled back afterwards.

How do I limit which data a person can see?

Set the ANALYST_ROLE_MAP environment variable to a JSON object mapping Slack user or channel IDs to Postgres role names. An empty role value turns off access for that ID, and unlisted users default to analyst_readonly.

Screenshot of eve Data Analyst Template