Hey guys,

Remember yesterday when I proudly said “just getting something into production on day 0, even if it’s just a form that collects emails?”

Well…

My only and first feature in production failed. Let's hope my boss doesn’t read my newsletter.

I tested it locally. It worked of course. I shipped to prod. I did not test in prod. Because why would a waitlist form break between local and production?

It’s a waitlist form.

Thanks Peter. Bless you, and luckily he caught it during the first A/B test sample of only a couple hundred emails. I ran back from the grocery store and even nicked by hand drawing blood to fix it before I got fully embarrassed sending a dead link to everyone.

The fix took two minutes. An environment variable wasn't set for production in Vercel, so my Supabase calls were getting rejected. Worked on my machine. Did not work on the internet.

Lesson: trust but verify. Then verify again in prod. What works locally can fail in production for the dumbest reasons. From now on, nothing ships without me clicking through the live URL myself. Every time multiple times. Still got some signups so no damage besides my ego.

Anyway, let’s get to todays entry.

Project Name: Dateful 
Diff Entry: #002
First Commit: Monday 23rd Feb 
Users: 16 on the waitlist 
Revenue: $0, but almost kind of $100!  
Target: $100 MRR 
Time invested: ~4 hours 
Running spend: ~$90
Last Commit: Thursday 26th Feb

Today's diff was brought to you by the crazy hogs at PostHog.

Still haven’t added it to Dateful yet—no need until there's a real user flow to watch. But funny enough, yesterday at work I launched our first PostHog experiment (we were on a different setup before) and here was my CTOs reaction

It’s just crazy how good the setup experience is and the UI of understanding data. Point is—I got my entire team using PostHog because it's by far the best product analytics tool I've ever used, and I use it everywhere. Personal projects, work, everything. Session replays, funnels, feature flags, all in one place.

When this is ready for real users hopefully very soon, PostHog goes in immediately. And I’m going to show you how to setup all your events in one prompt. I know is hard to believe…

After fixing the waitlist, I made it better

Since I was already in the waitlist code, I added a quick post-signup survey. Just three questions after someone joins. Took about 15 minutes.

Where are you based? If 40% of signups are outside the US, my SMS-first decision starts looking off.

How often do you go on dates? Frequency signals willingness to pay and helps me think about pricing tiers against “cost-per-date” unit economic for me. Someone who wants weekly date nights has a very different value threshold than someone doing monthly.

Would you pay more if your assistant monitored hard-to-book restaurants or places you specifically flagged, and alerts you when a spot opens? I got a LinkedIn DM from someone offering $100 for exactly this (more on that below). I want to validate whether that's one person's enthusiasm or an actual feature with legs. Early signal on a potential premium tier before I build a single thing.

I also added a clean share-to-LinkedIn prompt after joining. My early waitlist is coming almost entirely from here and I know you all have LinkedIn, so making it easy to spread there just makes sense. Go where the people already are.

If you want to see the flow, you can here: test the waitlist flow (and join it).
*I tested in 5 times.

What I wired up on day 1

Sadly not much building, much more connecting the nervous system. All the services that need to talk to each other before the agent can actually do its job. Today was a lot of signing up, copy and pasting credentials, and applying for things.

  1. Anthropic APIthe OS of the whole thing. Claude powers the date planning agent and orchestrates everything. Less than 3 minutes to get the key, added $20 in credits. Does nothing yet.

  2. Twilio—the channel layer. Got a phone number and API keys. Key decision: SMS first, WhatsApp later. WhatsApp Business verification takes days and my hunch is most users in the beginning are US-based. Don't want to optimize for the future too soon. Did have to to spend $50 bucks to skip toll-free verification because I'm impatient and wanted to test today. ~15 minutes.

  3. Google Places + Calendar APIs— the key data & organization layer. Need this for restaurant and activity discovery, and Calendar for scheduling context so once you approve it books an event on your calendars’. Went with the standard v1 Places API over the newer one. Cheaper and fine for MVP. ~15 minutes.

  4. Serper API the web search layer. Something I didn't know before this: LLM APIs don't include web search. If you want your agent to find restaurants or do anything on the web in real time, you need a separate search tool. Options were Tavily (built for agents, free tier), Serper (Google Search results, strong quality), or Brave (privacy-focused). I picked Serper for quality over price because the whole product depends on finding genuinely great date spots and reading blogs suggesting things to do etc. ~5 minutes.

  5. Stripe sandbox gotta get paid. Created a monthly and annual test subscription and set up webhooks so the app knows when payment events fire. ~15 minutes.

  6. OpenTable API applicationthe last mile concierge. I want Dateful to eventually (soon) book reservations directly once couples approve a plan vs having them do it themselves. I used Claude to write a solid pitch for the application since you need to explain your use case and why I’d be a great partner with only 0 users. Fingers crossed folks. Approval takes 2-3 weeks, so started the clock early. ~15 minutes.

What I actually built

I did manage to get to some of the real stuff in local: signup, login, and onboarding.

I had this flow planned from day 0 and my primary PRD Claude and I worked on, so this step was just getting Cursor to execute.

The flow I have right now: landing page → verify via text → land on /onboarding → Answer a few questions in one dynamic chat flow to get the context the agent needs to plan for you. City, neighborhood, budget, date frequency, preferred days and times, interests, dietary restrictions, food dislikes, anything else the assistant should know.

The interesting part is what happens with all of that. It gets stored in the db of course, but it also gets structured into a system prompt that goes into the agents core persistent memory and context just for that couple.

Every time the agent responds, it rebuilds this context fresh, loads the couple profile from the database, loads the last N messages, combines them into the system prompt and message history, and sends that to Claude. The couple profile lives in the system prompt (which Claude treats as fixed, privileged context) while the actual conversation lives in the messages array. So the agent always knows who you are and what you like, no matter how many turns into the conversation you are.

This is the kind of architecture decision that matters a lot for agent products. The system prompt is your product's personality and memory. Getting this structure right early means the agent feels like it actually knows you instead of starting cold every time.

Where I'm at: The web flow works mostly. Data saves. Onboarding completes. But I haven't got the text flow working yet—I need to spend time debugging why the first message isn't coming through after onboarding from Twilio.

Tomorrow's problem/goal. I want this sending…

"Hey {name}, I'm Lucy, your Dateful planning assistant. I'll send you some ideas in a few minutes to start getting a sense of yours and {partner}'s ideal date night."

That's the moment the product comes alive. Not the Aha moment, but something showing it’s there.

Right now it's a form that saves data. Tomorrow it should talk back. Even if the first word is a mumbled "Dadda!” and it has no idea what I say back.

Almost a paying customer before anything works

This was cool

This is the fun and important part about building in public.

Ian saw yesterday's post and said they'd pay me $100 a month if I solved an adjacent problem: an agent that watches your favorite hard-to-book restaurants for availability and alerts you when a spot opens. "Hey, Carbone in New York has a spot next Thursday — want me to book?"

I almost sent him a Stripe link right there.

Decided that was maybe too ambitious before the core product works. But it's on the roadmap (which is just in my head right now) as a premium feature and retention hook— passive restaurant monitoring that pings you when a reservation opens at your dream spot.

Out little $100 MRR target might be closer than I thought. And who knows, maybe not even for the reason I expected.

What's next

  • Verify onboarding context feeds correctly to the model — the couple profile needs to reliably exist in the system prompt

  • Get Twilio working end to end where agent sends me a message

  • Stretch goal: the agent uses the couple context + search APIs to generate 6 sample date cards in the web app. The idea is different itineraries you can swipe through. A basic training set to start shaping taste, and also just give users a sense of the app experience immediately. Plus swiping is fun and I want these cards to look like pretty invitations and I know I’ll enjoy designing them.

Today's commit was brought to you by the hogs at PostHog.

Still haven’t added it to Dateful yet—no need until there's a real user flow to watch. But funny enough, yesterday at work I launched our first PostHog experiment (we were on a different setup before) and here was my CTOs reaction

It’s just crazy how good the setup experience is and the UI of understanding data. Point is—I got my entire team using PostHog because it's by far the best product analytics tool I've ever used, and I use it everywhere. Personal projects, work, everything. Session replays, funnels, feature flags, all in one place.

When this is ready for real users hopefully very soon, PostHog goes in immediately. And I’m going to show you how to setup all your events in one prompt. I know is hard to believe…

See you after some more progress.
— Jaryd

catchup on past diff entries

Keep Reading