Minesweeper is often considered a solved problem for algorithms, but what happens when you introduce Persona-based Reasoning? In this post, we explore the architecture and implementation of Neural Sweeper.
1. The Core Challenge: LLM as a Tactical Player
Unlike standard algorithms (like backtracking or constraint satisfaction), an LLM doesn't "see" the board. It processes text. We had to transform the 2D grid into a structured string format that retains spatial context.
Serialization Strategy
We used a simple but effective grid serialization:
-
?for hidden cells -
Ffor flags -
0-8for revealed numbers
const serialized = grid.map(row =>
row.map(cell => {
if (cell.state === 'hidden') return '?';
if (cell.state === 'flagged') return 'F';
return cell.neighborMines.toString();
}).join(' ')
).join('\n');
2. Persona Prompt Engineering
The "soul" of the app lies in the personas. By providing specific system instructions, we steer the "temperature" of logic vs. risk.
{
id: 'cautious',
name: 'The Cautious Analyst',
prompt: 'You value survival above all. Never guess. Only reveal if you are 100% mathematically CERTAIN a cell is safe based on flagged neighbors.'
}
3. The Backend Bridge (Express Proxy)
To keep API keys secure and support multiple providers, we built a thin Express proxy. Since Featherless.ai and Ollama both support the OpenAI-compatible v1 chat completion format, we could use the standard openai npm package for all three.
app.post('/api/ai/move', async (req, res) => {
const { provider, model, messages } = req.body;
// ... configuration logic ...
const openai = new OpenAI(config);
const response = await openai.chat.completions.create({
model: model,
messages: messages,
response_format: { type: 'json_object' }
});
res.json(response);
});
4. "Tacticool" UI with Tailwind & Framer Motion
The UI isn't just about looks; it's about feedback. We used Framer Motion for:
- Staggered board entrance.
- Floating "Thinking" overlays when the AI is processing.
- Smooth transitions between game states (Ready -> Playing -> Neutralized).
5. Local-First with Ollama
One of the most requested features was Ollama integration. By detecting the local API tags endpoint, the app dynamically populates available local models, allowing users to run the entire arena locally for free.
Neural Sweeper demonstrates that logic games are a perfect playground for testing LLM reasoning capabilities. It's not just about winning; it's about seeing how different personalities approach the board.
Code and more: https://www.dailybuild.xyz/project/119-persona-sweeper
Top comments (0)