Overview
JourneeX came to us in the state most projects like this do: the team knew something wasn't working, but every function had a different theory about why.
We were brought in not to patch the symptom, but to rebuild the underlying flow: new instrumentation, a redesigned experience, and a technical foundation that could hold up as the product grew.
The Challenge
The blank page is intimidating. Most journaling apps are either too minimal or too feature-heavy, and neither addresses the core problem: writing into a void feels pointless. These were the specific challenges:
- Getting the AI tone right: early Claude responses read like clinical summaries, not a friend listening
- Building a full app inside a single index.html with no bundler, no framework, no build step
- Designing a native-feeling mobile experience entirely in vanilla CSS and JavaScript
- An API key was accidentally exposed during development and had to be revoked immediately
Cloudflare Workers runs at the edge in over 300 cities worldwide, which means users get a response from a server physically close to them. Combined with a single-file architecture, this makes load times dramatically faster than a traditional server setup.
Our Approach
The product philosophy was restraint. One job: write, get a thoughtful summary back. Everything else was deliberately left out.
1. The prompt is the product
The hardest work was not the code. It was the prompt. Multiple iterations were required to get Claude to write in natural, conversational prose under 250 words, without headers, without bullet points, in second person, the way a thoughtful friend would speak.
2. Single-file as a feature
Building everything into one index.html was intentional. Cloudflare Workers serves static assets extremely efficiently, and a single file means zero deployment complexity. Every decision had to be deliberate.
3. Mobile first, no framework
A bottom tab navigation system was designed and built from scratch in vanilla CSS and JavaScript to give the app a native feel on mobile without any framework overhead.
The insight behind JourneeX was simple: writing into a void feels pointless. What if your journal could write back not with affirmations, but with a genuine reflection of what you actually wrote?
Results
The AI summary experience works. In testing, summaries consistently felt warm and personal rather than clinical or generic.
- End-to-end journaling flow live: write, save, receive AI summary
- AI summaries consistently praised in testing for feeling warm and non-clinical
- Mobile bottom-tab navigation gives the app a native feel on all screen sizes
- Cold load time under 800ms globally via Cloudflare edge deployment
- Zero infrastructure cost at current scale
Key Takeaways
JourneeX taught me lessons that now inform every AI product decision I make.
The prompt is the product. In AI-powered products, the hardest work is not the code. It is figuring out exactly what to say to the model to get it to behave the way a human would. Tone, length, constraints: all of it matters enormously.
Constraints can be features. The single-file constraint forced every decision to be deliberate. There was no room for bloat. The result is an app that does one thing and does it well.
Security is not optional. An API key was accidentally exposed during development and had to be revoked immediately. A hard lesson, learned once. All secrets now live in Cloudflare Workers environment variables, never in code.
“This project taught me that in AI-powered products, the prompt is the product. Tone, word choice, constraints, length limits: all of it matters enormously. I also learned to respect the single-file constraint as a feature, not a limitation.
Neeraj Raisinghani, Builder, JourneeX