Skip to content

GAURAV-1313/Friction

Repository files navigation

FRICTION"Users do NOT think while confused. "FRICTION is a minimalist productivity ecosystem designed to bridge the gap between raw information capture and meaningful insight. It operates on the principle of delayed intelligence: capturing "friction moments" (confusions, sparks, or patterns) instantly without interrupting your flow, then using AI to analyze those patterns in deliberate batches.0. Product PhilosophyCapture Instantly, Analyze Later: Zero-friction capture during study/work.Systemic Silence: AI acts as a silent analyst, not a proactive teacher or distractor.Patterns Over Moments: Insights emerge from the aggregation of data over time, not isolated events.Logical Boundary: $Raw Data \neq Interpreted Data$. We preserve context until you are ready to reflect.1. High-Level ArchitectureFRICTION follows a Capture-Process-Review lifecycle:Capture (Extension): Buffers raw text and URLs via keyboard shortcuts.Orchestrate (Backend): Manages the buffer and triggers snapshots (manual or scheduled).Analyze (LLM): Gemini v1 processes batches of moments to identify "Candidate Findings."Review (Web App): Users confirm, defer, or reject AI-generated insights.Persist (Stable Memory): Validated findings become permanent "Learning Records."2. Component OverviewComponentResponsibilityTech StackChrome ExtensionCapture Layer: Keyboard-driven raw text buffering. Zero interpretation.Manifest v3Backend APILogic Layer: Google OAuth, snapshot orchestration, and LLM prompt management.Express.js, Node-cronWeb AppReflection Layer: Dashboard for reviewing findings and trend reports.React, Tailwind CSSDatabasePersistence Layer: Relational storage for moments and records.MySQLAI LayerAnalysis Layer: Batch processing of text into categorized patterns.Gemini v13. Data SchemaRaw Buffer (Uninterpreted)SQL{ moment_id: CHAR(36), user_id: CHAR(36), raw_text: TEXT, source_type: ENUM('highlight','bulk_paste'), source_url: TEXT NULL, status: ENUM('pending','processed'), created_at: TIMESTAMP } Candidate Findings (AI Output)SQL{ finding_id: CHAR(36), snapshot_id: CHAR(36), type: ENUM('confusion','insight','fragile_understanding','pattern'), topic: VARCHAR(255), evidence_moment_ids: JSON, state: ENUM('unreviewed','confirmed','deferred','rejected') } 4. State TransitionsThe system treats data as a stream that gains stability as it moves through the pipeline:Buffer Moments: pending $\rightarrow$ processed (Deleted after snapshot).Findings: unreviewed $\rightarrow$ confirmed | deferred | rejected.Records: Created/updated only upon confirmation or deferral.5. API ContractExtensionPOST /api/moments: Send raw text and metadata.Snapshot LogicPOST /api/snapshots/run: Trigger LLM batch analysis (Max 30 moments per call).Web InteractionGET /api/findings?state=unreviewed: Fetch findings for dashboard.POST /api/findings/:id/confirm: Strengthen a Learning Record.DELETE /api/findings/:id: Permanently reject/delete a finding.6. Development Constraints (V1)No RAG: Pure batch analysis for V1.No Auto-Teaching: The system identifies what you are struggling with, not the solution.No Anonymity: Google OAuth is required for all capture events.7. Success MetricV1 is successful if a user says:"This surfaced a pattern I didn't realize."Since you've defined the system as "Authoritative" with non-negotiable data models, do you want me to generate the specific SQL migration scripts or the Sequelize/TypeORM models to match this schema?

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors