DEV Community

Ashish Anand
Ashish Anand

Posted on AI-assisted

Cygnus - Hacktoberfest '26

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

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

What I Built

Cygnus is a small web app with three AI tools for people who handle messy paperwork and can't send it to a cloud AI:

  • Receipt Sorter is for freelancers and bookkeepers. It reads pasted receipt text or a photo and returns vendor, date, total, tax, currency and category as table rows, with CSV export.
  • Listing Writer is for Etsy and eBay sellers. It turns product notes and photos into a title, description, tags and a price range.
  • Menu Translator is for local restaurants. It translates a menu but keeps the restaurant's own dish names and follows its glossary.

Cygnus Home Section

The problem is the same in each case. The inputs hold client invoices, supplier prices and customer details, and paid APIs charge per document, which eats the margin of a small monthly subscription. Cygnus runs the model on the user's own computer, so nothing leaves it and there is no per-document bill.

There is also a "Will it pay?" calculator. You enter your customers, price and volume, and it compares monthly profit on a paid API with running the model locally. Its defaults are example numbers, so replace them with your own.

Demo

Cygnus needs a local Ollama to talk to, so there is no hosted demo. Here is a walkthrough instead:

https://youtu.be/mmXypTU8JWk

To run it yourself, follow the steps in the README (about five minutes).

Code

https://github.com/ASAN-11/Cygnus

How I Built It

  • Model: Gemma 3 through Ollama is the default. The page calls Ollama's /api/chat endpoint and streams the reply as it is generated.
  • Any other model works too. The Model field lists whatever is installed in Ollama and also accepts a typed name, so you can try Llama, Qwen, Mistral or a vision model like LLaVA.
  • Vision: photos are base64-encoded in the browser and sent to Gemma as image input, so a receipt or product photo needs no separate OCR step.
  • Structured output: Receipt Sorter asks Ollama for JSON, parses it into table rows and builds the CSV in the browser.
  • No backend: the whole app is one HTML file. You serve it with python3 -m http.server 8000 and open localhost:8000, because a page opened straight from disk is blocked from calling Ollama.
  • Design: a vertical navbar with a branching drop-right menu, and all the graphics (the swan with circuit-trace antlers, the icons, the diagram) are SVG. The palette is white, yellow, orange and gold.

I checked the app end to end against a mock Ollama server, so the page, streaming and table parsing work. Real-world accuracy on your own receipts or menus depends on the model you pick, and you should review extracted rows before using them for accounting.

Why Does Open Innovation Matter?

  • Privacy: receipts and product photos go only to localhost. A closed API would mean sending a client's financial documents to someone else's server.
  • Cost: a local model has no per-token bill, so a $9 a month product can still make money. The calculator in the app lets you check that with your own numbers.
  • Control: the model is a dropdown and the prompts are plain text, so you can swap models, adjust behavior or add a restaurant's glossary without waiting on a vendor.
  • Offline: after the model is pulled, the tools need no internet connection.
  • No lock-in: there is no pricing change or deprecation that can break a product built this way.

Prize Categories

  • Best Use of Gemma: Gemma 3 is the default model for every tool, run locally through Ollama, including its image input.

Top comments (0)