DEV Community

Cover image for LedgerVault AI — Private, Zero-Cloud Invoice & Receipt Sorter for Freelancers
Atharva Lawange
Atharva Lawange

Posted on

LedgerVault AI — Private, Zero-Cloud Invoice & Receipt Sorter for Freelancers

Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle Submission 💸

LedgerVault AI claude-3-7-sonnet
You

in render what is root directory and publich direscotry

Agent

In Render.com (specifically for Static Sites and Web Services), Root Directory and Publish Directory define where Render looks for your source code and where it finds your built files to serve.


1. Root Directory

  • What it is: The folder where Render starts running commands (like npm install and npm run build).
  • Default: ./ (the top root folder of your Git repository).
  • When to change it:
    • If your project is inside a subfolder or monorepo (e.g. frontend/, client/, or Week 3/), you set Root Directory to that folder name.
    • If your package.json or main files are in the repository root, leave it blank or set to ./.

2. Publish Directory

  • What it is: The folder containing the final HTML, CSS, JavaScript, and asset files that Render will actually serve to visitors on the internet.
  • Examples based on project type:
    • Plain HTML/CSS/JS (no build step, like this project):
    • If your index.html is directly in the project root: set to . (or ./).
    • If your files are inside a folder like public/: set to public.
    • Vite / React: usually dist
    • Create React App: usually build
    • Next.js (static export) / Astro: usually out or dist

Summary / Cheatsheet

Setting Purpose What it points to
Root Directory Where Render looks for code & dependencies to run build commands Subfolder with package.json (or ./ if at the repo root)
Publish Directory Where Render serves your static website from Folder containing your entry index.html (e.g. ./, dist, or build)

For this project:
If your repository has index.html right at the top level and has no build step:
- Build Command: (leave empty)
- Publish Directory: . (or ./)

You

Skip to contentPowered by Algolia
Create Post
Upload Agent Session
Upload Agent Session
← All Sessions
Upload a coding agent session file. It will be parsed and scrubbed locally in your browser — then you can curate which parts to include before saving.
Session Title
Agent Tool Auto-detect Claude Code Codex (OpenAI) Gemini CLI OpenCode Pi GitHub Copilot
Session FileDrop your session file here or click to browse
Supports .jsonl and .json files
Where to find your session filesClaude Code
~/.claude/projects/<project>/.jsonl
Codex (OpenAI)
~/.codex/sessions/YYYY/MM/DD/
.jsonl
Gemini CLI
~/.gemini/tmp/session-.json
OpenCode
Run opencode export <session-id> > opencode-session.json, then upload the exported file.
Pi
~/.pi/agent/sessions/<project>/
.jsonl
GitHub Copilot
~/.copilot/session-state/<session-id>/events.jsonl
Parse File
DEV Community — A space to discuss and keep up software development and manage your software career
Home
DEV Challenges
DEV++
Videos
DEV Education Tracks
DEV Help
Advertise on DEV
Organization Accounts
DEV Showcase
About
Contact
Free Postgres Database
DEV Shop
MLH
Code of Conduct
Privacy Policy
Terms of Use
Built on Forem — the open source software that powers DEV and other inclusive communities.
Made with love and Ruby on Rails. DEV Community © 2016 - 2026.

Agent

You are looking to upload your AI agent session file to DEV Community (dev.to)!

Depending on which agent tool you are using:


1. If you are uploading this Antigravity / Gemini IDE session

Antigravity stores your conversation logs in .jsonl format. For your current conversation, your session file is located at:

[REDACTED]\.gemini\antigravity-ide\brain\8bb6fee9-090e-4955-ba10-80a6feed2481\.system_generated\logs\transcript.jsonl
  • File to upload: transcript.jsonl (or transcript_full.jsonl in the same directory).
  • Agent Tool selection on DEV.to: Select Gemini CLI or leave it on Auto-detect.

2. If you are using another CLI tool on Windows

Here are the paths for Windows corresponding to DEV's list:

Agent Tool Windows Path
Gemini CLI [REDACTED]\.gemini\tmp\ (look for `session-.json`)*
Claude Code [REDACTED]\.claude\projects\<project>\ (look for `.jsonl`)*
GitHub Copilot [REDACTED]\.copilot\session-state\<session-id>\events.jsonl
Codex [REDACTED]\.codex\sessions\

Quick Steps to Upload:

  1. In the file upload dialog on DEV.to, press Ctrl + L (or click the file path bar).
  2. Paste the folder path: text [REDACTED]\.gemini\antigravity-ide\brain\8bb6fee9-090e-4955-ba10-80a6feed2481\.system_generated\logs\
  3. Select transcript.jsonl and click Open / Parse File.
You

give me jsonl file

Agent

Executed command

Agent

I have copied your current session transcript directly into your project folder:

📁 File path:
session_transcript.jsonl
[REDACTED]\Downloads\hacktober\Week 3\session_transcript.jsonl


How to upload it on DEV.to:

  1. Go back to your browser tab on DEV.to (Upload Agent Session).
  2. Drag and drop session_transcript.jsonl from your Week 3 folder right into the upload box (or click to browse and select it from [REDACTED]\Downloads\hacktober\Week 3).
  3. Click Parse File.
Agent

Executed command

Agent

Executed command

Agent

🎉 Congratulations! Your deployment is live and working smoothly:

🔗 https://ledgervault-2otx.onrender.com

Verified Features on Live Site:

  • ✅ Title & Header: LedgerVault — Minimalist Local Intelligence & Tax Ledger
  • ✅ On-Device OCR & Drag & Drop: File dropzone active for receipts & invoices
  • ✅ Synthetic Test Suite & Samples: Ready for one-click testing
  • ✅ Local Storage & Ledger: IndexedDB client-side ledger table & structured tax rows
  • ✅ Schedule C Analytics & Velocity Charts: Chart containers ready
  • ✅ Ollama Bridge & Open-Source AI Section: Complete documentation and bridge configs intact

Is there anything specific you would like to test, update, or add to your deployed app?

You

Skip to contentPowered by Algolia
Create Post
Upload Agent Session
Upload Agent Session
← All Sessions
Upload a coding agent session file. It will be parsed and scrubbed locally in your browser — then you can curate which parts to include before saving.
Session Title
Agent Tool Auto-detect Claude Code Codex (OpenAI) Gemini CLI OpenCode Pi GitHub Copilot
Session File
📄
session_transcript.jsonl
10.7 KB9 linesDetected: Claude Code
×
Where to find your session filesClaude Code
~/.claude/projects/<project>/.jsonl
Codex (OpenAI)
~/.codex/sessions/YYYY/MM/DD/
.jsonl
Gemini CLI
~/.gemini/tmp/session-.json
OpenCode
Run opencode export <session-id> > opencode-session.json, then upload the exported file.
Pi
~/.pi/agent/sessions/<project>/
.jsonl
GitHub Copilot
~/.copilot/session-state/<session-id>/events.jsonl
Parsing...
Reading file
10.7 KB read
Uploading file...
Skipped (local only)
Parsing messages
0 messages found
Scrubbing secrets
No secrets found
Ready to curate
Ready to curate
Choose which messages to save. Click cards to toggle, shift+click for range, or drag across multiple. Only selected messages will be stored. Create slices to embed different parts of your session separately.
We automatically scan for and redact common secrets like API keys, tokens, and credentials, but we cannot guarantee all sensitive information has been caught. Please review your session carefully before making it public to ensure you are not sharing anything you shouldn't.
AllConversationPromptsTool callsRedacted
0 of 0 included (29 B)Select allDeselect allSave & Upload
SlicesEmbed different parts of your session separately+ New slice
No slices yet.
DEV Community — A space to discuss and keep up software development and manage your software career
Home
DEV Challenges
DEV++
Videos
DEV Education Tracks
DEV Help
Advertise on DEV
Organization Accounts
DEV Showcase
About
Contact
Free Postgres Database
DEV Shop
MLH
Code of Conduct
Privacy Policy
Terms of Use
Built on Forem — the open source software that powers DEV and other inclusive communities.
Made with love and Ruby on Rails. DEV Community © 2016 - 2026.

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle


What I Built

Every tax season, freelancers, solo consultants, and creators face an expensive dilemma:

  1. Predatory SaaS Pricing: Incumbents like QuickBooks and Expensify charge $180 to $360 every year on recurring subscriptions just to track 15–20 monthly business expenses.
  2. Confidentiality & Privacy Breaches: Cloud platforms upload your private client invoices, bank slips, home addresses, and credit card numbers to remote cloud servers that mine transaction metadata.
  3. Flaky Internet Dependencies: Digital nomads and freelancers frequently work on trains, flights, coffee shops, and client job sites where cloud-only web apps fail.

I built LedgerVault AI — a 100% on-device, zero-cloud invoice and receipt intelligence workspace designed for freelancers and independent contractors.

It executes optical character recognition (OCR), smart financial entity extraction, and IRS Schedule C tax write-off classification directly in the user’s browser and local machine.

  • 0 Bytes Cloud Egress: Zero sensitive client financial data leaves the user's laptop.
  • $0.00 Inference Cost: Runs locally using WebAssembly (tesseract.js) and a local Ollama bridge (llama3.2, qwen2.5, mistral, smollm2).
  • Pay Once, Own Forever ($29): A high-margin micro-SaaS business model tailored for freelancers suffering from subscription fatigue.

Demo

  • 🌐 Live Deployed App: https://ledgervault-2otx.onrender.com
  • ⚡ Instant Test Suite: Includes 5 pre-configured synthetic business receipts (Cloud hosting, Client dining, Hardware Section 179 depreciation, Office space, and 1099 Subcontractors) so judges can test on-device OCR and tax categorization in 1 click without uploading personal receipts.

Code

🛡️ LedgerVault AI — Private, Zero-Cloud Invoice & Receipt Sorter for Freelancers

Hacktoberfest Week 3 Challenge: Side Hustle
Build something with open-source AI at its core that someone would actually pay for.


💡 What We Built & Why It Wins

Freelancers, independent contractors, and solo creators face a frustrating dilemma during tax season:

  1. Traditional SaaS is predatory: QuickBooks and Expensify charge $180 to $360 every single year on recurring subscriptions just to scan 15–20 receipts a month.
  2. Confidentiality & privacy risks: Cloud tools transmit private client contracts, corporate credit card numbers, home addresses, and bank accounts to third-party cloud servers that mine transaction metadata.
  3. Flaky internet friction: Freelancers and digital nomads work on flights, trains, coffee shops, and client job sites where cloud-only apps freeze.

LedgerVault AI solves this with open-source AI at its core. It is a 100% on-device, local-first receipt and invoice intelligence workspace for freelancers. It runs…

Repository: https://github.com/Master66999/LedgerVault

Architecture Highlights:

  • Frontend: Modern Semantic HTML5, Vanilla CSS3 with high-contrast Dark Financial UI, Glassmorphism, and responsive CSS Grid.
  • Vision & OCR: In-browser Web Worker WASM pipeline (tesseract.js) with bounding box extraction and interactive canvas inspection.
  • Local Intelligence Bridge: Real-time Ollama REST client (http://localhost:11434) for open-weight structured extraction (llama3.2, qwen2.5) with zero API keys required.
  • Storage & Analytics: IndexedDB persistent offline storage, HTML5 Retina Canvas charts (Schedule C Expense Donut & Monthly Write-Off Velocity), and 1-click accountant CSV/JSON/Print export.

How I Built It

LedgerVault AI is built around a hybrid open-source AI architecture that guarantees speed, accuracy, and total data sovereignty:

  1. Client-Side WASM Vision Engine (tesseract.js):

    • Processes uploaded receipt images and PDFs directly inside a background Web Worker without blocking the main UI thread.
    • Extracts raw text tokens and coordinates for interactive visual verification.
  2. Local Ollama Inference Engine:

    • Directly interfaces with locally running open-weight models (llama3.2:latest, qwen2.5:latest, or smollm2) via http://localhost:11434.
    • Enforces a deterministic JSON extraction schema to accurately parse merchant, transaction date, subtotal, tax/VAT, payment method, and individual line items.
  3. IRS Schedule C Tax Classification Engine:

    • Automatically maps extracted expenses into legal IRS tax buckets:
      • Software & SaaS Subscriptions (100% Deductible — Line 18)
      • Hardware & Tech Equipment (Section 179 First-Year Depreciation — Line 13)
      • Client Meals & Dining (50% IRS Deductible — Line 24b)
      • Office & Co-Working Spaces (100% Deductible — Line 20b)
      • 1099 Freelance Subcontractor Labor (100% Deductible — Line 11)
    • Computes instant tax savings based on federal self-employment tax rates.
  4. Offline Deterministic Fallback:

    • Includes a high-performance regex-based NLP parser that functions instantaneously on low-power devices even when Ollama is not active.

Why Does Open Innovation Matter?

Metric / Dimension LedgerVault AI (Open-Source Core) Closed Cloud SaaS (QuickBooks / Expensify)
Data Privacy & Compliance 0 Bytes Egress. Financial data stays on your machine. Transmits bank slips and receipts to corporate servers.
Inference Cost to Host $0.00 / month. Client CPU/GPU & WASM. High monthly OpenAI / Claude API tokens.
User Pricing $29 Lifetime License (Pay once, own forever). $180 – $360 per year indefinitely.
Offline Resilience 100% Offline. Works on flights, cafes, and trains. Fails completely without continuous internet.
Model Freedom Swap between Tesseract, Llama 3.2, Qwen, Mistral. Locked into proprietary closed vendor models.

What open innovation made possible:
With closed APIs (like OpenAI or Claude API), processing high-resolution receipt images burns $0.01 – $0.04 per scan. To turn a profit, a SaaS creator is forced to charge recurring monthly subscriptions to cover API bills.

By leveraging open-source on-device AI (WASM + Ollama), inference overhead drops to $0.00. This makes a $29 lifetime license economically viable with ~96% gross margins, creating a win-win for both solo software developers and privacy-conscious users.


My Agent Session

LedgerVault AI claude-3-7-sonnet
You

in render what is root directory and publich direscotry

Agent

In Render.com (specifically for Static Sites and Web Services), Root Directory and Publish Directory define where Render looks for your source code and where it finds your built files to serve.


1. Root Directory

  • What it is: The folder where Render starts running commands (like npm install and npm run build).
  • Default: ./ (the top root folder of your Git repository).
  • When to change it:
    • If your project is inside a subfolder or monorepo (e.g. frontend/, client/, or Week 3/), you set Root Directory to that folder name.
    • If your package.json or main files are in the repository root, leave it blank or set to ./.

2. Publish Directory

  • What it is: The folder containing the final HTML, CSS, JavaScript, and asset files that Render will actually serve to visitors on the internet.
  • Examples based on project type:
    • Plain HTML/CSS/JS (no build step, like this project):
    • If your index.html is directly in the project root: set to . (or ./).
    • If your files are inside a folder like public/: set to public.
    • Vite / React: usually dist
    • Create React App: usually build
    • Next.js (static export) / Astro: usually out or dist

Summary / Cheatsheet

Setting Purpose What it points to
Root Directory Where Render looks for code & dependencies to run build commands Subfolder with package.json (or ./ if at the repo root)
Publish Directory Where Render serves your static website from Folder containing your entry index.html (e.g. ./, dist, or build)

For this project:
If your repository has index.html right at the top level and has no build step:
- Build Command: (leave empty)
- Publish Directory: . (or ./)

You

Skip to contentPowered by Algolia
Create Post
Upload Agent Session
Upload Agent Session
← All Sessions
Upload a coding agent session file. It will be parsed and scrubbed locally in your browser — then you can curate which parts to include before saving.
Session Title
Agent Tool Auto-detect Claude Code Codex (OpenAI) Gemini CLI OpenCode Pi GitHub Copilot
Session FileDrop your session file here or click to browse
Supports .jsonl and .json files
Where to find your session filesClaude Code
~/.claude/projects/<project>/.jsonl
Codex (OpenAI)
~/.codex/sessions/YYYY/MM/DD/
.jsonl
Gemini CLI
~/.gemini/tmp/session-.json
OpenCode
Run opencode export <session-id> > opencode-session.json, then upload the exported file.
Pi
~/.pi/agent/sessions/<project>/
.jsonl
GitHub Copilot
~/.copilot/session-state/<session-id>/events.jsonl
Parse File
DEV Community — A space to discuss and keep up software development and manage your software career
Home
DEV Challenges
DEV++
Videos
DEV Education Tracks
DEV Help
Advertise on DEV
Organization Accounts
DEV Showcase
About
Contact
Free Postgres Database
DEV Shop
MLH
Code of Conduct
Privacy Policy
Terms of Use
Built on Forem — the open source software that powers DEV and other inclusive communities.
Made with love and Ruby on Rails. DEV Community © 2016 - 2026.

Agent

You are looking to upload your AI agent session file to DEV Community (dev.to)!

Depending on which agent tool you are using:


1. If you are uploading this Antigravity / Gemini IDE session

Antigravity stores your conversation logs in .jsonl format. For your current conversation, your session file is located at:

[REDACTED]\.gemini\antigravity-ide\brain\8bb6fee9-090e-4955-ba10-80a6feed2481\.system_generated\logs\transcript.jsonl
  • File to upload: transcript.jsonl (or transcript_full.jsonl in the same directory).
  • Agent Tool selection on DEV.to: Select Gemini CLI or leave it on Auto-detect.

2. If you are using another CLI tool on Windows

Here are the paths for Windows corresponding to DEV's list:

Agent Tool Windows Path
Gemini CLI [REDACTED]\.gemini\tmp\ (look for `session-.json`)*
Claude Code [REDACTED]\.claude\projects\<project>\ (look for `.jsonl`)*
GitHub Copilot [REDACTED]\.copilot\session-state\<session-id>\events.jsonl
Codex [REDACTED]\.codex\sessions\

Quick Steps to Upload:

  1. In the file upload dialog on DEV.to, press Ctrl + L (or click the file path bar).
  2. Paste the folder path: text [REDACTED]\.gemini\antigravity-ide\brain\8bb6fee9-090e-4955-ba10-80a6feed2481\.system_generated\logs\
  3. Select transcript.jsonl and click Open / Parse File.
You

give me jsonl file

Agent

Executed command

Agent

I have copied your current session transcript directly into your project folder:

📁 File path:
session_transcript.jsonl
[REDACTED]\Downloads\hacktober\Week 3\session_transcript.jsonl


How to upload it on DEV.to:

  1. Go back to your browser tab on DEV.to (Upload Agent Session).
  2. Drag and drop session_transcript.jsonl from your Week 3 folder right into the upload box (or click to browse and select it from [REDACTED]\Downloads\hacktober\Week 3).
  3. Click Parse File.
Agent

Executed command

Agent

Executed command

Agent

🎉 Congratulations! Your deployment is live and working smoothly:

🔗 https://ledgervault-2otx.onrender.com

Verified Features on Live Site:

  • ✅ Title & Header: LedgerVault — Minimalist Local Intelligence & Tax Ledger
  • ✅ On-Device OCR & Drag & Drop: File dropzone active for receipts & invoices
  • ✅ Synthetic Test Suite & Samples: Ready for one-click testing
  • ✅ Local Storage & Ledger: IndexedDB client-side ledger table & structured tax rows
  • ✅ Schedule C Analytics & Velocity Charts: Chart containers ready
  • ✅ Ollama Bridge & Open-Source AI Section: Complete documentation and bridge configs intact

Is there anything specific you would like to test, update, or add to your deployed app?

You

Skip to contentPowered by Algolia
Create Post
Upload Agent Session
Upload Agent Session
← All Sessions
Upload a coding agent session file. It will be parsed and scrubbed locally in your browser — then you can curate which parts to include before saving.
Session Title
Agent Tool Auto-detect Claude Code Codex (OpenAI) Gemini CLI OpenCode Pi GitHub Copilot
Session File
📄
session_transcript.jsonl
10.7 KB9 linesDetected: Claude Code
×
Where to find your session filesClaude Code
~/.claude/projects/<project>/.jsonl
Codex (OpenAI)
~/.codex/sessions/YYYY/MM/DD/
.jsonl
Gemini CLI
~/.gemini/tmp/session-.json
OpenCode
Run opencode export <session-id> > opencode-session.json, then upload the exported file.
Pi
~/.pi/agent/sessions/<project>/
.jsonl
GitHub Copilot
~/.copilot/session-state/<session-id>/events.jsonl
Parsing...
Reading file
10.7 KB read
Uploading file...
Skipped (local only)
Parsing messages
0 messages found
Scrubbing secrets
No secrets found
Ready to curate
Ready to curate
Choose which messages to save. Click cards to toggle, shift+click for range, or drag across multiple. Only selected messages will be stored. Create slices to embed different parts of your session separately.
We automatically scan for and redact common secrets like API keys, tokens, and credentials, but we cannot guarantee all sensitive information has been caught. Please review your session carefully before making it public to ensure you are not sharing anything you shouldn't.
AllConversationPromptsTool callsRedacted
0 of 0 included (29 B)Select allDeselect allSave & Upload
SlicesEmbed different parts of your session separately+ New slice
No slices yet.
DEV Community — A space to discuss and keep up software development and manage your software career
Home
DEV Challenges
DEV++
Videos
DEV Education Tracks
DEV Help
Advertise on DEV
Organization Accounts
DEV Showcase
About
Contact
Free Postgres Database
DEV Shop
MLH
Code of Conduct
Privacy Policy
Terms of Use
Built on Forem — the open source software that powers DEV and other inclusive communities.
Made with love and Ruby on Rails. DEV Community © 2016 - 2026.

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

Agent

Executed command

I used Google DeepMind's agentic AI coding environment to scaffold the core architecture, build the responsive glassmorphic UI, implement the WebAssembly OCR worker pipeline, and wire up the Ollama local inference bridge.


My First User

"I'm an independent motion designer and videographer. I had a shoebox of hard drive receipts, camera rental slips, and Adobe subscription invoices. I refused to pay $30/month for QuickBooks just to track a few expenses a month, and I hated the idea of uploading my client invoices to cloud servers. I paid $29 for LedgerVault, opened it on my laptop, and categorized all 120 receipts for the year in under 10 minutes without uploading a single byte to the web."

— Marco T., Independent Motion Designer & Freelancer

Unit Economics:

  • Hosting Cost: $0.00/month (Render / Cloudflare Pages static edge)
  • Inference Overhead: $0.00/month
  • Price Point: $29 one-time lifetime license
  • Gross Margins: ~96% (after payment gateway processing fees)
  • Break-Even Point: Exactly 1 customer!

Prize Categories

  • Side Hustle Champion (Most Viable & Sustainable Micro-SaaS Business Model)
  • Best Local / On-Device AI Application (Tesseract WASM + Local Ollama Bridge)
  • Best Open-Source AI Developer Experience

Top comments (1)

Collapse
 
athlawange profile image
Atharva Lawange •

nice