This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle.
What I Built
Ledger is a small-business finance tracker and AI pricing assistant for solo business owners and freelancers. It helps users record income and expenses, review business totals, and estimate prices for products or services.
The Price Calculator keeps saved estimates separate from actual financial transactions. Users can calculate a price, review it, and save it as a pricing record. Saved prices can be searched, filtered, viewed, edited, deleted, or reused as calculator inputs. Reusing a record prefills the form but does not restore its old result; users must calculate again before saving a new price.
Ledger is aimed at small business owners who want a simpler workflow than a full accounting suite.
Demo
Screenshot
Code
How I Built It
The frontend uses React, TypeScript, Vite, and Tailwind CSS. The backend is an Express and TypeScript API backed by MongoDB Atlas through Mongoose.
Both AI flows use the same Groq client and configured model. The server uses the OpenAI SDK with Groq's OpenAI-compatible endpoint:
new OpenAI({
apiKey,
baseURL: "https://api.groq.com/openai/v1",
});
The default model ID is openai/gpt-oss-120b. “OpenAI-compatible” describes the API protocol; inference requests go to Groq. This is hosted inference, not local inference, and the user's submitted text is sent to Groq.
For transaction entry, Ledger asks the model for JSON-formatted drafts, then validates the response on the server and checks whether amounts and dates are supported by evidence in the user's original text. Drafts are not saved automatically; the user reviews and confirms them. For pricing, the model offers qualitative advice around the deterministic calculation. The application validates the recommendation, while financial arithmetic remains ordinary application code.
The standard selling-price formula is:
(unit cost + additional costs per unit) Ă— (1 + markup percentage / 100)
Saved prices have a dedicated Mongoose model and business-scoped API rather than being stored as transactions. One limitation: Ledger does not yet authenticate users or establish business ownership. A business ID scopes a request but does not prove that its caller owns the business, so this prototype should not be exposed as a private multi-user finance service until authorization is added.
Why Does Open Innovation Matter?
Using an open-weight model gives Ledger another option beyond a proprietary model endpoint, and the OpenAI-compatible API meant the server could keep its existing client shape while switching inference providers. That is useful flexibility, but it is not the same as running the model locally or keeping data on the user's device. This version sends text to Groq, and I have not measured inference costs, extraction quality against other models, or customer willingness to pay.
I also keep the boundary between model interpretation and financial decisions explicit: the model can help interpret language and suggest pricing context, but application code calculates prices, validates model output, and leaves consequential saves under user control.
My Agent Session
This earlier session captures the Saved Prices work discussed here; it predates the switch to Groq:
Prize Categories
Based on the implemented technology and available project evidence, these are the partner categories I can substantiate:
- Best Use of Render — Ledger runs as a single Render web service serving the API and built React app, with a configured health check.
- Best Use of MongoDB Atlas — Ledger persists its business data and saved pricing records through Mongoose; the deployment setup uses an Atlas connection string, and the live health check reports a connected database.
- Best Use of GitHub Copilot — Copilot was used to implement, debug, and test Ledger; the embedded agent session documents part of that work.






Top comments (0)