Skip to content

priyanshusaini105/glaze

Repository files navigation

Glaze - The Agentic Spreadsheet

✨ Glaze

The Agentic Spreadsheet That Feels Alive

AI agents work directly inside your grid, enriching your data with transparent, streaming AI workflows. Stop waiting for spinners.

Features β€’ Architecture β€’ Quick Start β€’ Tech Stack β€’ Documentation

License Node Version Bun Version PNPM Version


🎯 What is Glaze?

Glaze is a high-performance data enrichment platform that transforms static spreadsheets into dynamic, AI-powered workflows. Unlike traditional data tools that make you wait for batch processing, Glaze's agentic architecture provides real-time, streaming enrichment directly in your grid.

The Problem

  • Traditional enrichment tools require manual data export/import cycles
  • Batch processing means waiting minutes or hours for results
  • No visibility into what's happening during processing
  • Fragmented data from multiple providers requires manual merging

The Glaze Solution

  • Live enrichment happens directly in your spreadsheet cells
  • Streaming results show progress in real-time
  • Multi-provider intelligence automatically sources the best data
  • AI-powered gap filling when providers can't find data

✨ Features

πŸ€– Agentic Enrichment

AI agents autonomously enrich your data using multiple providers with intelligent fallback strategies.

πŸ“Š Real-time Streaming

Watch your data come alive with streaming updates - no more waiting for batch jobs.

πŸ”„ Multi-Provider Intelligence

Automatically sources data from LinkedIn, websites, search APIs, and AI with confidence scoring.

πŸ’Ύ Smart Caching

Redis-backed 7-day cache eliminates redundant API calls and reduces costs.

🎯 High Confidence Data

Every field includes confidence scores and source attribution.

⚑ Blazing Fast

Built on Bun and Elysia for maximum performance with minimal overhead.


πŸ—οΈ Architecture

Glaze uses a waterfall architecture with distinct layers that enable scalable, maintainable data enrichment:

                              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                              β”‚           🌐 WEB APPLICATION            β”‚
                              β”‚         (Next.js + React)               β”‚
                              β”‚  β€’ Interactive spreadsheet UI           β”‚
                              β”‚  β€’ Real-time streaming updates          β”‚
                              β”‚  β€’ Data visualization dashboard         β”‚
                              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                 β”‚
                                          HTTP/REST API
                                                 β”‚
                              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                              β”‚           ⚑ API SERVER                 β”‚
                              β”‚            (Elysia + Bun)               β”‚
                              β”‚  β€’ REST endpoints & authentication     β”‚
                              β”‚  β€’ Request validation & routing         β”‚
                              β”‚  β€’ WebSocket connections                β”‚
                              β”‚  β€’ Swagger documentation                β”‚
                              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                 β”‚
                              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                              β”‚         πŸ“‹ TASK ORCHESTRATOR            β”‚
                              β”‚           (Trigger.dev v3)              β”‚
                              β”‚  β€’ Job queuing & scheduling             β”‚
                              β”‚  β€’ Retry logic & error handling         β”‚
                              β”‚  β€’ Concurrent task management           β”‚
                              β”‚  β€’ Background job processing            β”‚
                              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                 β”‚
                              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                              β”‚       πŸ”§ ENRICHMENT PIPELINE            β”‚
                              β”‚                                         β”‚
                              β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
                              β”‚   β”‚        PROVIDER LAYER           β”‚   β”‚
                              β”‚   β”‚                                 β”‚   β”‚
                              β”‚   β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚   β”‚
                              β”‚   β”‚  β”‚LinkedIn β”‚ β”‚ Website     β”‚   β”‚   β”‚
                              β”‚   β”‚  β”‚Provider β”‚ β”‚ Scraper     β”‚   β”‚   β”‚
                              β”‚   β”‚  β”‚  (95%)  β”‚ β”‚   (80%)     β”‚   β”‚   β”‚
                              β”‚   β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚   β”‚
                              β”‚   β”‚                                 β”‚   β”‚
                              β”‚   β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚   β”‚
                              β”‚   β”‚  β”‚ Search  β”‚ β”‚    LLM      β”‚   β”‚   β”‚
                              β”‚   β”‚  β”‚ APIs    β”‚ β”‚  Fallback   β”‚   β”‚   β”‚
                              β”‚   β”‚  β”‚  (70%)  β”‚ β”‚   (60%)     β”‚   β”‚   β”‚
                              β”‚   β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚   β”‚
                              β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
                              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                 β”‚
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚                                                         β”‚
         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚    πŸ—ƒοΈ PostgreSQL    β”‚                              β”‚      πŸš€ Redis Cache       β”‚
         β”‚   (Persistent)      β”‚                              β”‚      (Fast Access)        β”‚
         β”‚  β€’ Table storage    β”‚                              β”‚  β€’ 7-day TTL cache        β”‚
         β”‚  β€’ User data        β”‚                              β”‚  β€’ Response caching       β”‚
         β”‚  β€’ Job history      β”‚                              β”‚  β€’ Real-time pub/sub      β”‚
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Data Flow

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                          ENRICHMENT PIPELINE STAGES                            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚ 1.Cache │────▢│2.LinkedIn────▢│3.Website│────▢│4.Search │────▢│ 5.Gap   β”‚
    β”‚  Check  β”‚     β”‚ Providerβ”‚     β”‚ Scraper β”‚     β”‚ Service β”‚     β”‚Analysis β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                                                               β”‚
         β”‚ HIT                                                           β”‚
         β–Ό                                                               β–Ό
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚  Return β”‚                                                    β”‚ 6. LLM  β”‚
    β”‚  Cached β”‚                                                    β”‚Fallback β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                                         β”‚
                                                                         β–Ό
                   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                   β”‚  7. MERGE & VALIDATE  ──▢  8. STORE & CACHE  ──▢  DONE  β”‚
                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“ Project Structure

This is a pnpm workspaces monorepo organized as follows:

glaze/
β”œβ”€β”€ πŸ“± apps/
β”‚   β”œβ”€β”€ api/            # Elysia HTTP server + REST endpoints
β”‚   β”œβ”€β”€ web/            # Next.js frontend + spreadsheet UI
β”‚   β”œβ”€β”€ workflows/      # Trigger.dev task definitions
β”‚   └── worker/         # (Deprecated) Legacy BullMQ worker
β”‚
β”œβ”€β”€ πŸ“¦ packages/
β”‚   β”œβ”€β”€ types/          # Shared TypeScript definitions
β”‚   β”œβ”€β”€ ui/             # Shared React components
β”‚   └── trigger/        # Legacy trigger config
β”‚
β”œβ”€β”€ πŸ“œ scripts/         # Development & deployment helpers
β”œβ”€β”€ πŸ“š docs/            # Architecture & API documentation
└── βš™οΈ config           # Root configuration files

πŸš€ Quick Start

Prerequisites

Requirement Version
Node.js β‰₯ 18
Bun β‰₯ 1.0
PostgreSQL β‰₯ 14
Redis β‰₯ 6

Installation

# Clone the repository
git clone https://github.com/priyanshusaini105/glaze.git
cd glaze

# Install dependencies
pnpm install

# Copy environment template
cp .env.example .env
# Edit .env with your credentials

# Set up database
cd apps/api && pnpm run prisma:migrate:dev && cd ../..

# Start all services
./scripts/dev-all.sh

Service URLs

Service URL Description
Web UI http://localhost:3000 Spreadsheet interface
API http://localhost:3001 REST API server
API Docs http://localhost:3001/docs Swagger documentation

πŸ› οΈ Tech Stack

Backend

  • Runtime: Bun + Node.js
  • API: Elysia (TypeScript)
  • Database: PostgreSQL + Prisma
  • Cache: Redis + ioredis
  • Queue: Trigger.dev v3

Frontend

  • Framework: Next.js 14
  • Styling: Tailwind CSS
  • UI Libraries: Shadcn/ui, AG Grid
  • State: React Query

Enrichment

  • Orchestration: Trigger.dev
  • AI/LLM: Anthropic Claude
  • Scraping: Cheerio
  • Search: Serper API

πŸ“Š Pipeline Performance

Stage Duration Cost/Request Confidence
Cache Hit <10ms $0 95%
LinkedIn Provider 500ms-2s $0.01-0.05 95%
Website Scraper 2-5s $0 70-80%
Search Service 1-2s $0.02 70%
LLM Fallback 1-3s $0.02-0.05 60%
Total (uncached) 2-10s $0.05-0.15 90%

πŸ”§ Development Commands

# Start all services
pnpm dev

# Start individual services
pnpm dev:api          # API server only
pnpm dev:web          # Web frontend only
pnpm dev:workflows    # Trigger.dev workflows

# Database operations
cd apps/api
pnpm run prisma:studio        # Open database UI
pnpm run prisma:migrate:dev   # Run migrations

# Code quality
pnpm check-types      # TypeScript validation
pnpm lint             # ESLint checks
pnpm format           # Prettier formatting

πŸ” Environment Variables

Create a .env file in the project root:

# Database
DATABASE_URL=postgresql://user:password@localhost:5432/glaze

# Redis
REDIS_URL=redis://localhost:6379

# API Server
PORT=3001
API_URL=http://localhost:3001

# LLM Provider
LLM_PROVIDER=anthropic
LLM_API_KEY=your_api_key
LLM_MODEL=claude-3-sonnet-20240229

# Trigger.dev
TRIGGER_API_KEY=your_trigger_key

# Search API
SERPER_API_KEY=your_serper_key

πŸ“š Documentation

Document Description
Architecture Guide System design & data flow
Contributors Guide Development setup & guidelines
API Documentation REST endpoints reference
Workflows Guide Trigger.dev task definitions

πŸ› Troubleshooting

Database connection errors
# Verify PostgreSQL is running
psql -h localhost -U postgres

# Check DATABASE_URL in .env
# Run migrations
cd apps/api && pnpm run prisma:migrate:dev
Redis connection issues
# Test Redis connection
redis-cli PING

# Verify REDIS_URL in .env
Type errors
# Rebuild types
pnpm check-types

# Clear cache
rm -rf node_modules/.vite

🀝 Contributing

We welcome contributions! Please read our Contributors Guide for:

  • Development environment setup
  • Code organization guidelines
  • Adding new provider adapters
  • Testing procedures

πŸ“„ License

MIT License - see LICENSE for details.


Status: Active Development Β |Β  Last Updated: January 2026

Built with ❀️ by @priyanshusaini105

GitHub Β |Β  LinkedIn Β |Β  X

About

Glaze is a high-performance data enrichment platform that transforms static spreadsheets into dynamic, AI-powered workflows. Unlike traditional data tools that make you wait for batch processing, Glaze's agentic architecture provides real-time, streaming enrichment directly in your grid.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors