npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

setflow-ai

v1.0.0

Published

AI-powered appointment setter with Claude AI, SQLite, and Express

Readme

SetFlow.ai — Your AI Appointment Setter That Never Sleeps

Stop chasing leads. Let AI book your meetings on autopilot.

SetFlow.ai is a fully functional, open-source AI-powered appointment setter that captures leads, handles objections, answers pricing questions, and books discovery calls — all without human intervention. Built with Node.js, Express, SQLite, and the Anthropic Claude API.

This is not a demo. This is production-ready.

Deploy to Render


What It Does

  • AI Chat Agent — A smart conversational assistant that qualifies leads, answers questions about your services, handles objections, and guides visitors to book a call
  • Lead Capture & Tracking — Automatically captures visitor info, tracks status (unqualified → qualified → booked), and stores full chat history
  • Auto-Booking Detection — AI recognizes when a user agrees to book and triggers the booking flow automatically
  • Webhook Integration — Connects with Cal.com / Calendly to confirm bookings and match them to leads
  • Dashboard — Real-time stats, recent bookings, lead management with search & filters
  • Configurable AI Persona — Edit the system prompt, company name, and calendar link from the UI

Screenshots

┌─────────────────────────────────────────────────────┐
│  🟢 SetFlow.ai                                      │
│  ├── 📊 Dashboard (Live Chat + Stats + Bookings)     │
│  ├── 👥 Leads (Table + Filters + Chat History)       │
│  ├── 📅 Calendar / Webhooks (Cal.com Integration)    │
│  └── 🤖 AI Agent Config (System Prompt Editor)       │
└─────────────────────────────────────────────────────┘

Quick Start

# 1. Clone the repo
git clone https://github.com/voidreformer/setflow-ai.git
cd setflow-ai

# 2. Install dependencies
npm install

# 3. Set up your environment
cp .env.example .env
# Edit .env with your Anthropic API key

# 4. Start the server
npm start

# 5. Open in browser
# http://localhost:3000

Environment Variables

| Variable | Description | Default | |----------|-------------|---------| | ANTHROPIC_API_KEY | Your Anthropic API key | — | | ANTHROPIC_BASE_URL | Custom API base URL (optional) | Anthropic default | | CLAUDE_MODEL | Claude model to use | claude-sonnet-4-20250514 | | PORT | Server port | 3000 |


Tech Stack

  • Backend: Node.js + Express
  • Database: SQLite (via sql.js — zero config, no external DB needed)
  • AI: Anthropic Claude API
  • Frontend: Vanilla HTML/CSS/JS — no framework bloat
  • UI: Glassmorphism design, HSL variables, responsive layout, smooth animations

Architecture

graph TD
    Client[Web Widget / Frontend] -->|1. Chat Message| API[Backend: Express]
    API -->|2. Fetch Lead & History| DB[(SQLite Database)]
    API -->|3. System Prompt + Context| LLM[Claude API]
    LLM -->|4. Reply + Action Tags| API
    API -->|5. If ACTION_BOOK_MEETING| Cal[Cal.com / Calendly Webhook]
    API -->|6. Response + Stats| Client

API Endpoints

| Method | Endpoint | Description | |--------|----------|-------------| | POST | /api/chat | Send a message, get AI response | | POST | /api/leads | Create a new lead | | GET | /api/leads | List all leads (optional ?status= filter) | | GET | /api/leads/:id | Get a specific lead | | GET | /api/leads/:id/history | Get chat history for a lead | | DELETE | /api/leads/:id | Delete a lead | | GET | /api/stats | Dashboard statistics | | GET | /api/bookings | Recent confirmed bookings | | GET | /api/config | Get AI agent configuration | | PUT | /api/config | Update system prompt & calendar link | | POST | /api/webhooks/calendar | Receive Cal.com booking webhooks | | GET | /api/webhooks/events | List recent webhook events |


How the AI Books Meetings

  1. Visitor enters name & email → lead is created as unqualified
  2. AI chats naturally — answers questions, handles objections
  3. When visitor shows interest (mentions "schedule", "book", "meeting"), lead becomes qualified
  4. When AI determines user is ready, it includes [ACTION_BOOK_MEETING] in its response → lead becomes booked
  5. Cal.com webhook confirms the actual booking and matches it back to the lead

Free & Open Source

This is a free sample — use it, fork it, deploy it, make money with it. If demand is strong, premium features and hosted plans are coming.


Special Thanks

Massive shoutout to Vaibhav Sisinty for the inspiration, guidance, and pushing the boundaries of what AI-powered tools can do. This project wouldn't exist without his vision.


License

MIT — do whatever you want with it.


Built with caffeine, Claude, and the belief that no lead should go unfollowed.