Custom app #2: WebinarPro
Weekly webinars? Yes. Slightly nuts? Yes. Let's build an app to make it easier.
Context
I work in marketing which means I live and die by the volume and quality of leads generated for sales. Webinars are still a great tool in the lead generation tool box. However, execution is not for the weak of heart.
To give you an idea, here’s the breakdown of tasks for each webinar:
Promotional collaterals:
Landing page
Campaign in CRM
Social posts
Marketing promotional emails (2-4)
Occasionally paid ads: creative, campaign setup, copy
Content:
Outline
Deck
FAQs
Dry run
Actual webinar recording or livestream
Follow up assets:
Sales rep follow up cadence (typically two, one for attended and one for registered but didn’t attend)
Cadence needs to be uploaded to automated system
Miscellaneous:
Speaker prep
Video editing
Sales enablement and feedback
Estimated time: ~8 hours
It’s an orchestration every and every time. But what I realized is that each webinar starts with the seed of an idea (the interesting insight, argument, nugget of technical “how to” you want to put forth to your audience) and all the written assets can be derived from there.
Repetitive, derivative, high time-commitment work that needs to be done every week? Sounds like a perfect target for automation.
Building WebinarPro
What I used: Base44, ChatGPT, Reddit for research
Step 1: Give Base44 some parameters
I’m not an engineer but I work with enough of them to know that there is such thing as a good one. I wanted Base44 to emulate best practices in software engineering so I took to Reddit to look for some general tips and had ChatGPT provide feedback, suggestions, and cleanup. Here’s my custom prompt for Base44.
Always prioritize the simplest solution over complexity
Avoid repeating code; reuse existing functionality when possible.
Backend in Python.
Frontend in HTML and JavaScript.
Store data in SQL databases, never JSON files.
Modify only the code I specify; leave everything else untouched.
Break large tasks into stages; pause after each for my approval.
Before big changes, share with me the plan and await my confirmation.
If my request is unclear, ask me before proceeding.
Never alter the stack without my explicit approval.
This custom prompt reduced my frustrations with my first app Custom Translations. Specifically, it minimized the number of times AI would change a previously working feature upon updating another one and it gave me a chance to course correct the AI before it embarked on bigger changes. This is a really big deal as you’ll see from my struggles in step 4.
Step 2: Articulate the vision
That’s all it takes to get going. I knew that I needed the app to:
Take inputs from a human
Generate derivative assets from those inputs (the 5 things in bullet points)
Have some internal quality control for the assets generated (last paragraph about custom prompts)
Tip: Being specific about the allowable operations (e.g. CRUD functions) decreases the number of correction cycles.
It still completely boggles my mind that I can just type that in human language and get a working app in response.
Step 3: Make sure the base functionality is working as expected
The first version of the app that the AI spits out is always going to have problems. Some of the initial problems I fixed immediately were:
This is ugly, make it less ugly
Allow the user to enter multiple entries in key takeaways
Allow the user to edit and re-save custom prompts
Allow the user to clear generated assets (not just generate, edit, and save them)
The fix: for all the above, you just have to explain to the AI what to update. And yes, I did tell the AI that a component was ugly and it did make it easier on the eyes. Base44 also allows you to upload images which makes UI updates much easy.
The award for the most annoying problem goes to:
Making sure that all generated marketing assets ONLY reference the user generated information in the webinar information section.
I had custom prompts for each of the asset types because AI default responses suck. However, without explicit instruction, the app just would not reference them. Or when it did, it would stop referencing my webinar information (topic, audience, takeaways).
The fix: give AI explicit instruction with the words “only” and “always”. Full disclosure, I did have to repeat this a few times.
Step 4: Experimenting with access management
One of my beta testers is a product manager and I thought it’d be nice to have the product team’s webinar ideas and assets separate from the marketing team’s. Plus, I work in identity and access management (IAM) so I was curious what AI would be able to do for a super basic IAM feature.
The idea is that users would be assigned groups and can only access and modify their group’s data after authentication.
TLDR: it failed spectacularly but taught me a totally new way of collaborating with AI on “advanced features”. Check this out.


After I picked my preference, the AI followed my custom instructions (see step 1) and broke down the implementation steps. But I wanted to see if I could get it to “self-derisk” so I asked what the risks are and how we can test it.


Tip: Ask AI to tell you about how things are implemented during build and debugging. This will help you articulate the problem to be fixed clearly to the AI. This is so useful I will be heavily relying it going forward due to the added clarity and predictability.
If you’re interested in a short summary of what went very wrong here it goes:
It forgot our the implementation plan we discussed. After phase 1, I told it to implement phase 2 to which it responded, “what’s phase 2?”
Inviting new team members via email was extremely difficult to debug. I had to ask the AI to explain to me what it’s doing. Some issues:
It implemented the “Send invite” button without actually building the
SendEmail
pathThe URL in the email for “Accept invite” led to a non-existent page
After accepting the invite, the user still cannot see other assets in their team and the admin cannot see the status of their invitations
In order to display the status of invites, it implemented an auto-refresh feature that crashed the app due to an overload of API calls
The final straw is that after all the debugging, the AI broke the original functionality of the app. Womp womp.
Step 5: General UI and prompt clean up
Self-explanatory right? I like clean looking apps that work well as defined by my expectations. This was super easy because, as I mentioned in my first blog, you can upload an image and just tell the AI what to adjust.
Finished product & outcomes
My broader marketing team now uses this app for speeding things along for webinar execution! The generated assets are not perfect but it’s decent enough of a start. For me personally, I’d say this app shaves about 2-3 hours off of my workflow per webinar.
I’m happy with that for now.