Skip to content

Latest commit

Β 

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

⚠️ DISCONTINUED β€” This project is no longer maintained and is incomplete.

Distill

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.


Table of Contents


Vision & Mission

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."


The Problem

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

Key Pain Points

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

Target Users

  • 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

The Solution

Distill transforms Ambiguous Ideas into Structured Thinking β†’ Validated Direction β†’ Actionable Project.

Messy Thoughts
      ↓
Structured Thinking
      ↓
Validated Direction
      ↓
Actionable Project

What Distill IS

  • 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

What Distill is NOT

  • ❌ 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

Product Philosophy

  1. AI Guides, Not Replaces β€” The final decision always belongs to the user
  2. Questions Before Answers β€” AI asks more questions than it gives answers
  3. Evidence Over Opinion β€” Every recommendation is grounded in evidence
  4. Distill, Don't Expand β€” Narrow the solution space instead of expanding it
  5. Visual Thinking β€” Reasoning can be seen, not just read
  6. Human-in-the-Loop β€” Users confirm, correct, and validate every insight
  7. Transparency Over Magic β€” Users can see how the AI reached its conclusions
  8. Confidence Is Earned β€” The AI acknowledges uncertainty when evidence is weak

Core Mechanisms

1. Stage-Based Reasoning (10-Stage Thinking Flow)

πŸ’‘ 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.

2. Thinking Canvas (Guided Thinking Workspace)

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

3. Distillation Engine

Gradually reduces complexity through 5 phases:

  1. Collection β€” Gather all ideas, pain points, assumptions without filtering
  2. Clustering β€” Group similar items, identify duplications
  3. Validation β€” Flag weak assumptions, prioritize evidence-backed items
  4. Convergence β€” Select the most valid direction, discard irrelevant options
  5. Synthesis β€” Summarize into a single insight with confidence score

4. Impact Detection & Consistency

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.

5. Confidence Scoring

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

Product Output

Project Blueprint

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

Tech Stack

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

System Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         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)   β”‚                         β”‚
β”‚                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

AI Reasoning Flow (Per Turn)

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

Project Structure

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)

Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn
  • Google Gemini API key

Installation

# 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 dev

Development

The frontend dev server runs on http://localhost:5173 and the backend API on http://localhost:10000.

Build for Production

npm run build
npm start

Deployment (Render)

  1. Connect your GitHub repository to Render
  2. Set build command: npm install && npm run build
  3. Set start command: npm start
  4. Add environment variables:
    • GEMINI_API_KEY (secret)
    • NODE_ENV=production

API Endpoints

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

Development Roadmap

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

Documentation

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

License

This project is part of a AI Builders Challenge with IBM Bob MVP. All rights reserved.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages