This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle.
What I Built
Ideator checks a startup idea against the real market and walks you to a decision.
You type your idea in one line. Ideator searches Google, Google Play and Reddit, puts every competitor, price, feature and user complaint into a graph, and a Gemma agent works through that graph until it can tell you, with sources, what to build.
The problem. Founders validate ideas with twenty browser tabs, a few app store pages, some Reddit threads and a gut feeling. They come out with a list of competitors and no decision. Chat assistants don't fix this: ask one about your idea and you get a confident feature list, ask again and you get a different one. After ten messages you still don't know who pays, what to charge, or what version 1 is.
What Ideator gives you instead. Every reply ends with a five-slot build brief:
| Slot | What it means |
|---|---|
| Who pays | the exact paying segment |
| Pain you fix | the one complaint you fix, with how many users raised it |
| Why you beat them | the edge over the named competitors |
| Price | a USD price with its reason (from a TabPFN model) |
| First version | the 2-3 things v1 ships, and nothing else |
The evidence fills the pain and the price on the first turn. The other three are your call, so Ideator asks for them one at a time, each with a suggestion taken from the evidence. A few turns later you have a full brief, and the Action plan tab gives you the plan in one paragraph and a numbered build order. Every user quote links to its source. You can also export the plan as an AGENTS.md file and drop it into Claude Code or Cursor, so your coding agent starts from decisions instead of a blank prompt.
Who would pay for it:
- Solo founders and indie hackers, before they spend a weekend building. One avoided wrong build pays for a year.
- Product managers who need a short, sourced brief before a planning meeting.
- Accelerator and hackathon mentors who review dozens of ideas a week and want evidence, not the pitch.
- Students, before they start a project, to avoid building something that already exists and to build something better.
Demo
Code
Ideator
Ideator is an agent that checks a startup idea against the real market. You describe an idea. It finds companies with a similar product, what they offer and charge, and what their users complain about. All of that goes into a FalkorDB graph. A Gemma-powered agent then works through the graph with MCP tools, decides where the opening is and saves that decision in the graph, linked to the evidence behind it.
Demo video: Ideator
What happens when you send an idea
- Search. SerpApi runs three live searches at once: Google results for competitors, Google Play for real app names, ratings and prices, and Reddit for user complaints. Gemma turns the raw results into clean records, using only what the results support.
-
Write the graph. Companies, prices, features and complaints are written to FalkorDB with parameterized
MERGEqueries, in one graph per user session. Features that share a meaningful…
How I Built It
Open-source AI at the core:
-
Gemma 4 (
gemma-4-26b-a4b-it, thengemma-4-31b-it), open-weight, runs the agent loop and writes the report. When the hosted endpoint fails, short prompts fall back togemma2:2bon a local Ollama. If no model answers, the report is built only from the search data and says so. -
TabPFN (Prior Labs), an open tabular foundation model. Each analysis copies its competitors into a shared
market_historygraph, and thepredict_pricetool trains a TabPFN regressor on that history at call time. The more the app is used, the better the price estimates get. A second tool feeds graph counts into a TabPFN classifier to score how crowded the market is. - MCP Python SDK serves the graph tools. The agent lists them through an MCP client and picks one per step.
- FalkorDB holds the market as a graph, one graph per session.
How a request flows:
- Search. SerpApi runs three live searches at once: Google for competitors, Google Play for real app names, ratings and prices, and Reddit for user complaints. A keyword check drops results that are not about your idea, then Gemma turns the rest into clean records.
-
Graph. Companies, prices, features and complaints are written to FalkorDB with parameterized
MERGEqueries. - Agent loop. Gemma picks MCP tools one step at a time: market overview, multi-hop complaint hotspots, PageRank on features, community detection, evidence paths, and the TabPFN price. Every step streams to the UI in plain words, and the map lights up the part of the graph it just queried. The graph tools themselves answer in a few milliseconds. The minutes go to live search and model calls.
-
Decision. The agent writes a
Decisionnode withBECAUSEedges to the complaints and features behind it. On the map you can click the decision and follow the edges back to the original Reddit post.
The query that does most of the work finds what users of several competitors complain about that your idea doesn't fix yet:
MATCH (u:UserIdea {id: $idea})-[:TARGETS]->(c:Competitor)-[:DRAWS_COMPLAINT]->(g:Grievance)-[:TARGETS_FEATURE]->(f:Feature)
WHERE NOT (u)-[:SOLVES]->(g)
RETURN f.name, count(DISTINCT g), collect(DISTINCT c.name)
ORDER BY count(DISTINCT g) DESC
When you refine the idea, the new version gets SOLVES edges, so the same query moves on to the next unmet need.
Around it:
-
Temporal runs search and report generation as durable workflows with retries. The agent loop itself does not run inside a workflow. The Temporal UI shows six completed
SearchWorkflowandReportWorkflowruns from my last three test sessions.
-
Sentry records one agent transaction per chat turn (
invoke_agent ideator), with a span for every Gemma call and MCP tool call. It also caught real problems while I built this: apredict_pricetool error, aConnectionResetErrorwhen my network dropped mid-run, and a Consecutive HTTP flag on TabPFN's training-set upload (12 events), meaning the client makes several sequential requests per fit. That last one is my next performance fix.
- ElevenLabs reads any reply aloud.
- FastAPI with server-sent events on the back end, plain JavaScript and Cytoscape.js on the front end.
What went wrong, and what I changed:
-
Gemma skipped steps when I asked nicely. I told it in the prompt to always check complaints and price before answering. It sometimes skipped them and answered anyway. So the rule now lives in code (
REQUIREDintools.py): the agent cannot finish until both tools have run. - Hosted Gemma returns 500 errors now and then. Some came from JSON mode combined with minimal thinking, so I stopped asking for JSON mode and parse the answer myself. The endpoint still fails sometimes, which is why there is a fallback chain and a report that says when the model was unavailable.
- My own demo had junk in it. When I reviewed a recording frame by frame, the market map had an NFL discussion thread and a TV show listed as competitors of a logging tool. Search results were never checked for relevance. Now they are.
- It is not instant. A new idea takes about one to two and a half minutes, because the live search and the agent steps take real time. Follow-up messages are faster.
Why Does Open Innovation Matter?
A founder's unannounced idea is sensitive. Open weights mean the model that reads it does not have to be a black box you rent. Ideator already falls back to a local Gemma through Ollama, and the graph database and the tool server run on your own machine. Search is the exception today: queries go to SerpApi, and price predictions go through Prior Labs. Fully local is the direction. It is not where Ideator is yet.
Open weights also kept the product alive. The hosted Gemma endpoint returned errors more than once during the build. Because the model is open, I could fall back to a local Gemma and keep answering instead of showing an error page.
And the parts I needed most were already open: PageRank and community detection are built into FalkorDB, TabPFN trains on my own collected data in one call, and MCP let me expose the graph as tools without inventing a protocol. With closed tools I would have spent the week on glue instead of on the product.
My First User
My first users were a few friends from college. They tried Ideator on my machine with their own ideas, and they liked it enough to say they would pay about ₹2,500 each to use it. No money has changed hands yet.
I told them it is open source and BYOK (bring your own key), so they can run it themselves for free. Their answer was "then publish it": put it online with a login page and a paywall, and charge for it. That is the side hustle, and it is my next step.
The best feedback was what happened next. One friend was inspired by Ideator and, after running their own idea through it, started a project of their own: Praesentia, an ERP agent for our college that handles marks, courses and a lot more.
Prize Categories
-
Best Use of Gemma: Gemma runs the agent loop and writes the report, with a local
gemma2:2bfallback through Ollama. -
Best Use of SerpApi: three live searches (Google, Google Play, Reddit) give the agent real, fresh market data, and the
search_more_complaintstool lets it run another live search mid-analysis. -
Best Use of TabPFN:
predict_pricetrains TabPFN on competitors stored in the graph, as a tool inside a wider agent. A second tool scores how crowded the market is. - Best Use of ElevenLabs: a Listen button gives the agent a voice by reading a short spoken summary of any reply.
-
Best Use of Sentry Agent Tracing: one
invoke_agenttrace per chat turn with a span for every model call and tool call, plus the real errors and the TabPFN performance flag it caught, shown above. - Best Use of Temporal: search and report run as Temporal workflows with retries and backoff, shown above.
AI assistance disclosure
I built Ideator with help from AI coding assistants, including Claude Code and Google Antigravity. I reviewed, ran and tested the code, and I can explain the graph model, the queries and the architecture.




Top comments (0)