← Back to Blog
Building in Public

The Day Piper Published to My Company Wiki: Sometimes a Great Notion

christian crumlish•
A robot wired up to a verification machine, checking the truth of its own outputs before publishing.
“Hot off the presses!”

Sometimes a Great Notion: The Day Piper Published to My Company Wiki

August 29

There’s a moment in every technical project where the thing stops being a clever demo and starts being actual software. For me, that moment came at 3:19 PM today when I watched my AI assistant successfully publish a properly formatted document to our company’s Notion workspace.

Not a test page. Not placeholder content. The actual Weekly Ship update, with bold text rendering correctly, code blocks syntax-highlighted, and the whole thing landing exactly where it was supposed to land in our information architecture.

After months of building, debugging, and systematic methodology work, I finally had proof this wasn’t an elaborate shared hallucination between me and my AI agents. It was real software doing real work.

The completion problem

Here’s what I’ve learned about the gap between proof-of-concept and production: it’s not the big architectural decisions that kill you. It’s the thousand small decisions about how things should actually work when real humans try to use them.

Take markdown formatting. Getting bold text to work seems trivial — until you realize your converter is treating **bold** as literal text instead of formatting instructions. Suddenly your beautifully structured documents look like they were written by someone who doesn't understand markdown.

Or content limits. Notion’s API accepts up to 100 blocks per page creation. Sounds like plenty until you try to publish a real document with multiple code examples and discover your publish command silently fails halfway through. No error message, no explanation — just an incomplete page and confused users.

The Cursor agent spent 10+ hours today systematically addressing every gap between “technically works” and “actually usable.” Extended basic bold support to comprehensive inline formatting. Implemented block-level code parsing with proper language detection. Built automatic content chunking for Notion’s limits. Added database publishing for architectural decisions.

The psychological shift

What struck me most wasn’t the technical achievement — it was the confidence shift. Watching real, well-formatted content appear in our actual company wiki changed how I think about this project.

For months, I’ve been building what I hoped would become a useful PM assistant. But there’s always that nagging voice: “Is this actually going to work, or are you just building elaborate tooling for yourself?”

Today’s publish success answered that question. The architectural vision translates to working software. The systematic methodology produces reliable results. The AI collaboration patterns we’ve developed can handle real-world complexity without falling apart.

This matters because confidence changes what you’re willing to build next. When you’re not sure if the foundation is solid, you build conservatively. When you know it works, you start thinking about the experiences that become possible.

The configuration revelation

The day had one more surprise waiting. Around 8:53 PM, while working through hardcoded Weekly Ship details, I re-remembered something that made me laugh: I need to make this work for other users besides me. What we need is a separation between genersal things in Piper’s domain model and specific user preferences (that, for now) just happen to be mine.

The multi-user configuration architecture has config/PIPER.user.md for user-specific settings. config/PIPER.defaults.md for system defaults. Proper separation of concerns in place, just waiting to be connected to the hardcoded values scattered through the codebase.

The trick now is to remember to start using the thing I’d already built. Immediately after we finished this working integration, I insisted that we refactor it to distinguish piper publish as a general function from “piper publish Christian’s report to specifically a Notion endpoint.” The path from “works for me” to “works for everyone” is now about wiring up ans activating this architecture.

This pattern happens more often than I’d like to admit, and I am hoping to avoid it this time: You solve a design problem elegantly, then forget about the elegant solution and work around it with quick hacks. Eventually you rediscover your own good work and wonder why you didn’t use it in the first place.

The unsexy work of completion

Most of today’s work wasn’t glamorous. Debugging regex patterns for markdown parsing. Handling edge cases in API calls. Making error messages actually helpful instead of cryptic.

But this unsexy completion work is what separates hobby projects from professional software. It’s the difference between demo magic and production readiness. Between “look what I built” and “here’s something you can actually use.”

The Notion integration pipeline is now genuinely production-ready. It handles real documents with complex formatting. It provides clear error messages when things go wrong. It chunks large content automatically. It extracts metadata from architectural decisions and publishes them to databases with proper structure.

None of this was breakthrough innovation. All of it was systematic completion — taking functionality that worked in the happy path and making it work reliably in the real world.

What confidence enables

With a working publish pipeline, new possibilities come into focus:

The conversational interface where you can say “publish the latest ADR to the team database” and it just works. The Slack integration where you drop a markdown file and it appears properly formatted in your documentation. The morning standup assistant that pulls together issues, calendar, and documents into a coherent briefing.

These experiences were always part of the plan. But plans and working software are different things. Now that I know the foundation is solid, building the user-facing experiences feels achievable rather than aspirational.

The systematic methodology we’ve developed — TDD with real API validation, cross-agent verification, progressive tracking — has proved it can handle real-world complexity. That’s the kind of confidence you can build on.

Meanwhile, back in production

Tonight, our Notion workspace contains:

  • Weekly Ship #006 with properly formatted bold text and code blocks
  • ADR-026 published to our architectural decisions database with extracted metadata
  • Test documents demonstrating comprehensive markdown support

All real content. All properly formatted. All accessible to the team through our normal workflows.

After months of careful construction, systematic debugging, and methodical completion work, we have something that definitely works. And that changes everything about what we’re willing to build next.

← Back to BlogAlso available on Medium