HaloAudit is an AI-powered data auditor that lives quietly at the top of your screen. Just drag a file to the halo, and it instantly scans for sensitive data, security risks, and quality issues β right on your device.
Built for developers, analysts, and compliance teams, HaloAudit bridges privacy and convenience by running intelligent audits locally or securely through the cloud. Whether it's CSVs, PDFs, or spreadsheets, HaloAudit identifies PII, secrets, and inconsistencies, then delivers a clear, actionable report in seconds.
HaloAudit β drop your files, illuminate your data.
A complete, production-ready document audit system with:
- β
Backend API - Deployed at
https://auditor-edge.evanhaque1.workers.dev - β Python Agent - Ready to run (dependencies installed)
- β Swift macOS App - HaloAudit rebranded and ready
# 1. Test backend is working
curl https://auditor-edge.evanhaque1.workers.dev/
# 2. Check job queue
curl https://auditor-edge.evanhaque1.workers.dev/jobs/stats \
-H "Authorization: Bearer OnOGTTCQw1Y4+qyah8n0xKDXRe5RLFqu6BM/P+UjR3k"
# 3. Start the agent
cd agent
source venv/bin/activate
python -m src.main
# 4. Test the Swift app
cd ../swift-frontend
./build_and_run.shβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β macOS App (Swift) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β AuditorUploadView - Drag & drop PDF/CSV β β
β β WebSocketManager - Real-time progress β β
β β AuditorAPIClient - HTTP requests β β
β ββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββ
β HTTPS/WSS
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Cloudflare Workers Edge (TypeScript) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Hono Router + Rate Limiting + Auth β β
β β β’ POST /uploads/create β Signed R2 URLs β β
β β β’ POST /runs/:id/enqueue β D1 job queue β β
β β β’ GET /ws/run/:id β WebSocket (DO) β β
β β β’ POST /jobs/pull|ack β Job queue API β β
β β β’ POST /vector/* β Vectorize proxy β β
β β β’ POST /d1/query β D1 safe proxy β β
β ββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββ
β Job Queue (D1-backed, free tier)
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Python Agent (LangGraph) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β EdgeJobClient - Poll /jobs/pull every 1s β β
β β LangGraph Pipeline (9 nodes): β β
β β 1. Ingest β Download from R2 β β
β β 2. Extract β Gemini multimodal (no OCR!) β β
β β 3. Chunk β Split text β β
β β 4. Embed β Gemini embeddings β β
β β 5. Index β Vectorize via edge β β
β β 6. Checks β 3 deterministic checks β β
β β 7. Analyze β AI summary β β
β β 8. Report β Generate Markdown β β
β β 9. Persist β Save to D1 via edge β β
β ββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββΌβββββββββββββββ¬ββββββββββββββ¬βββββββββββ
βΌ βΌ βΌ βΌ βΌ
ββββββββββ ββββββββββββ βββββββββββ ββββββββββ βββββββ
β R2 β β D1 β βVectorizeβ β DO β β AI β
βStorage β βDatabase β β Index β βRunRoom β β Gwy β
ββββββββββ ββββββββββββ βββββββββββ ββββββββββ βββββββ
- β App Name: Changed from "boringNotch" to "HaloAudit"
- β
Bundle ID: Updated to
com.haloaudit.app - β Display Name: "HaloAudit" throughout the system
- β
GitHub Link: Points to
https://github.com/Evandabest/Hackharvard2025 - β Logo Assets: Ready for replacement
- Location: Third tab in the notch (Home | Shelf | Auditor)
- Icon: Document with magnifying glass
- Features:
- Drag & drop PDF/CSV files
- Real-time progress updates via WebSocket
- Professional audit reports with markdown rendering
- Black theme for report display
- "Show Report" button redirects to Next.js website
- Idle: Dashed border drop zone with "Drag & drop PDF or CSV"
- Uploading: Progress bar with percentage
- Processing: Circular progress with phase updates
- Completed: Green checkmark with "Show Report" button
- Failed: Error message with retry option
URL: https://auditor-edge.evanhaque1.workers.dev
// Client-facing
POST /uploads/create // Create upload, get R2 URL
POST /runs/:id/enqueue // Queue for processing
GET /runs/:id/status // Get status
GET /runs/:id/report-url // Get report URL
GET /runs/:id/report-content // Serve report content
WS /ws/run/:id // Real-time updates
// Server-only (requires Bearer token)
POST /jobs/enqueue // Add job to queue
POST /jobs/pull // Pull jobs (agent)
POST /jobs/ack // Acknowledge jobs
GET /jobs/stats // Queue statistics
POST /vector/upsert // Index embeddings
POST /vector/query // Semantic search
POST /d1/query // Safe DB queriesruns - Upload and processing runs
findings - Audit findings from analysis
events - Log stream for debugging
jobs - Job queue (replaces Cloudflare Queues)- Ingest - Download from R2
- Extract - Gemini multimodal API (NO local OCR!)
- Chunk - Smart text splitting
- Embed - Gemini 768-dim vectors
- Index - Store in Vectorize
- Checks - 3 deterministic checks:
- Duplicate invoices
- Round numbers
- Weekend postings
- Analyze - AI-powered summary
- Report - Markdown generation
- Persist - Save to D1
cd agent
source venv/bin/activate
python -m src.main- URL:
http://localhost:3000/display?reportUrl=... - Features:
- Black theme with professional styling
- Markdown rendering with syntax highlighting
- Authentication via
EDGE_API_TOKEN - Responsive design for audit reports
cd landing-page
npm install
npm run devcd backend
# Create resources
wrangler d1 create auditor
wrangler r2 bucket create auditor
wrangler vectorize create auditor-index --dimensions=768 --metric=cosine
# Set secrets
wrangler secret put TURNSTILE_SECRET
wrangler secret put JWT_SECRET
# Deploy
npm run migrate:prod
npm run deploycd agent
# Install dependencies
poetry install
# Configure .env (see agent/env.example)
# Start agent
make devcd swift-frontend
# Build and run
./build_and_run.shcd landing-page
# Install dependencies
npm install
# Configure .env.local with EDGE_API_TOKEN
# Start development server
npm run dev# Backend health
curl https://auditor-edge.evanhaque1.workers.dev/
# Agent health
curl http://localhost:8080/healthz
# Job queue stats
curl https://auditor-edge.evanhaque1.workers.dev/jobs/stats \
-H "Authorization: Bearer OnOGTTCQw1Y4+qyah8n0xKDXRe5RLFqu6BM/P+UjR3k"- Start agent:
cd agent && python -m src.main - Open Swift app:
cd swift-frontend && ./build_and_run.sh - Open notch β Auditor tab β Drop a PDF
- Watch real-time progress!
- Workers: First 10M requests free
- D1: First 5GB + 5M reads/day free
- R2: First 10GB free
- Vectorize: Free tier available
- Durable Objects: First 1M requests free
Estimated monthly cost: $0 for moderate usage (< 100K documents/month)
- β Drag & drop file upload
- β Real-time progress visualization
- β WebSocket status updates
- β Professional report display
- β HaloAudit branding throughout
- β Signed R2 upload URLs
- β D1-backed job queue (free!)
- β Durable Objects for WebSocket
- β Vectorize proxy for embeddings
- β Rate limiting and authentication
- β Gemini multimodal text extraction (no OCR!)
- β Gemini embeddings (768-dim)
- β LangGraph orchestration
- β Deterministic audit checks
- β AI-powered analysis
- β Markdown report generation
- Agent not connecting: Check
.envconfiguration - Swift build fails: Ensure all files are in Xcode project
- WebSocket not working: Check Durable Object deployment
- Report not displaying: Verify Next.js environment variables
# Check agent logs
cd agent && python -m src.main
# Check backend logs
wrangler tail
# Check Swift app logs
cd swift-frontend && ./build_and_run.sh- Backend:
backend/README.md - Agent:
agent/README.md - Swift App:
swift-frontend/boringnotch/components/Auditor/README.md - Architecture:
backend/ARCHITECTURE.md - Deployment:
backend/DEPLOYMENT_CHECKLIST.md
A complete, production-ready audit system with:
- π Global edge API
- π€ AI-powered processing
- π± Beautiful macOS app
- π° $0/month cost
- π Comprehensive docs
- β All tests passing
Total build time: ~2 hours (with AI assistance!)
Total cost: $0/month
Total awesomeness: 100% π
Built with β€οΈ using Cloudflare Workers, LangGraph, Gemini AI, and SwiftUI