Skip to main content
website logo savvydev

AI Date Planner

AI-powered date night planner with personalized suggestions using OpenAI GPT-4o. Features questionnaire flow, chat-based recommendations, user authentication, and location autocomplete.

Role

Full-stack developer, implementing AI integration and modern UI/UX.

Timeline

2024 - Present

Platform

Web Application

Screenshot of AI Date Planner project

Technologies Used

Next.js 15 OpenAI API Supabase TypeScript Tailwind CSS

About This Project

AI Date Planner: Where Love Meets AI

Ever been stuck trying to plan the perfect date night? I built this AI-powered date planner to solve that exact problem. It’s not just another app—it’s a personal dating concierge that uses OpenAI’s GPT-4o to craft unforgettable experiences tailored to your preferences.

The Story Behind the Code

The idea hit me during a particularly frustrating evening trying to plan a date. I thought, “What if AI could help couples discover amazing experiences they’d never think of?” So I built exactly that—a sophisticated questionnaire flow that captures everything from dietary preferences to budget constraints, then uses that data to generate personalized date suggestions.

What makes this project special is how it balances AI intelligence with human touch. The questionnaire isn’t just a form—it’s a conversation starter that helps couples think about what they really want from their time together.

Key Features That Make It Special

  • Smart Questionnaire Flow: A carefully crafted series of questions that feel natural, not robotic
  • AI-Powered Recommendations: GPT-4o generates real-world, actionable date ideas
  • Location Intelligence: Integrated LocationIQ for smart venue suggestions
  • Chat-Based Planning: Natural conversation interface for spontaneous date requests
  • User Authentication: Secure Supabase integration for saving favorite ideas
  • Accessibility First: WCAG AA compliant design that works for everyone

The Technical Magic

AI Integration with Vercel AI SDK

The heart of the application is the AI integration. Here’s how I structured the OpenAI calls:

// From the questionnaire flow
export async function generateDateIdeas(preferences: DatePreferences) {
  const prompt = `Generate 3 unique date ideas for a couple with these preferences:
    - Location: ${preferences.location}
    - Budget: ${preferences.budget}
    - Dietary: ${preferences.dietary}
    - Vibe: ${preferences.vibe}
    - Timing: ${preferences.timing}
    
    Make each suggestion specific, actionable, and include estimated costs.`;

  const response = await openai.chat.completions.create({
    model: "gpt-4o",
    messages: [{ role: "user", content: prompt }],
    temperature: 0.8,
    max_tokens: 1000,
  });

  return response.choices[0].message.content;
}

Smart Form Validation with Zod

I used Zod for robust schema validation throughout the app:

// Form validation schemas
export const datePreferencesSchema = z.object({
  location: z.string().min(1, "Location is required"),
  budget: z.enum(["budget", "moderate", "luxury"]),
  dietary: z.array(z.string()).min(1, "Select at least one dietary preference"),
  vibe: z.enum(["romantic", "adventure", "relaxed", "cultural", "foodie"]),
  timing: z.enum(["morning", "afternoon", "evening", "all-day"]),
  specialOccasion: z.boolean().optional(),
});

export type DatePreferences = z.infer<typeof datePreferencesSchema>;

Location Autocomplete with LocationIQ

The location feature uses LocationIQ’s API for smart autocomplete:

// Location search functionality
export async function searchLocations(query: string) {
  const response = await fetch(
    `https://api.locationiq.com/v1/autocomplete?key=${process.env.LOCATION_ID_ACCESS_TOKEN}&q=${encodeURIComponent(query)}&format=json&limit=5`,
  );

  const data = await response.json();
  return data.map((item: any) => ({
    display_name: item.display_name,
    lat: item.lat,
    lon: item.lon,
  }));
}

Supabase Authentication Flow

User authentication is handled seamlessly with Supabase:

// Authentication hooks
export function useAuth() {
  const [user, setUser] = useState<User | null>(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    const {
      data: { subscription },
    } = supabase.auth.onAuthStateChange((event, session) => {
      setUser(session?.user ?? null);
      setLoading(false);
    });

    return () => subscription.unsubscribe();
  }, []);

  return { user, loading };
}

The Development Journey

Building this app taught me the power of combining multiple APIs intelligently. The trick was making the AI feel human—not just generating random suggestions, but creating experiences that couples could actually execute.

The questionnaire flow was particularly challenging. I wanted it to feel conversational, not like filling out a tax form. Each question builds on the previous one, creating a natural progression that helps users discover what they really want.

What Makes This Project Stand Out

This isn’t just another AI app—it’s a thoughtful solution to a real problem. The combination of:

  • Intelligent AI prompts that generate actionable suggestions
  • Smart location integration for venue-specific ideas
  • Accessible design that works for everyone
  • Modern tech stack (Next.js 15, TypeScript, Supabase)

Creates an experience that actually helps couples plan better dates. The code is clean, well-documented, and follows modern React patterns with proper TypeScript typing throughout.

Development Process

The project showcases modern full-stack development practices, including:

  • Server-side rendering for optimal performance
  • TypeScript for enhanced developer experience
  • Tailwind CSS for rapid UI development
  • OpenAI API integration for AI features
  • Supabase for backend services

App Screenshots

Step 1: Welcome screen with questionnaire

Step 1: Welcome & Questionnaire

Step 2: Preference selection

Step 2: Preference Selection

Step 3: Budget and location setup

Step 3: Budget & Location

Step 4: Additional preferences

Step 4: Additional Preferences

Step 5: Final questionnaire

Step 5: Final Questions

Step 6: Processing preferences

Step 6: Processing

Step 7: AI generating recommendations

Step 7: AI Generation

Step 8: Chat interface with AI

Step 8: AI Chat Interface

Step 9: Final date plan

Step 9: Final Plan

Plan date interface

Plan Date Interface

Loading state with AI processing

AI Processing State