How I Used AI to Vibe Code a Website called for in TEDCO's RFP

TEDCO recently put out an RFP to, tldr, “build us a new website.” The requirements include standard CMS fare: events, funding programs, news, updates, and portfolio companies. Nothing too complicated.

I looked at the RFP and thought:

  1. They’re going to be inundated with companies tripping over themselves to try to get the business. Godspeed. (We decided against submitting an RFP.)
  2. My second thought was: these requirements are basic. Lemme try vibe code this.

Disclaimer: TEDCO has absolutely nothing to do with this blog post. Likewise, TEDCO is not affiliated with SmartLogic.

What is Vibe Coding?

Vibe coding is the time-tested practice of using AI tools to quickly build a prototype or functional application based on vibes, gut feel, and just enough spec.

At SmartLogic, we are increasingly vibe coding when designing / building prototypes for new project ideas. It’s a big time / cost savings.

Vibe coding allows someone like me - who hasn’t written a line of code in a long time - to get something off the ground quickly, without having to trouble developers.

What did I build?

Test out my prototype or check out this youtube video:

What tools did I use to vibe code this?

I used these tools:

  1. Lovable: vibe coding platform. Lovable creates a web application as you continue to prompt it. Each successive prompt builds additional functionality.
  2. Supabase: a Postgres database in the cloud. Lovable uses Supabase as its data store.
  3. Spreadsheet: nothing beats a spreadsheet for keeping track of requirements!
  4. My brain: I pulled it all together using actual intelligence.

How do you actually "vibe code?"

You prompt Lovable much like you'd prompt ChatGPT and Claude. Here's a video of me adding functionality to add, edit, display programs by prompting Lovable:

What I’d change about my approach for next time

I confess that I initiated this effort thinking that I’d one-shot it - that I’d just upload the RFP to Lovable and it’d build the whole thing for me in a few minutes. We’re not quite there yet.

AI is non-deterministic - you can type in the same prompt and get different results. If your prompts are too broad, the universe of answers you may get grows exponentially. For the best results, it’s critical to focus the AI through thoughtful and specific prompting. The narrower your aperture and prompts, the more focused your results.

If I embarked on a project like this again, I’d make these changes to better prompt the AI:

  1. Start with understanding the domain model: what are the different “things” that we are trying to represent in this website and what are their relationships to each other? In the case of TEDCO - how do funding programs relate to portcos / investments and resources? How do network advisors relate to resources or funding programs, if at all?
  2. Identify the different administrative roles: should a subset of functionality (e.g. updating content in the CMS, editing programs, publishing events) only be made available to a subset of admins (i.e. TEDCO employees)? This could shake out of writing up the requirements.
  3. Write up all requirements in a spreadsheet: the TEDCO RFP is a great starting point. But the requirements are not super specific, are not organized to my liking (they are scattered throughout the RFP), nor are they written as user stories. (Of course, 100% of the time, every dev shop / web agency / developer will bemoan that the requirements for every project could be more clear.) I do expect that the vendor with whom TEDCO signs a $150-250k contract will enumerate the requirements in a technical format / as user stories.
  4. Build some prompt templates: I could have saved time by preparing prompt templates for, in particular, some of the administrative CRUD functionality.

What did this cost?

Short answer: $50 and ~12-16 hours of my time prompting Lovable. If I did this again, I’d expect to spend $25 for Lovable and perhaps ~6 hours of my time setting up prompt templates and prompting Lovable.

Keep in mind that the valuation of these AI / SAAS companies is in direct proportion to their MRR and ARR (monthly / annual recurring revenue). Once you type in that credit card number and hit submit, you’ll be paying until the first of any of these events: you close your credit card account, the sun burns out, or you cancel your recurring subscription.

My takeaways

  1. Vibe coding platforms are great for prototyping and maybe even for building select production applications.
  2. If I did want to build something I thought was within the realm of what these tools were capable of building, my first move would not be to prompt the vibe coding platform. Consider this: if you wanted to remodel your bathroom, you wouldn’t first reach for the sledgehammer. You would first reach for pen, paper, and a measuring tape so as to write down ideas and begin to design what you want.
  3. These tools are great at creating sample data. (I think developers do everybody a disservice when putting lorem ipsum text anywhere or when using “asdf” or “qwerty” or “aaaaaaaa” as dummy data, but I digress.) To my great pleasure, Lovable created wonderful dummy data - everything you see in the site was created by Lovable - in many cases after my thoughtful prompting.

It’s all easier than it looks. These tools are remarkable. What are you waiting for? Fire them up and go.

What’s next?

Who knows, but the pace of change is accelerating and these tools are becoming more and more useful.

Please reach out to me if you’d like to learn more about how we’re using AI at SmartLogic and how that might apply to your priorities. I'm always happy to chat. Find me on LinkedIn or email me.

Author image

About Yair Flicker

You've successfully subscribed to SmartLogic Blog
Great! Next, complete checkout for full access to SmartLogic Blog
Welcome back! You've successfully signed in.
Unable to sign you in. Please try again.
Success! Your account is fully activated, you now have access to all content.
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.