Featured project
Mars Rails
A personal operating system for projects, learning and work evidence. Rails and MCP give AI persistent, structured context and controlled ways to act.
- Role
- Product design and full-stack development
- When
- Ongoing personal project
- Focus
- Ruby on Rails, PostgreSQL, MCP integrations and workflow design
Context & problem
I built Mars to bring project planning, learning and work evidence into one application. I wanted the information to remain useful beyond a single conversation: a task should belong to a project, completed work should leave a record, and an AI assistant should be able to work with that context.
My contribution
I designed and developed the Rails application, its PostgreSQL data model, interface and MCP integration. The work spans project boards and subtasks, end-of-day work records, guided learning, job tracking and versioned CV editing. I actively use Mars as a personal product and continue to develop it.
Connecting AI to application workflows
Mars exposes structured tools through the Model Context Protocol (MCP). An assistant can retrieve project context, find tickets and perform defined actions through the same application services used to enforce validation. The integration turns persistent application records into context an assistant can use across conversations.
I separated compact discovery and list responses from detailed reads. For example, project lists return ticket counts, while ticket summaries are requested explicitly. This keeps everyday interactions focused without removing access to the detail needed for a decision.
Engineering decisions
Defined actions and explicit permissions. Bearer authentication and OAuth scopes gate tool calls. CVs, jobs and learning records are scoped to their owner; project boards use the application's shared workspace model. Authenticated dispatches leave audit records, including unsuccessful calls.
Writes that can be retried safely. CV saves use an idempotency key and an expected revision. If a document has changed since it was read, the write returns a conflict so the assistant can retrieve the latest version. Each successful edit creates a new revision rather than overwriting the history. Work-record batches also deduplicate retry identities.
A clear boundary around learning. Assistants record evidence of demonstrated skills; the application computes mastery and review dates. Changes to learning tasks, skills and focus are proposed for the learner to accept or reject.
One Rails application. Server-rendered views and a relational data model keep the interface and integrations close to the same rules. Public portfolio pages read explicitly curated content, while private application routes require authentication.
Verification & outcome
The repository includes request, service and browser tests covering authentication, tool contracts, ownership boundaries, learning workflows and CV revisions. These checks exercise the behaviour around integrations as well as the interface.
Mars is an application I actively use, with an MCP connection that can read structured context and save controlled changes. It demonstrates how I approach a product across the stack: model the workflow, make the interface usable, and account for permissions, retries and conflicting updates.
The next challenge is keeping the growing tool surface easy to understand as the product develops. I treat compact responses, explicit write contracts and regression checks as part of that ongoing work.