Inspiration
Every project starts with a beautiful PLAN.md, and a day later it's stale. Boxes get checked, work gets redone, and a section quietly gets stuck after five failed attempts but none of that shows up in the file. The plan tells you what you meant to build, never how it actually got built. We wanted to close that gap without turning a simple Markdown plan into yet another heavy project-management dashboard.
What it does
VisPL turns your plain PLAN.md into an interactive implementation map. It reads your headings and task lists into a navigable graph, then tracks the real work behind each section: which model did it, how much reasoning effort it used, how many iteration loops it ran, and whether verification passed or failed. You can search and filter to instantly spot the sections still causing problems. Your plan stays readable Markdown the whole time, every import is saved as an immutable snapshot you can revisit, and you can export a portable PLAN.md that carries all that evidence with it.
How we built it
VisPL is a Laravel 13 / PHP 8.3 app with SQLite, Tailwind CSS 4, Alpine.js, and a custom vanilla-JS graph renderer. The core is a handful of small, focused services:
Parser: reads headings and task-list items into a tree of typed nodes. Importer: saves each plan as an immutable, content-hashed snapshot. Graph builder: turns that tree into the interactive map. Exporter: writes everything back out to a portable PLAN.md. Shared UI comes from Harbour Blade components, while the graph renderer stays custom code because it owns the layout, pan/zoom, and iteration-loop geometry.
Challenges we ran into
Export adds VisPL data to the plan and import strips it back out, so files never get cluttered no matter how many times you cycle them.
Accomplishments that we're proud of
Plans stay clean, readable Markdown through unlimited import/export cycles. Work history follows each section forward across every re-import, even as the plan gets reorganized. Immutable snapshots give you a full, trustworthy timeline of how a project evolved. It's genuinely useful on day one — you paste a plan and immediately see the story behind it.
What we learned
The whole game turned out to be identity. Visualizing a plan is easy; keeping run history glued to a section that gets renamed, reordered, or nested deeper is not. Separating a node's display from its stable identity and hashing each plan so re-importing the same file is a no-op while real edits mint a new snapshot made the history append-only by design.
What's next for VisPL
Deeper integration with AI agents so runs, iterations, and checks are recorded automatically as work happens. Team features: comments, assignments, and shared views of the map. Richer analytics across snapshots trends in effort, iteration counts, and check pass rates over time. Git integration to sync PLAN.md directly with a repo.
Log in or sign up for Devpost to join the conversation.