Inspiration
Developers live in Slack, but codebase questions don't get answered there. Someone asks "where does that get handled?" and the thread stalls while people open GitHub, grep their IDE, or wait for whoever wrote it. The context switch is the cost.
Most "AI for code" tools answer this by shipping your source to a language model. That's slow, expensive, leaks proprietary code to a third party, and — worst of all — the model will confidently cite files that don't exist.
What it does
Mention @CodePulse in any channel and it answers in the thread with a ranked list of files, each citing the exact symbol and line range:
@CodePulse what does searchSlackHistory do
→ src/index.js scores 4.47 async function searchSlackHistory(client, question) :45-71 Signals: exactToken=3.00 symbolMatch=1.50 pathMatch=0.00
Every answer is grounded in a real symbol at a real line. There is nothing to hallucinate, because nothing is generated.
How we built it
Slack Bolt.js over Socket Mode, talking to SigMap through the Model Context Protocol. SigMap parses the repository into compact symbol signatures and scores files against the query on four independent signals — exact token match, symbol match, prefix match, and path match.
The interesting decision is what CodePulse doesn't do: it never calls an LLM. Ranking is deterministic string matching over an index. That means zero inference cost, zero token spend, no data leaving the machine, and a scoring breakdown the user can actually inspect. Indexing achieves ~84% token reduction versus sending source.
Challenges we ran into
Our demo query was "where is the event handler?" — and it returned a table of straight zeros. Every file, 0.00.
Nothing was broken. SigMap ranks by matching query words against indexed symbol names, and our Slack handlers are anonymous callbacks — app.event('app_mention', ...). There is no symbol named "handler" anywhere, so there was correctly nothing to match.
That's the honest trade-off of a deterministic ranker, and finding it changed the project. A semantic model would have guessed and sounded confident. Ours returned zeros and told us exactly why — every signal at 0.00. We'd rather ship a tool that admits a miss than one that invents a plausible file path.
Accomplishments that we're proud of
Grounded by construction. A model can hallucinate JwtTokenProvider.java; an index cannot return a file it never saw. The citation is the answer.
We also caught ourselves overclaiming: our own docs demoed a JWT auth service and a payment service that didn't exist in the indexed repo. We rewrote every example against verified output. Every score in this submission is real and reproducible — run npm run test:mcp -- "what does searchSlackHistory do" and you'll get 4.47.
What we learned
Transparency beats confidence. Showing exactToken=3.00 symbolMatch=1.50 isn't just debug output — it's what lets a developer decide whether to trust the answer. Most AI tools hide their reasoning and ask for faith. Exposing the scoring made the zero-score failure legible instead of mysterious.
What's next for CodePulse
Semantic fallback when symbol matching returns zeros — route to embeddings only when the deterministic path misses, keeping the fast, free, grounded path as the default. Plus multi-repo indexing and PR-diff-aware ranking.
Built With
- javascript
- mcp
- model-context-protocol
- node.js
- sigmap
- slack-api
- slack-bolt
- socket-mode

Log in or sign up for Devpost to join the conversation.