Close-up of a keyboard highlighting the "Ctrl Z" key against a blue backdrop, representing the undo command

The Hardest Part of Building: Knowing the Difference Between Iteration and Feature Creep

Author of post Smiling

I've been using Claude to help me develop user stories. I read through them, but this time I was working in Claude Code instead of the web chat interface, and I didn't catch all the nuances in the details.

What I realized mid-build: it was putting together contact storage. Specifically for LinkedIn. Scan different QR codes throughout an event, save them all, then follow up later.

I even played with it a bit. Then the question hit me: "Wait—if we're doing this for LinkedIn, why not business cards too? Are they really that different?"

And then the bigger question: "Is this even what this app should do?"

This week taught me something crucial about building with AI assistance: sometimes the hardest part isn't writing the code—it's knowing when to delete it.

The Vision Test

I stopped coding and asked myself a harder question: What is the core purpose of this app?

Not "what could it do?" or "what might users want?" but what is it fundamentally for?

The answer came fast: Making that initial connection faster.

HiteLabs Connect isn't a CRM replacement. It's not a contact management system. It's not about storing hundreds of business cards you'll never look at again.

It's about immediate follow-through.

The whole insight behind the app is that people collect business cards at events but never follow up because personalized emails take too long. By the time they get around to it, the conversation is cold.

The solution? Make follow-up so fast you can do it while the conversation is still fresh. Same day. Same hour. While you're still at the event.

Saving contacts for later is the exact opposite of that.

When Features Don't Fit Your Vision

This is where building gets tricky. The LinkedIn contact storage feature wasn't bad. Users might even find it useful. But it diluted the core mission.

Here's what would have happened if I'd kept it:

  • Complexity creep: Different flows for business cards (immediate) vs LinkedIn (saved)
  • Notification hell: Users would need alerts to remember to follow up later
  • Scope expansion: Saved contacts need search, filtering, editing, deletion
  • Mission drift: "Quick follow-up tool" becomes "yet another contact manager"

More features ≠ better product.

Sometimes the best feature is the one you don't build.

The Catalyst for Change

Thursday night, I demoed the app at a Cambridge startup networking event.

The response was incredible. Multiple people were genuinely excited—not just about using it, but about helping me evangelize it.

Then someone said something really smart that I hadn't thought about: "What about WhatsApp? Or other channels? People in India use WhatsApp extensively for business."

That question changed everything.

I realized: I'd been too rigid in my thinking about how this should work.

I wasn't building "a business card scanner that sends emails." I was building "a networking follow-up tool that captures conversations and makes connecting easier."

The channel shouldn't be hardcoded. The process should be modular.

The Refactor

This week, instead of finishing the LinkedIn storage feature, I've been doing something a bit more dramatic: refactoring the entire app to be channel-agnostic.

Here's the new architecture:

Step 1: Capture

  • Business card photo (OCR)
  • LinkedIn QR code scan
  • Manual entry (name + phone is quick)

Step 2: Context

  • Voice note about the conversation (same across all channels)

Step 3: Channel

  • Email
  • LinkedIn message
  • SMS
  • WhatsApp (coming)
  • Let users vote on what's next

The channel isn't determined just by your preference, it's determined by how your contact prefers to communicate. Some people live in their inbox. Others check LinkedIn daily. Many professionals in international markets primarily use WhatsApp. The app should adapt to the relationship, not force the relationship to adapt to the app.

What This Means for MVP

Did this rework push back my beta testing? Yes. Is it worth it? Absolutely.

The modular approach means:

Easier expansion: New channels are additive, not disruptive. Better user experience: One familiar workflow, multiple outputs. Clearer positioning: "The fastest way to follow up" not "email automation for business cards" More importantly, it preserves the vision. The core insight, immediate follow-through while conversations are fresh, isn't diluted by feature bloat. Every interaction serves that single purpose.

Vision as a Filter

This experience clarified something for me: Vision isn't about locking in every detail. It's about having a filter for decisions.

My vision for Connects app:

  • Make networking follow-up take 30 seconds, not 30 minutes
  • Enable same-day connections while conversations are fresh
  • Don't replace existing channels, make them easier to use

That vision immediately answers questions like:

  • Should we store contacts for later? No, contradicts immediate follow-up
  • Should we build a full CRM? No, we augment existing tools
  • Should we support multiple communication channels? Yes, meets users where they are
  • Should we add calendar integration? Maybe, if it speeds up follow-up

What's Next

The early access list is now live. I'm looking for people who actively network and would love faster follow-up.

I'm also documenting this whole journey publicly. Not the polished success story—the messy, iterative reality of building a product. Because here's what nobody tells you about building in public: The pivots and course corrections are more valuable than the victories.

Want to be part of this journey? If this app is of interest to you and you're excited about faster networking follow-up, join the early access list  before this blows up.