CoWrite
MY WORK
Overview
CoWrite is a modular, open-source framework I built for collaborating with large language models on tailored resumes and cover letters. It runs entirely in Markdown and operates within any LLM chat with very little setup required. The goal was to make the process transparent, repeatable, and adaptable so anyone could use, modify, and build on it however they need.

You can explore the full project here: github.com/matthewjgordon/CoWrite
Motivation & Problem
When I started applying for new roles, I quickly realized how limited most AI resume tools were. They could help generate content, but they didn’t know me, my experience, or how I wanted to tell my story. Each application felt like starting from scratch. I wanted something that could work with me, not just for me, a system that could learn from my inputs, respect my structure, and make the process faster without losing authenticity.
Approach & Process
I approached the problem like a systems designer, breaking down the resume-tailoring process into modular components that could each be improved, replaced, or reused. Every part of CoWrite lives in Markdown, written in plain language so both the human and the model can interpret it. The focus was on transparency and flexibility, letting users see how each instruction works and make changes without needing to code.

The system follows a clear, human-readable workflow: parsing job listings, aligning them with user data, and producing tailored outputs that speak directly to applicant tracking systems, recruiters, and hiring managers alike. Each stage is traceable, so users can see exactly how an output was generated and refine it further if needed.
System Overview
CoWrite is built as a modular system made up of two core components: System-Instructions and User-Info. Each module is written in plain Markdown, designed to be readable by both the LLM and the human user. It may look dense at first, but every line can be understood and modified without technical experience. This makes the system accessible for anyone who wants to customize it to their own workflow.

Each stage is modular and self-contained, allowing users to adjust, expand, or remove parts as needed without affecting the rest of the system.
  1. Manifest / Workflow: Establishes the purpose, defines the system’s rules, and sets expectations for tone and structure.
  2. Parse: Breaks down the job listing into clear, structured data the system can work with.
  3. Skill Check: Compares the parsed job requirements with the user’s recorded experiences and skills as documented in the User-Info file.
  4. Tailor: Synthesizes the user’s recorded experiences and skills to align with the role, keeping it relevant and personalized.
  5. Finalize: Refines the tailored content for clarity, conciseness, and readability.
  6. Additional Skills Block / List: Optionally generates a concise summary of transferable or supporting skills, often found on typical resumes.
  7. Cover Letter: Optionally drafts a role-specific cover letter using the tailored resume data as context.
Highlights & Learnings
Building CoWrite taught me several key lessons about systems, collaboration, and design.
  • Clarity Over Complexity
    Accessibility is a feature. Writing everything in plain language made CoWrite easier for both humans and models to understand and modify. A system is only as strong as its ability to be understood by the people using it.
    1
  • Human + AI Collaboration
    AI performs best when structure is clearly defined. Giving the model context and boundaries turned it from a generic tool into a collaborative partner that works with intention and purpose.
    2
  • Documentation & Discipline
    Treating CoWrite like a real product encouraged habits like clear documentation and version control. Those small decisions made iteration faster, troubleshooting simpler, and collaboration easier, even when working solo.
    3
  • Iterate & Simplify
    An earlier, more complex version of CoWrite included GitHub integrations and automated data management. When a model update broke key dependencies, I pivoted, scaling back to focus on model-agnostic design and adaptability. That shift reaffirmed the value of starting small, testing what matters, and keeping systems resilient through simplicity.
    4
Outcome & Reflections
CoWrite ended up being more than a tool; it became proof of concept for how structure, clarity, and adaptability can make AI collaboration meaningful. It showed that systems can be simple, transparent, and still powerful. By making everything transparent and human-readable, I built something that anyone can pick up, understand, and evolve in their own way.

The project also reinforced how I approach work in general: identify the gap, design the framework, and make it better with each iteration. It’s an example of how I like to lead, through clarity, curiosity, and building systems that help others do their best work.

CoWrite will continue to evolve as I receive feedback. I’ve also toyed with the notion of an actual application built on an LLM API, which would allow for deeper prompt control and a more seamless user experience. It’s a fascinating thought, but for the moment the real takeaway for me is the mindset behind all of this: simple, open, and adaptable by design.