β οΈ DISCONTINUED β This project is no longer maintained and is incomplete.
From Ambiguity to Action.
Distill is an AI Creative Reasoning Companion that helps first-time builders transform ambiguous ideas into validated project directions through a structured discovery process.
Unlike chatbots or AI idea generators, Distill does not focus on generating more ideas. Instead, it helps users understand, validate, and commit to a single project direction worth building.
- Vision & Mission
- The Problem
- The Solution
- Core Mechanisms
- Product Output
- Tech Stack
- System Architecture
- Project Structure
- Getting Started
- Development Roadmap
- Documentation
Vision: Helping people think before they build.
Mission: Provide an AI-guided reasoning workflow that transforms ambiguous ideas into validated project decisions.
North Star Metric: The moment when users say "Now I know what I actually need to build."
First-time builders frequently fail to move from ideas to implementation because they become trapped in an unstructured discovery process:
I have an idea β I'm not sure what the problem is β Search for references β Compare
β Discuss with AI β Still confused β Search for more references β Add more features
β Still not confident β Never start building
| Pain Point | Description |
|---|---|
| Vague Ideas | "I have an idea for an education app" β but don't know for whom or what problem it solves |
| Too Many Solutions | Analysis paralysis from too many alternatives |
| Assumptions vs Facts | Assumptions treated as facts without validation |
| No Progress Tracking | No way to see how far discovery has progressed |
| Fear of Commitment | Fear of choosing the wrong direction |
| Never Reaching MVP | The discovery process never finishes |
- Students β Thesis projects, research, campus startups
- Hackathon Participants β Need clear direction in a short time
- Capstone Students β Final projects with limited time
- Junior Founders β First-time founders with many ideas
- Beginner Indie Builders β Solo builders experiencing analysis paralysis
Distill transforms Ambiguous Ideas into Structured Thinking β Validated Direction β Actionable Project.
Messy Thoughts
β
Structured Thinking
β
Validated Direction
β
Actionable Project
- AI Creative Reasoning Companion β Guides users through structured discovery
- Thinking Canvas β Visual representation of discovery progress
- Distillation Engine β Reduces complexity until only valid insights remain
- β ChatGPT Clone / AI Chatbot
- β AI Idea Generator / Brainstorming Tool
- β Business Planner / Business Model Canvas
- β Project Management Tool (Notion, Jira, Linear)
- β Collaboration Platform (Miro, Confluence)
- β Coding Assistant
- AI Guides, Not Replaces β The final decision always belongs to the user
- Questions Before Answers β AI asks more questions than it gives answers
- Evidence Over Opinion β Every recommendation is grounded in evidence
- Distill, Don't Expand β Narrow the solution space instead of expanding it
- Visual Thinking β Reasoning can be seen, not just read
- Human-in-the-Loop β Users confirm, correct, and validate every insight
- Transparency Over Magic β Users can see how the AI reached its conclusions
- Confidence Is Earned β The AI acknowledges uncertainty when evidence is weak
π‘ Idea βββββββΊ What do you want to build?
β
βΌ
π€ User βββββββΊ Who is experiencing the problem?
β
βΌ
π Workflow ββββΊ How does their current process look?
β
βΌ
β Pain Point βββΊ Which part is the most difficult/frustrating?
β
βΌ
π± Root Cause βββΊ Why does this problem occur?
β
βΌ
β Assumption βββΊ What do we assume to be true but haven't validated yet?
β
βΌ
π Evidence ββββΊ What evidence supports this?
β
βΌ
β¨ Opportunity ββΊ What opportunity emerges?
β
βΌ
β
Decision βββββΊ What final decision is made?
β
βΌ
π MVP ββββββββββΊ What is a realistic MVP scope?
The user does not select the stage. The AI automatically determines the stage based on the conversation content.
A card-based visual workspace that is automatically populated by the AI based on conversation:
- 10 stage-based cards with icons and status indicators
- 3 states per card: Not Started (βͺ), In Progress (π‘), Completed (π’)
- 4-section detail: Summary β Confirmed β Needs Validation β Next Step
- Real-time updates β every user message triggers a canvas update
- No manual editing β all changes occur through chat
Gradually reduces complexity through 5 phases:
- Collection β Gather all ideas, pain points, assumptions without filtering
- Clustering β Group similar items, identify duplications
- Validation β Flag weak assumptions, prioritize evidence-backed items
- Convergence β Select the most valid direction, discard irrelevant options
- Synthesis β Summarize into a single insight with confidence score
When a user changes a decision, the AI automatically detects its impact on other stages and flags them for review, maintaining consistency across the entire canvas.
Each insight carries a transparent confidence score:
- High (80-100%) β Strong evidence, consistent
- Medium (50-79%) β Some evidence, needs validation
- Low (0-49%) β Based on assumptions
- Needs Validation β No data available yet
The final output is a Project Blueprint β a handoff document ready for planning and development:
| # | Component | Description |
|---|---|---|
| 1 | Project Name | Name of the project |
| 2 | Problem Statement | Validated problem description |
| 3 | Primary User | Target user persona |
| 4 | Workflow | Current user workflow |
| 5 | Core Pain Point | Validated main pain point |
| 6 | Root Cause | Underlying cause of the problem |
| 7 | Key Evidence | Evidence supporting the findings |
| 8 | Opportunity | The opportunity identified |
| 9 | Decision | Final decision made |
| 10 | MVP Scope | Minimum viable product features |
| 11 | Next Validation | Steps to validate further |
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | React 18 + Vite | SPA with 3-panel layout |
| Styling | Tailwind CSS | Utility-first styling |
| Routing | React Router | Project list β workspace navigation |
| State UI | Zustand | Lightweight state management |
| Backend | Express.js | REST API server |
| Database | SQLite | Single-file, zero-config storage |
| AI | Gemini API (Google) | Single LLM with stage-based prompts |
| Deployment | Render | Auto-deploy from GitHub |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β RENDER (Cloud) β
β β
β βββββββββββββββββββββββ βββββββββββββββββββββββββββββββ β
β β Static Site β β Web Service β β
β β (Frontend) βββββββΊβ (Backend + SQLite) β β
β β β β β β
β β React + Vite β β Express.js β β
β β Tailwind CSS β β SQLite (file) β β
β β Zustand β β Gemini API client β β
β βββββββββββββββββββββββ βββββββββββββββββββββββββββββββ β
β β β β
β β HTTPS (REST) β β
β ββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β βββββββββββββββββββ β
β β Google Gemini β β
β β API (v1beta) β β
β βββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
User Message
β
βΌ
βββββββββββββββββββ ββββββββββββββββββββ
β Context Save β β Save User Msg β
β + Compression β β to SQLite β
βββββββββββββββββββ ββββββββββββββββββββ
β
βΌ
βββββββββββββββββββ
β Prompt A β β Gemini β Structured JSON (canvas updates)
β Extraction β
βββββββββββββββββββ
β
βΌ
βββββββββββββββββββ
β Merge + Impact β β Canvas state updated in SQLite
β Detection β
βββββββββββββββββββ
β
βΌ
βββββββββββββββββββ
β Contradiction β β Detect conflicts between stages
β Detection β
βββββββββββββββββββ
β
βΌ
βββββββββββββββββββ
β Mode Engine β β Select conversation mode
β + Target Stage β (clarifying, reflection, etc.)
βββββββββββββββββββ
β
βΌ
βββββββββββββββββββ
β Prompt B β β Gemini β Natural response
β Conversation β
βββββββββββββββββββ
β
βΌ
βββββββββββββββββββ
β Save AI Msg β
β + Confidence β
βββββββββββββββββββ
β
βΌ
Response to user + updated canvas
distill/
βββ package.json # Root: build + start scripts
βββ vite.config.js # Frontend build config
βββ tailwind.config.js # Tailwind config
βββ index.html # HTML entry
βββ src/ # Frontend (React)
β βββ main.jsx
β βββ App.jsx
β βββ store/
β β βββ useProjectStore.js
β βββ components/
β β βββ Layout.jsx
β β βββ ChatPanel.jsx
β β βββ CanvasPanel.jsx
β β βββ CanvasCard.jsx
β β βββ DetailPanel.jsx
β β βββ BlueprintModal.jsx
β β βββ ProjectList.jsx
β βββ hooks/
β β βββ useChat.js
β βββ api/
β βββ client.js
βββ server/ # Backend (Express)
β βββ index.js
β βββ db.js
β βββ routes/
β β βββ projects.js
β β βββ chat.js
β β βββ blueprint.js
β βββ services/
β β βββ aiService.js
β β βββ canvasService.js
β β βββ blueprintService.js
β β βββ confidenceEngine.js
β β βββ contradictionEngine.js
β β βββ modeEngine.js
β β βββ progressEngine.js
β β βββ promptComposer.js
β βββ prompts/
β βββ system.js
β βββ extract.js
β βββ converse.js
β βββ reflect.js
β βββ distill.js
β βββ summarize.js
β βββ blueprint.js
βββ docs/ # Documentation
β βββ 00-project-overview.md
β βββ 01-problem-analysis.md
β βββ 02-solution-overview.md
β βββ 03-business-process.md
β βββ 04-functional-requirement.md
β βββ 05-database-design.md
β βββ 06-system-design.md
β βββ 07-ai-design.md
β βββ 08-api-design.md
β βββ 09-project-management.md
βββ dist/ # Build output (auto-generated)
- Node.js 18+
- npm or yarn
- Google Gemini API key
# Clone the repository
git clone https://github.com/Andrian206/distill.git
cd distill
# Install dependencies
npm install
# Set up environment variables
export GEMINI_API_KEY=your_api_key_here
export PORT=10000
# Start development server
npm run devThe frontend dev server runs on http://localhost:5173 and the backend API on http://localhost:10000.
npm run build
npm start- Connect your GitHub repository to Render
- Set build command:
npm install && npm run build - Set start command:
npm start - Add environment variables:
GEMINI_API_KEY(secret)NODE_ENV=production
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/projects |
Create a new project |
GET |
/api/projects |
List all projects |
GET |
/api/projects/:id |
Get project with full canvas |
DELETE |
/api/projects/:id |
Delete a project |
POST |
/api/chat |
Send message, get AI response + canvas updates |
GET |
/api/chat/:project_id |
Get chat history |
GET |
/api/blueprint/:project_id/preview |
Preview blueprint (read-only) |
POST |
/api/blueprint/:project_id |
Generate & save blueprint (requires {approve: true}) |
GET |
/api/blueprint/:project_id |
Get existing blueprint |
GET |
/api/health |
Service health check |
Week 1 Week 2 Week 3 Week 4
β β β β
βΌ βΌ βΌ βΌ
βββββββββββ βββββββββββ βββββββββββ βββββββββββ
β Sprint 1β β Sprint 2β β Sprint 3β β Sprint 4β
β Setup + β β Core β β AI + β β Polish +β
β UI Shellβ β Chat + β β Canvas β β Demo β
β β β Canvas β β Reasoningβ β β
βββββββββββ βββββββββββ βββββββββββ βββββββββββ
- Sprint 1: Init repo, Vite + React + Tailwind, SQLite schema, Express server, 3-panel layout, deploy to Render
- Sprint 2: ChatPanel UI, CanvasPanel with 10 cards, DetailPanel, Zustand store, POST /chat endpoint (mock AI)
- Sprint 3: Gemini API client, Prompt A (extraction), Prompt B (conversation), canvas auto-update, impact detection, distillation, blueprint generation
- Sprint 4: Blueprint modal, empty state/onboarding, error handling, demo script, bug fixes, final deploy
All project documentation is available in the docs/ directory:
| Document | Description |
|---|---|
| 00-project-overview.md | Project overview, vision, mission, scope |
| 01-problem-analysis.md | Problem analysis, pain points, root causes |
| 02-solution-overview.md | Solution architecture, core mechanisms |
| 03-business-process.md | Business process flow, state machine |
| 04-functional-requirement.md | 31 functional requirements across 7 modules |
| 05-database-design.md | Database schema (SQLite), ERD, query patterns |
| 06-system-design.md | System architecture, component breakdown, deployment |
| 07-ai-design.md | AI architecture, prompts, reasoning flow |
| 08-api-design.md | REST API endpoints, request/response schemas |
| 09-project-management.md | Sprint plan, task board, risk mitigation |
This project is part of a AI Builders Challenge with IBM Bob MVP. All rights reserved.