01 / Subject file

Saúl Martí_

Lead Developer Valencia

Building software. Exploring ideas. Following curiosity.

  • Web
  • Mobile
  • Architecture
  • Developer Tools
  • AI
  • Agents

I keep coming back to the same question: what happens when thinking, implementation, review and delivery stop being one blurred responsibility and become distinct parts of the same workflow?

Better models help, but better process can matter just as much. I’m interested in making each phase easier to understand, measure and control — adding structure around systems that are inherently unpredictable without pretending they can ever become fully deterministic.

[ FILE: OBSESSION.MD ]

03 / Archive

Experiments_

Most started because I wanted to understand something.
Not all of them needed to become products.

SpecRail A workflow layer for making coding agents more verifiable, efficient and predictable. 2026

WHY

Coding agents were getting increasingly capable, but verifying what they had actually done still felt surprisingly weak. I wanted to explore whether planning, implementation, review and delivery could be treated as explicit stages instead of one continuous conversation — while also paying attention to evidence, cost, tokens and rework.

WHAT HAPPENED

It started as a way to verify coding-agent work and keeps expanding into the workflow around it.

I’m trying to make coding agents predictable enough to trust without pretending the models themselves are deterministic.

The project keeps moving toward a stricter system for planning, implementation, evidence, review and cost control.

LEARNED

Better models don't remove the need for better process.

Deterministic structure matters most when the system itself is unpredictable.

Evidence, cost and handoffs matter as much as code generation.

STACK

TypeScript · Node.js · CLI · npm
Agent Loop An experiment in persistent AI agents with memory, tools and per-user context. 2026

WHY

I wanted to explore what a genuinely persistent agent would look like: multiple users, individual context, long-term memory, tools and MCP integrations, while keeping as much of the system local-first as possible.

WHAT HAPPENED

The system grew too quickly once memory, tools, users and context all had to work together.

The architecture needed more research before it made sense to keep adding features.

SpecRail became the more focused problem worth solving first.

LEARNED

Agent systems get complicated very quickly once memory, tools and users interact.

STACK

TypeScript · Node.js · PostgreSQL · MCP
Guitar Tabs An experiment in making guitar tabs more interactive and useful. 2026

WHY

I wanted a better way to consult and organize guitar tabs, with a representation of songs and chords that felt more useful than a static page.

WHAT HAPPENED

There was no blocker. I just stopped caring enough to keep pushing it.

LEARNED

Organizing information well can matter more than adding features.

STACK

Next.js · TypeScript
IDEAL An attempt to build a Cursor-like IDE with more customizable agents and powerful local AutoTab. 2026

WHY

I wanted to explore what an AI-native IDE could look like if agent behavior were much more customizable and fast code completion could run locally instead of depending entirely on cloud models.

WHAT HAPPENED

The idea kept expanding until maintaining an entire editor ecosystem became the project.

A full Code-OSS fork was too expensive to maintain for the questions I actually wanted to explore.

LEARNED

Building the whole product is not always necessary to validate the idea.

Maintaining an IDE is an ecosystem problem, not just an editor problem.

AI-native workflows matter more than owning the entire IDE.

STACK

Code-OSS · TypeScript · Rust · LSP · Tree-sitter
Narrative Game Prototype A narrative game experiment inspired by Hotel Dusk. 2026

WHY

I love Hotel Dusk and wanted to understand what made part of its experience work: narrative, dialogue, presentation and the relationship between mechanics and atmosphere.

WHAT HAPPENED

Recreating the atmosphere required far more art, animation and content than expected.

LEARNED

Visual identity can be as expensive as gameplay.

Recreating a feeling is harder than recreating a mechanic.

STACK

Unity · C#
PDF Podcast Turn long PDFs into something easier to listen to. 2026

WHY

I wanted to turn long documents into something easier to consume without sitting down to read everything — automatically transforming a PDF into a conversation or podcast that could be used for studying or review.

WHAT HAPPENED

The core idea worked, but the generated experience was not good enough to justify the complexity.

Existing products already solve much of the problem, so it needs a much stronger angle before I keep building.

The cost of generating high-quality audio made the idea harder to justify as a side project.

LEARNED

Turning information into audio is easy. Making the audio worth listening to is not.

Existing products raise the bar: a side project needs a real angle, not just the same feature.

STACK

Next.js · Node.js · OpenAI
Mindflow A personal workspace where notes, tasks, documents, calendar and chat shared context. 2026

WHY

Routime and NoteMeet kept pointing toward the same idea: information becomes more useful when calendars, notes, documents, tasks and conversations stop living in isolation.

Mindflow was an attempt to bring those pieces into one personal workspace with shared context.

WHAT HAPPENED

The scope kept expanding until it became closer to a personal operating system than a side project.

Combining calendar, notes, documents, tasks and chat made the product much harder to keep coherent.

The idea still makes sense, but the amount of work required stopped matching its current priority.

LEARNED

A personal knowledge system becomes an operating system very quickly.

Centralizing context is powerful, but scope explodes fast.

The more tools you unify, the harder coherence becomes.

STACK

Flutter · Cloudflare Workers · Cloudflare D1 · Cloudflare R2 · Cloudflare Vectorize · Cloudflare AI Search
P2P Transfer Prototype A peer-to-peer file transfer experiment between two devices. 2025

WHY

I wanted a simple way to transfer files directly between devices without putting them in the cloud — partly as an alternative to services like WeTransfer and partly as an excuse to explore direct device communication.

WHAT HAPPENED

The technical proof worked, but turning it into a reliable product meant dealing with networking constraints, NATs, firewalls and edge cases that existing products already handled well enough.

The experiment had answered the question I started with.

LEARNED

Proving the technical idea is very different from turning it into a reliable product.

STACK

Next.js · SSR · SQLite
Routime A chat that remembered routines, events and personal dates. 2025

WHY

I wanted to ask natural questions about the small pieces of information I usually forget — events, routines, dates or things like someone’s birthday — instead of manually navigating calendars and lists.

WHAT HAPPENED

Routime stopped making sense as a standalone product once the idea expanded into Mindflow.

LEARNED

Memory only becomes useful when it can be queried naturally.

A reminder system gets much more interesting when context becomes conversational.

STACK

Flutter · Cloudflare Workers · Cloudflare D1
Idle Action RPG Prototype An attempt to combine active play with long-term idle progression. 2025

WHY

I wanted to explore the overlap between an idle game and something you actually play: active combat, long-term progression and unlocks that gradually change what the player can do.

WHAT HAPPENED

The combination of idle, action and unlocks was interesting, but it still felt too derivative.

LEARNED

Combining idle and action only works if both sides reinforce each other.

Unlocks are only interesting when they change how you play.

STACK

Flutter · Flame
Incremental Game Prototype A simple game that could keep expanding without getting much bigger. 2025

WHY

I wanted to see how much progression could grow around an intentionally tiny core mechanic.

WHAT HAPPENED

I paused it because I still like the idea, but I need a clearer progression system before building more.

LEARNED

Simple mechanics can support surprisingly deep progression.

A clicker lives or dies by its progression loop.

STACK

Flutter · Flame · Node.js · Cloudflare D1
Infinite Image Puzzle A procedural puzzle experiment that turned any image into endless playable content. 2025

WHY

The initial idea was simple: take any image and turn it into a playable puzzle. The more interesting question quickly became whether that could generate enough content automatically to make the game effectively endless.

WHAT HAPPENED

The interesting part was solved technically; the harder problem was making it replayable without manual content.

LEARNED

Procedural generation only matters if it creates enough variety to stay interesting.

STACK

Flutter · Flame
NoteMeet A note-taking experiment focused on retrieval, not just capture. 2024

WHY

I wanted a faster way to capture information and, more importantly, actually find it again later.

WHAT HAPPENED

The idea was useful, but notes alone were not enough for the system I wanted to build.

LEARNED

Capturing information is only useful if you can retrieve it later.

Notes become more valuable when they stop being isolated.

STACK

Flutter · Node.js · MongoDB
Procedural Block Puzzle A clone that became an experiment in infinite puzzle generation. 2024

WHY

I liked the original Move the Block mechanic and started by recreating it. The project became much more interesting when I stopped thinking about predefined levels and started wondering whether they could be generated indefinitely.

WHAT HAPPENED

The infinite version was more interesting than the clone, but good procedural difficulty was much harder than expected.

LEARNED

Generating content is easy. Generating good content with controlled difficulty is the real problem.

STACK

Flutter · Flame
Gourmand A restaurant tracker for places I wanted to try — or remember. 2024

WHY

The idea was essentially Seriesive for restaurants: save places I wanted to try, remember the ones I liked and explore whether the same tracking-and-discovery model worked in another domain.

WHAT HAPPENED

The idea worked on paper, but without affordable restaurant data in Spain, the experience never had a solid foundation.

The concept was interesting. The data economics were not.

LEARNED

A product can be a good idea and still be blocked by bad economics.

If the data is the product, the quality and cost of that data define everything.

Sometimes the right decision is to stop before writing more code.

STACK

Flutter · Node.js · MongoDB
SimpleWebTools A place for tiny utilities that should not need a whole service. 2023

WHY

I wanted a collection of small, fast utilities I could use without depending on a different external service for every simple task.

WHAT HAPPENED

Most of the tools already existed elsewhere, and maintaining my own versions stopped making sense.

LEARNED

Simple tools still need a reason to exist.

STACK

Next.js · SSR · Cloudflare Pages · Cloudflare Workers
Marklist A smarter shopping list built around product data and expiry dates. 2022

WHY

I wanted a shopping list that remained useful after something was checked off: identifying products through barcodes, remembering what had been bought and warning about expiry dates.

WHAT HAPPENED

What started as a smarter shopping list slowly turned into a product-data maintenance problem.

LEARNED

Not every useful feature deserves the maintenance it creates.

STACK

Flutter · Node.js · MongoDB
LastView A last-known-location system built around Bluetooth disconnects. 2022

WHY

I wanted to know where I had last been connected to a Bluetooth device — headphones, a bag or anything else easy to leave behind.

The idea was to detect the disconnection in the background and save the precise location automatically.

WHAT HAPPENED

The idea was technically possible, but iOS and Android no longer allowed the kind of persistent background behavior it needed.

LEARNED

Platform restrictions can kill an otherwise valid idea.

A technically possible product can still be too unreliable to ship.

Sometimes the constraint is not your code, but the operating system.

STACK

Flutter · SQLite
Seriesive Mobile My first product evolved into mobile — and actually shipped. 2021

WHY

The web experiment had proved useful enough that I wanted to take the same idea further, learn mobile development through a real product and rethink the experience around a platform that fitted it better.

WHAT HAPPENED

It became a real product, then slowly stopped being the thing I wanted to spend most of my time on.

I still maintain it and fix things when needed, but my curiosity moved elsewhere.

LEARNED

Shipping changes the way you think about software.

Maintaining a real product teaches things prototypes never do.

A better platform can completely reshape the same idea.

STACK

Flutter · Node.js · MongoDB · Rust · AWS Lambda
Seriesive Web My first attempt at turning a personal need into a real web app. 2021

WHY

I wanted a better way to keep track of the series I was watching, and I wanted to learn web development by building something I would actually use.

WHAT HAPPENED

The web version did its job, then the idea simply moved to mobile.

LEARNED

The best way to learn is to build something you actually want to use.

STACK

Angular · PWA · Node.js · Express · MySQL

04 / Method

How I work_

A way of working that keeps the question visible while the answer changes shape.

  • Question the need
  • Experiment first
  • Research before assuming
  • Break it down
  • Build to learn

05 / Open loops

Quest log_

Things I still want to understand,
improve or build.

Main quests

  • Rethink the tools developers use every day.
  • Make AI agents easier to trust.

Side quests

  • Build small things just to see where they lead.
  • Learn new domains by building something in them.

Ongoing quests

  • Stay curious.
  • Keep learning by building.
  • Question what deserves to be built.

06 / Notes

Notes_

The best way to understand a problem is to build around it.
  • Not everything that can be built should be built.
  • Complexity is easy to add and expensive to remove.
  • The best tools feel obvious after they exist.
  • Measure the cost before falling in love with the solution.
  • Better models don't remove the need for better process.
  • Trust needs evidence, not confidence.
  • Some projects exist only to answer a question.
  • The simplest version is usually the best place to start.
  • Research is cheaper than rebuilding the wrong thing.
  • Knowing when to stop is part of building well.
  • Break the problem down until each part is easy to reason about.

07 / End of file

I’ll probably keep starting things
just to see where they lead.

Find me elsewhere: