An open-source, AI-native journal for writing, remembering, connecting, and reflecting across your personal history.
Jouspace brings journaling, contextual memory, mood, and AI-assisted reflection into one continuous space — so what you write today can still be useful months from now.
🧭 Thesis · 🔁 Core Loop · ✨ Experiences · 🏛 Architecture · 🧠 Memory · 🚀 Quickstart · 🗺 Roadmap · ⭐ Star Graphs
|
Product |
Engineering |
Community |
|
Most journals are excellent at storing thoughts. The problem is that stored thoughts eventually become an archive. Something you wrote three months ago may perfectly explain what you're thinking today — but conventional journaling software rarely understands that relationship. |
AI chat has almost the opposite problem. It can be genuinely useful in the moment, yet without meaningful continuity every conversation risks becoming another isolated interaction. Yesterday's insight evaporates. The context resets. You start over. |
┌───────────────────────────────┐ ┌───────────────────────────────┐
│ TRADITIONAL JOURNAL │ │ TRADITIONAL AI CHAT │
│ │ │ │
│ Jan ▓ │ │ session ▢ ▢ ▢ ▢ ▢ ▢ ▢ │
│ Feb ▓ │ │ ↑ │
│ Mar ▓ ← never revisited │ │ └ no continuity │
│ Apr ▓ │ │ │
│ May ▓ │ │ "Remind me what we…" │
│ ↓ │ │ → context not found │
│ the archive │ │ │
└───────────────────────────────┘ └───────────────────────────────┘
╭──────────────────────────────╮
│ JOUSPACE │
│ │
│ Jan ▓──┐ │
│ Feb ▓──┼──▶ ⟨ context ⟩ ──┐ │
│ Mar ▓──┤ │ │
│ Apr ▓──┘ ▼ │
│ May ▓ ◀────── reflection ──┘ │
│ │
│ history that stays useful │
╰──────────────────────────────╯
Jouspace explores what happens when those two ideas are combined.
It treats your writing, conversations, mood context, and reflections as parts of a growing personal history. Instead of making AI the center of the experience, Jouspace makes your context the center — and the AI exists as a reflective layer over it.
Jouspace is built around a single conviction:
|
📄 should not become irrelevant the moment it leaves the top of a timeline. |
💬 should not automatically be disconnected from everything that came before it. |
🌤 should provide context — not merely become another point on a chart. |
Jouspace is designed to make accumulated history useful again.
flowchart LR
A(["✍️ WRITE<br/><sub>capture freely</sub>"]) --> B(["🧠 REMEMBER<br/><sub>persist context</sub>"])
B --> C(["🔗 CONNECT<br/><sub>surface relations</sub>"])
C --> D(["🪞 REFLECT<br/><sub>see yourself</sub>"])
D -. "new perspective" .-> A
classDef node fill:#0B1020,stroke:#8B5CF6,stroke-width:2px,color:#E9E9FF,rx:14,ry:14;
class A,B,C,D node;
| ✍️ Write | 🧠 Remember | 🔗 Connect | 🪞 Reflect |
|---|---|---|---|
|
Capture thoughts freely. Jouspace is designed around freeform writing first. AI prompts should support the writing process — never turn journaling into a questionnaire. |
Preserve useful context across time. Entries, conversations, and signals contribute to a persistent personal context instead of existing as disconnected records. |
Find relationships across your history. Past ideas, recurring themes, and emotional context become discoverable again exactly when they matter. |
Use AI to examine your own context. The goal is not to outsource thinking — it's to help you look back with more context than memory alone allows. |
| Surface | What it is | Role in the system | |
|---|---|---|---|
| 📓 | Journal | A persistent writing space built around freeform thought | The primary source of truth |
| 🤝 | AI Companion | Conversation connected to your broader context | User-initiated, context-aware |
| 🧠 | Memory | Persistent personal memory beyond chat history | Retrieval, not accumulation |
| 🔗 | Connections | Emergent relationships across your history | Discovery layer |
| 🌤 | Mood Context | A contextual signal, not the product itself | Enrichment |
| 🪞 | Reflection | Revisiting history with interpretation | Sits above raw storage |
📓 Journal — see the surface
┌──────────────────────────────────────────────────────────────────────────┐
│ Jouspace ▸ Journal ⌘K ◐ ⚙︎ │
├──────────────────────────────────────────────────────────────────────────┤
│ │
│ Tuesday, 14 March 🌤 steady · 6/10 │
│ ──────────────────────────────────────────────────────────────────── │
│ │
│ I keep circling the same decision about the project scope. It │
│ feels less like indecision and more like I haven't named what │
│ I'm actually afraid of yet.▊ │
│ │
│ │
│ ╭─ 🔗 Related from your history ─────────────────────────────────╮ │
│ │ • 18 Nov — "scope creep and the fear of finishing" 82% │ │
│ │ • 03 Jan — "I mistake preparation for progress" 74% │ │
│ ╰────────────────────────────────────────────────────────────────╯ │
│ │
│ [ Save ] [ 🪞 Reflect on this ] [ 🤝 Ask companion ] │
└──────────────────────────────────────────────────────────────────────────┘
Journal entries are not disposable documents. They become part of the historical context that makes future reflection more useful.
🤝 AI Companion — see the surface
┌──────────────────────────────────────────────────────────────────────────┐
│ Jouspace ▸ Companion context: 4 sources ⓘ │
├──────────────────────────────────────────────────────────────────────────┤
│ │
│ you ▸ why do I keep stalling on this? │
│ │
│ ◈ jouspace │
│ You've written about this shape of hesitation three times │
│ since November. Each time it appeared right before a │
│ commitment became public rather than private. │
│ │
│ ╭ drawn from ─────────────────────────────────────────────╮ │
│ │ 📓 18 Nov entry 📓 03 Jan entry 🌤 Mar mood window │ │
│ ╰──────────────────────────────────────────────────────────╯ │
│ │
│ Would it help to look at what changed the one time you │
│ didn't stall? │
│ │
│ ▸ type a message… [ send ] │
└──────────────────────────────────────────────────────────────────────────┘
The companion is primarily user-initiated and cites the context it used.
🧠 Memory & Connections — see the surface
RELEVANCE MAP ─ query: "fear of finishing"
18 Nov · scope creep ████████████████████░░░░ 0.82 📓
03 Jan · preparation ≠ progress ██████████████████░░░░░░ 0.74 📓
27 Feb · companion thread ████████████░░░░░░░░░░░░ 0.51 💬
09 Mar · mood dip window ████████░░░░░░░░░░░░░░░░ 0.34 🌤
─────────────────────────────────────────────────────────────────
retrieved: 3 · discarded: 1 (below threshold)
Retrieve what matters, when it matters. Not every stored event deserves permanent attention.
Jouspace is not simply a journal with an AI chat box attached to it. Its architecture is being developed around longitudinal context.
| 🗄 Conventional approach | ◈ Jouspace approach | |
|---|---|---|
| Entries | Become an archive | Contribute to persistent context |
| AI | Reacts to the current prompt | Reasons over relevant historical context |
| Mood | Is treated as the product | Acts as supporting context |
| Chat | Is the primary experience | Exists across the broader product |
| Memory | Means chat history | Means useful personal context |
| Engagement | AI constantly tries to engage | User agency remains central |
| Structure | Journaling built around prompts | Freeform writing comes first |
flowchart TB
subgraph L1[" "]
M["🪞 <b>MIRROR</b> — first<br/><sub>surface patterns, connections,<br/>contradictions, forgotten context</sub>"]
end
subgraph L2[" "]
C["🤝 <b>COMPANION</b> — second<br/><sub>conversation that emerges from context,<br/>not from artificial personality</sub>"]
end
subgraph L3[" "]
S["✒️ <b>SCRIBE</b> — third<br/><sub>organization, recall, summarization —<br/>without replacing the user's voice</sub>"]
end
M --> C --> S
classDef a fill:#1E1B4B,stroke:#8B5CF6,stroke-width:2px,color:#EDE9FE,rx:12,ry:12;
classDef b fill:#0B1020,stroke:#4F46E5,stroke-width:2px,color:#C7D2FE,rx:12,ry:12;
classDef c fill:#0B1020,stroke:#22D3EE,stroke-width:2px,color:#A5F3FC,rx:12,ry:12;
class M a
class C b
class S c
style L1 fill:none,stroke:none
style L2 fill:none,stroke:none
style L3 fill:none,stroke:none
What actually happens between "help me understand this" and a grounded answer:
sequenceDiagram
autonumber
participant U as 🧑 User
participant UI as 🖥 Experience Layer
participant CA as 🧩 Context Assembly
participant RT as 🔎 Retrieval
participant VDB as 🧠 Vector Memory
participant DB as 🗃 Application Data
participant AI as ◈ AI Runtime
U->>UI: Writes an entry / asks a question
UI->>CA: Submit intent + current surface state
CA->>DB: Fetch structured context (recent, mood, threads)
CA->>RT: Request semantically relevant history
RT->>VDB: Similarity search (scoped to user)
VDB-->>RT: Candidate memories + scores
RT-->>CA: Filtered, thresholded, ranked set
CA->>AI: Minimal, relevant, attributable context window
AI-->>UI: Response + source attribution
UI-->>U: Reflection with visible provenance
Note over CA,RT: Selective retrieval — not the entire history
Jouspace deliberately separates the product experience from the intelligence and persistence layers.
flowchart TB
subgraph Experience["🖥 EXPERIENCE LAYER"]
direction LR
JOURNAL["📓 Journal"]
CHAT["🤝 AI Companion"]
MOOD["🌤 Mood Context"]
REFLECTION["🪞 Reflection"]
end
subgraph Intelligence["◈ INTELLIGENCE LAYER"]
direction LR
RUNTIME["AI Runtime"]
CONTEXT["Context Assembly"]
RETRIEVAL["Context Retrieval"]
MEMORY["Personal Memory"]
end
subgraph Data["🗃 DATA LAYER"]
direction LR
SUPABASE["Supabase<br/><sub>app data · auth</sub>"]
PINECONE["Pinecone<br/><sub>vectors · semantics</sub>"]
STORAGE["Persistent<br/>Application Data"]
end
JOURNAL --> CONTEXT
CHAT --> RUNTIME
MOOD --> CONTEXT
REFLECTION --> CONTEXT
RUNTIME --> CONTEXT
CONTEXT --> RETRIEVAL
RETRIEVAL --> MEMORY
MEMORY --> PINECONE
CONTEXT --> SUPABASE
JOURNAL --> STORAGE
RETRIEVAL --> RUNTIME
RUNTIME --> CHAT
RUNTIME --> REFLECTION
classDef exp fill:#0B1020,stroke:#22D3EE,stroke-width:2px,color:#A5F3FC,rx:10,ry:10;
classDef intel fill:#0B1020,stroke:#8B5CF6,stroke-width:2px,color:#DDD6FE,rx:10,ry:10;
classDef data fill:#0B1020,stroke:#10B981,stroke-width:2px,color:#A7F3D0,rx:10,ry:10;
class JOURNAL,CHAT,MOOD,REFLECTION exp
class RUNTIME,CONTEXT,RETRIEVAL,MEMORY intel
class SUPABASE,PINECONE,STORAGE data
style Experience fill:#0B102055,stroke:#22D3EE44,stroke-width:1px
style Intelligence fill:#0B102055,stroke:#8B5CF644,stroke-width:1px
style Data fill:#0B102055,stroke:#10B98144,stroke-width:1px
The important distinction: memory, retrieval, and generation are separate concerns. This makes it possible to retrieve relevant context selectively, instead of treating every previous interaction as permanent prompt baggage.
A useful personal AI system needs more than a long chat transcript. Conceptually, Jouspace treats memory as a pipeline.
flowchart LR
A["🧑 User Activity<br/><sub>entries · chats · mood</sub>"] --> B["⚙️ Context Processing<br/><sub>normalize · chunk · embed</sub>"]
B --> C["🗃 Persistent Data<br/><sub>structured, queryable</sub>"]
B --> D["🧠 Retrievable Memory<br/><sub>semantic vectors</sub>"]
C --> E["🧩 Context Assembly"]
D --> F["🔎 Semantic Retrieval"]
E --> G["◈ AI Runtime"]
F --> G
G --> H["🪞 Contextual Response<br/>/ Reflection"]
classDef n fill:#0B1020,stroke:#8B5CF6,stroke-width:1.6px,color:#E9E9FF,rx:10,ry:10;
class A,B,C,D,E,F,G,H n;
pie showData
title Illustrative context window composition
"Semantically retrieved history" : 38
"Recent journal entries" : 24
"Active conversation" : 18
"Mood / temporal signals" : 12
"System framing" : 8
The Jouspace surface is intentionally quiet: ink-dark canvas, low-noise typography, one accent of intelligence.
| Principle | In practice |
|---|---|
| Quiet canvas | Nothing competes with the sentence you're writing |
| Provenance visible | Whenever AI uses your history, the source is shown |
| Motion with meaning | Transitions signal continuity, never decoration |
| Type as texture | A single serif/mono pairing carries the whole surface |
| Accessible by default | Contrast, focus rings, and reduced-motion are requirements |
Jouspace is being built as a full-stack AI product, not a thin interface around a model API.
| 🖥 Application | 🧠 Data & Intelligence | 🧪 Engineering |
|---|---|---|
|
|
|
The project is evolving, but the repository broadly separates product surfaces, shared logic, backend infrastructure, AI services, and supporting scripts.
Jouspace/
│
├── 📁 src/ # Web application and shared product code
├── 📁 app/ # Application routes / experiences
├── 📁 components/ # Reusable interface components
├── 📁 backend/ # Backend and AI infrastructure
├── 📁 scripts/ # Development and infrastructure utilities
├── 📁 docs/ # Technical and product documentation
├── 📁 public/ # Public assets
│
├── 📄 package.json
└── 📄 README.md
ℹ️ The exact structure may evolve as the Jouspace migration and architecture continue to mature.
node --version # v20+
npm --version
git --versiongit clone https://github.com/datascyther/Jouspace.git
cd Jouspacenpm installJouspace relies on external services for parts of its data and intelligence infrastructure. Create your local environment configuration from the templates and documentation in the repository.
⚠️ Never commit secrets or API keys to source control.
npm run dev # start the Vite development server
npm run build # create a production build
npm run preview # preview the production build📱 Running the native app (Expo)
npm run dev:expo # start the Expo development environment
npm run android # run on Android
npm run ios # run on iOS
npm run web:expo # Expo web target🧠 Initializing memory & retrieval infrastructure
npm run rag:ingest # run the RAG ingestion workflow
npm run pinecone:describe # inspect Pinecone configuration
npm run pinecone:stats # inspect index statistics| Command | Purpose |
|---|---|
npm run dev |
Start the Vite development server |
npm run build |
Create the production web build |
npm run preview |
Preview the production build |
npm run test |
Run the test suite |
npm run test:integration |
Run backend integration tests |
npm run dev:expo |
Start the Expo development environment |
npm run android |
Run the Android application |
npm run ios |
Run the iOS application |
npm run web:expo |
Start the Expo web target |
npm run rag:ingest |
Run the RAG ingestion workflow |
npm run pinecone:describe |
Inspect Pinecone configuration |
npm run pinecone:stats |
Inspect Pinecone index statistics |
Seven constraints that shape both product and engineering decisions.
|
01 · Journal first Writing should remain useful without requiring an AI interaction. 02 · Context over conversation volume A system that remembers meaningfully doesn't need to talk constantly. 03 · User agency The AI should not manufacture engagement merely because it can. 04 · Memory should be selective More stored information does not automatically produce better intelligence. Relevant retrieval matters more than maximum retrieval. |
05 · AI should support reflection Jouspace should help you think with your own history — not attempt to think for you. 06 · Mood is context Mood can enrich understanding without turning Jouspace into a mood-tracking product. 07 · Privacy is architectural Personal context is unusually sensitive data. Privacy, ownership, retrieval boundaries, and secure handling are engineering concerns, not marketing copy. |
Jouspace is an experimental open-source AI product focused on journaling, personal context, memory, and reflection. If you are in crisis, please contact local emergency services or a qualified professional.
Jouspace is under active development. The project is evolving from an earlier product direction into the Jouspace architecture and identity.
CONVERSATIONAL AI ████████████████████░░░░ built · refining
CONTEXTUAL RETRIEVAL ██████████████████░░░░░░ built · refining
PERSONAL MEMORY ██████████████░░░░░░░░░░ in progress
JOURNALING SURFACE ████████████████░░░░░░░░ in progress
MOOD HISTORY ██████████████████░░░░░░ foundation done
AUTHENTICATION ██████████████████████░░ stable
APP INFRASTRUCTURE ████████████████████░░░░ stable
CROSS-PLATFORM UI ████████████░░░░░░░░░░░░ maturing
AI ORCHESTRATION ████████████████░░░░░░░░ in progress
IDENTITY MIGRATION ██████████░░░░░░░░░░░░░░ underway
Current work focuses on integrating existing systems around the new product thesis — not rebuilding the application for the sake of a rebrand.
⚠️ APIs, interfaces, architecture, and product behavior may change while the project matures.
gantt
title Jouspace — outcome-oriented roadmap
dateFormat YYYY-MM-DD
axisFormat %b
section Foundation
Product thesis & journal-first direction :done, f1, 2024-11-01, 60d
Conversational AI foundation :done, f2, 2024-12-01, 75d
Contextual retrieval infrastructure :done, f3, 2025-01-01, 70d
Persistent data infrastructure :done, f4, 2025-01-15, 60d
Mood history foundation :done, f5, 2025-02-01, 45d
section Jouspace Identity
Identity migration :active, i1, 2025-03-01, 70d
Journal experience refinement :active, i2, 2025-03-15, 80d
section Continuity
Journal history → contextual memory : c1, 2025-05-01, 70d
Longitudinal retrieval quality : c2, 2025-06-01, 70d
Connection discovery : c3, 2025-07-01, 80d
Expanded reflection experiences : c4, 2025-08-01, 70d
section Trust & Scale
Privacy and data controls : t1, 2025-06-15, 90d
Automated evaluation & testing : t2, 2025-07-15, 90d
Mature cross-platform experience : t3, 2025-09-01, 90d
✅ Roadmap as a checklist
- Establish Jouspace product thesis
- Define journal-first product direction
- Build conversational AI foundation
- Build contextual retrieval infrastructure
- Establish persistent data infrastructure
- Implement mood history foundation
- Complete Jouspace identity migration
- Refine journal experience
- Connect journal history to contextual memory
- Improve longitudinal retrieval
- Develop connection discovery
- Expand reflection experiences
- Strengthen privacy and data controls
- Expand automated evaluation and testing
- Mature cross-platform experience
The roadmap is intentionally outcome-oriented. Features may change as the underlying product model is tested.
flowchart LR
O["🎯 Objective"] --> I["⌨️ Implement"] --> V["🔍 Verify"] --> T["🧪 Test"] --> C["📦 Commit"] --> N["➡️ Continue"]
N -.-> O
classDef s fill:#0B1020,stroke:#22D3EE,stroke-width:2px,color:#A5F3FC,rx:12,ry:12;
class O,I,V,T,C,N s;
Large architectural rewrites are avoided when existing engineering can be evolved safely.
The repository is intended to document not only the final product, but also the engineering decisions required to build a context-aware AI application responsibly.
Contributions, technical discussion, bug reports, and thoughtful product feedback are genuinely welcome.
Development workflow
# 1 · Fork, then branch
git checkout -b feature/your-feature
# 2 · Make your changes, then verify
npm run test
npm run build
# 3 · Commit with a clear, conventional message
git commit -m "feat: describe your change"
# 4 · Push and open a Pull Request
git push origin feature/your-featureYour PR description should explain:
| What | changed |
| Why | it changed |
| How | it was tested |
| Impact | any architectural implications |
For substantial architectural changes, please open an issue for discussion before implementation.
Do not report security vulnerabilities through public GitHub issues.
- Sensitive credentials, API keys, private user information, environment files, and production secrets must never be committed.
- When working with Jouspace's memory and context systems, assume that stored personal information is sensitive and design accordingly.
- Retrieval must always be scoped to the owning user. Cross-user leakage is treated as a critical defect.
Jouspace deals with personal writing and contextual information, which creates responsibilities beyond ordinary application development.
|
|
If Jouspace is useful to you, starring the repository helps other developers discover the project — and gives us a pleasantly primitive but highly effective signal that someone on the internet cared.
📈 More star & growth visualizations
Cumulative stargazers (Starchart)
Repository pulse — commits, issues, PRs & contributors
Contribution activity graph
Is my journal data sent to an AI model on every request?
No. Context is assembled selectively. Retrieval is thresholded and ranked, and only relevant, scoped context reaches the model. Maximum retrieval is explicitly an anti-goal.
Can I use Jouspace purely as a journal, with no AI?
Yes — that is principle #1. Writing must remain useful without any AI interaction. AI is a layer over your context, never a gate in front of it.
How is this different from an AI chatbot with long-term memory?
Chat is one surface, not the product. Jouspace's center of gravity is your writing and the accumulated context around it — journal, mood, reflections, and connections — with chat as one of several ways to interrogate that history.
Is mood tracking required?
No. Mood is a contextual signal that enriches retrieval and reflection. Jouspace is deliberately not a mood-tracking product.
Is Jouspace production-ready?
Not yet. It is under active development and migrating from an earlier product direction. Expect interfaces and behavior to change.
This project is licensed under the terms provided in the repository's LICENSE file.
Please review the license before redistributing, modifying, or incorporating Jouspace into another project.