NeuralRepo offers two search modes that work together to help you find ideas quickly, whether you remember the exact wording or just the general concept.
Uses vector similarity powered by Cloudflare Vectorize and the @cf/baai/bge-m3 embedding model. Your query is converted into an embedding and compared against stored idea embeddings. Results are ranked by relevance score and reranked for quality.
Searching for “mobile habit tracker” will surface an idea titled “daily routine app for iOS” even though the words do not overlap.
Keyword Search
Uses SQLite FTS5 full-text search for exact word matching. Fast and precise when you know the specific terms you are looking for.
Searching for “React” returns only ideas that literally contain the word “React.”
Default Behavior — and Where the Fallback Actually Is
Searching without a mode runs semantic search. What happens when semantic search finds
nothing above the threshold depends on which surface you asked from, and the difference
matters:
Surface
No semantic matches
GET /api/v1/ideas/search
Returns an empty result set with search_type: "semantic"
nrepo search
Same — reports 0 results
Web app
Same, until you switch the mode toggle to keyword
Agent tool search_ideas
Falls back to keyword automatically (search_type: "fts_fallback")
MCP search_ideas and code_mode
Falls back to keyword automatically
So the REST API and the CLI do not silently retry — ask for mode=keyword when you know the
exact wording. The one automatic fallback everywhere is the free-plan quota: once the ten
monthly semantic searches are used, every surface returns keyword results — the REST API and
the CLI flag it with semantic_limit_reached: true, and the MCP tool with a notice string.
Use the search box in the sidebar and pick a mode. Keyword search offers three matching
styles — any word, all words, or exact phrase — and the result header names
the mode that answered, so you always know which one you are reading.
Your query text is sent to the @cf/baai/bge-m3 model running on Cloudflare Workers AI.
The model generates a vector embedding representing the meaning of your query.
The embedding is compared against your stored idea embeddings in Cloudflare Vectorize. NeuralRepo asks for roughly three times the number of results you want (at least 20, at most 50) so there is room to filter and rerank.
Matches scoring at or below the search threshold are dropped, as are archived ideas.
A reranking step reorders what survives, and the top limit results are returned.
Idea embeddings are generated asynchronously when an idea is created or updated. There may be a brief delay before a brand-new idea appears in semantic search results. Archiving an idea removes its vector immediately, so a deleted idea stops influencing search and duplicate detection right away.