StackAudit is a deterministic AI spend optimization platform designed for startups. It analyzes SaaS usage, detects redundant subscriptions, and identifies unused seats to calculate estimated monthly waste and provide actionable consolidation recommendations.
Startups frequently suffer from subscription sprawl, particularly with emerging AI tools. Teams often pay for overlapping services (e.g., ChatGPT Plus and Claude Pro) or maintain excess seats for tools with low utilization, leading to significant capital waste.
- Overlap Detection: Identifies redundant tools with overlapping feature sets (e.g., Copilot vs. Cursor).
- Seat Optimization: Flags underutilized licenses and excess seat allocations compared to team size.
- Deterministic Engine: Evaluates usage patterns against a strict set of rule-based logic to guarantee consistent scoring.
- AI Summary: Generates personalized executive summaries of the audit using OpenAI, with built-in deterministic fallbacks.
- Report Persistence: Saves shareable audit reports via Supabase with client-side local storage fallback.
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS, Shadcn UI
- Database: Supabase (PostgreSQL)
- AI: OpenAI API
- Email: Resend
- Testing: Vitest
StackAudit operates on a hybrid architecture. The client captures inputs using React Hook Form and Zod validation. The core audit logic executes deterministically on the server via Next.js API routes to ensure calculation integrity. Data is persisted to Supabase, and external services (OpenAI, Resend) are integrated securely via server-side endpoints.
- Clone the repository and install dependencies:
npm install- Configure Environment Variables
Create a
.env.localfile in the root directory:
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
OPENAI_API_KEY=your_openai_api_key
RESEND_API_KEY=your_resend_api_key- Supabase Setup
Create a
reportstable in your Supabase project with the following schema:
id(uuid, primary key)data(jsonb)created_at(timestamp)
- Running the Application
npm run devExecute the deterministic engine test suite:
npm testRun type checking and linting:
npx tsc --noEmit
npm run lintThe application is optimized for Vercel.
- Connect the repository to a Vercel project.
- Add the environment variables in the Vercel dashboard.
- Deploy the
mainbranch.
- Implement caching layers for AI-generated summaries to reduce OpenAI API costs.
- Expand the deterministic engine ruleset to cover infrastructure and cloud provider overlap.
- Add user authentication for historical report tracking.