Autonomous β’ Scalable β’ Production-Ready
Live Demo β’ Documentation β’ Report Bug β’ Request Feature
Recora-X is an intelligent SaaS platform that transforms receipt processing through autonomous AI agents. Upload a PDF receipt, and watch as our multi-agent system extracts, validates, and structures financial data in real-time β no manual entry required.
Built with Anthropic Claude Sonnet 4.5 for intelligent extraction, orchestrated by Inngest Agents for reliable workflows, and powered by Convex for instant data synchronization.
"Think of it as your personal receipt accountant β powered by autonomous AI."
| π€ Upload | π€ AI Processing | β Structured Output |
|---|---|---|
| Drop any PDF receipt | Claude extracts merchant, items, totals | Get structured JSON in seconds |
Multi-agent coordination system where specialized AI agents handle scanning, validation, and storage autonomously.
Claude Sonnet 4.5 extracts merchant names, transaction dates, line items, and totals with high accuracy.
Inngest orchestrates agent operations through reliable event triggers and state management.
Convex ensures your UI reflects processing status instantly β no polling required.
Clerk authentication with user-isolated data ensures privacy and compliance.
Sleek UI built with Next.js 15, Tailwind 4, and Radix UI components for exceptional UX.
graph TB
subgraph "π₯οΈ Frontend Layer"
UI[Receipt Upload UI]
Dashboard[Dashboard & Analytics]
end
subgraph "βοΈ Backend Layer"
API[Convex API]
DB[(Receipts Database)]
Storage[(File Storage)]
end
subgraph "π€ AI Agent Layer"
Network[Agent Network]
Scanner[Receipt Scanner Agent]
DBAgent[Database Agent]
Claude[Claude Sonnet 4.5]
end
subgraph "π Auth Layer"
Clerk[Clerk Auth]
end
UI -->|Upload| API
API -->|Store File| Storage
API -->|Trigger| Network
Network -->|Initialize| Scanner
Scanner -->|Parse| Claude
Claude -->|Extract| Scanner
Scanner -->|Validate| DBAgent
DBAgent -->|Save| DB
DB -->|Subscribe| UI
Clerk -->|Authenticate| UI
style Claude fill:#9b87f5
style Network fill:#7c3aed
style UI fill:#3b82f6
style DB fill:#10b981
|
|
erDiagram
RECEIPTS ||--o{ ITEMS : contains
RECEIPTS {
string _id PK
string userId FK
string fileName
string status
string merchantName
string transactionDate
decimal transactionAmount
string currency
timestamp createdAt
timestamp processedAt
}
ITEMS {
string _id PK
string receiptId FK
string name
int quantity
decimal price
decimal subtotal
}
pendingβ Upload complete, awaiting AI processingprocessingβ AI agent actively extracting dataprocessedβ Successfully extracted and storederrorβ Processing failed, retry available
- Node.js 18+ or Bun 1.0+
- pnpm, npm, or yarn
- Accounts: Clerk, Convex, Inngest, Anthropic
# Clone repository
git clone https://github.com/ashutoshm97/recora-x.git
cd recora-x
# Install dependencies
pnpm install
# Copy environment template
cp .env.example .env.local# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_...
CLERK_SECRET_KEY=sk_test_...
# Convex
CONVEX_DEPLOYMENT=dev:...
NEXT_PUBLIC_CONVEX_URL=https://...
# Inngest
INNGEST_EVENT_KEY=...
INNGEST_SIGNING_KEY=...
# Anthropic
ANTHROPIC_API_KEY=sk-ant-...# Start Convex dev server
pnpm convex dev
# Start Next.js (in new terminal)
pnpm dev
# Start Inngest dev server (in new terminal)
pnpm inngest:devVisit http://localhost:3000 π
sequenceDiagram
participant π€ User
participant π₯οΈ UI
participant π¦ Convex
participant π― Inngest
participant π Scanner
participant π§ Claude
participant πΎ DBAgent
π€->>π₯οΈ: Upload PDF Receipt
π₯οΈ->>π¦: storeReceipt(file, userId)
π¦->>π¦: Save to File Storage
π¦->>π―: Emit "receipt.extract" event
π―->>π: Initialize Scanner Agent
π->>π§ : Send PDF + Prompt
π§ -->>π: Return Structured JSON
π->>π: Validate Extraction
π->>πΎ: Pass Data to DB Agent
πΎ->>π¦: updateReceipt(data)
π¦-->>π₯οΈ: Real-time Subscription Update
π₯οΈ-->>π€: Show Processed Receipt
recora-x/
βββ app/ # Next.js 15 App Router
β βββ (auth)/ # Authentication routes
β βββ (dashboard)/ # Protected dashboard
β βββ api/ # API routes
βββ components/ # React components
β βββ ui/ # Shadcn/ui primitives
β βββ receipts/ # Receipt-specific components
β βββ layout/ # Layout components
βββ convex/ # Convex backend
β βββ schema.ts # Database schema
β βββ auth.config.ts # Clerk integration
β βββ receipts.ts # Receipt operations
βββ inngest/ # Inngest agents
β βββ client.ts # Inngest client config
β βββ agents/ # Agent definitions
β β βββ scanner.ts # Receipt scanner agent
β β βββ database.ts # Database agent
β βββ functions/ # Inngest functions
βββ lib/ # Utilities
β βββ utils.ts # Helper functions
β βββ validations.ts # Zod schemas
βββ public/ # Static assets
// Upload and trigger processing
uploadReceipt(file: File, userId: string): Promise<ReceiptId>
// Fetch user receipts
getReceipts(userId: string): Promise<Receipt[]>
// Get download URL
getFileDownloadUrl(fileId: string): Promise<string>
// Update with extracted data
updateReceiptWithExtractedData(
receiptId: string,
data: ExtractedData
): Promise<void>
// Delete receipt
deleteReceipt(receiptId: string): Promise<void>// Receipt Scanner Agent
receiptScannerAgent({
pdfUrl: string,
receiptId: string
}): Promise<ExtractedData>
// Database Agent
databaseAgent({
receiptId: string,
extractedData: ExtractedData
}): Promise<void>Clean, intuitive interface for managing all your receipts
Watch in real-time as AI extracts your receipt data
Structured, searchable receipt information
# Run unit tests
pnpm test
# Run E2E tests
pnpm test:e2e
# Type checking
pnpm type-check
# Linting
pnpm lint# Deploy to Vercel
vercel deploy --prod
# Configure environment variables in Vercel dashboard- Build the application:
pnpm build - Deploy Convex:
npx convex deploy - Configure Inngest production keys
- Deploy to your hosting platform
- Batch Processing - Upload and process multiple receipts simultaneously
- Smart Categories - AI-powered expense categorization
- Analytics Dashboard - Spending insights and visualizations
- Export Options - Google Sheets, Excel, Notion integrations
- Mobile App - Native iOS/Android applications
- Voice Upload - Speech-to-data receipt entry
- OCR Enhancement - Support for photographed receipts
- Multi-language - Support for international receipts
Contributions make the open-source community amazing! Any contributions you make are greatly appreciated.
# Fork the repository
# Create your feature branch
git checkout -b feature/AmazingFeature
# Commit your changes
git commit -m 'feat: add some AmazingFeature'
# Push to the branch
git push origin feature/AmazingFeature
# Open a Pull RequestWe follow Conventional Commits specification.
Distributed under the MIT License. See LICENSE for more information.
Full-Stack Engineer β’ AI Systems Architect β’ Cloud Solutions Developer
Building scalable agentic workflows that integrate cutting-edge LLMs with real-time databases.
- Anthropic for Claude AI
- Convex for the real-time backend
- Inngest for reliable agent orchestration
- Vercel for seamless deployment
- Clerk for authentication
Recora-X β’ Automating Receipts. Empowering Agents.
Built with β€οΈ using Next.js β’ Convex β’ Inngest β’ Claude AI
β Star this repo if you find it helpful!