Apurva Chaudhary

Automating BCBCBath Website

Building BCBCBath: Automating a Cookbook Club Website

In 2022, Sahil and I started BCBCBath, a cookbook club in Bangalore. Every month, members vote on a cookbook, prepare a dish at home, and gather for themed potlucks. As the club grew, we needed a system to track our culinary adventures without drowning in administrative work.

The Challenge

The growing club needed infrastructure to track monthly potlucks and member attendance, display cookbook information with covers and descriptions, showcase the specific recipes members prepared, and archive the club’s culinary history. Most importantly, it had to be simple enough that non-technical members could update it without help.

The Solution: Keeping It Simple

The system is built around Google Sheets, where members already felt comfortable logging their dishes. Each tab represents a potluck event, with standard columns for cookbook details, dates, and attendance. No technical training required—just the familiar spreadsheet interface everyone knows.

Processing Cookbooks

When we add new cookbooks to the system, they’re stored as PDFs in a local folder. A PHP script extracts the full text from these documents and saves them as plain text files. This preprocessing step means we never have to parse the same large PDF repeatedly during regular updates—we just read from the text files.

From Sheets to Website

The main PHP application connects to the Google Sheets API to check for new potlucks. When it finds one, it fetches the dish and attendance data, parses everything, and reads the pre-extracted cookbook text. Then comes the interesting part: extracting the actual recipes.

The Recipe Extraction Journey

Initially, I used Google Gemini API to identify and extract recipes from the cookbook text. It worked, but honestly? It was overkill. The system had unnecessary API dependencies, rate limits to worry about, and added complexity that just wasn’t needed.

The current approach is much simpler: smart pattern matching. The system searches for recipe titles using multiple strategies—exact matches, handling bilingual names like “Baião de Dois (Rice with Peas)” or “Kaleje, Bheja (Liver, brain)”, and even matching significant words when the exact title doesn’t appear in the text. It tries five different matching strategies, falling back through each one until it finds the recipe.

The best part? No API calls, no rate limits, and no additional costs. It’s faster, simpler, and more reliable. Sometimes the most sophisticated solution isn’t reaching for AI—it’s just good old pattern matching.

Making It Look Good

The system also uses the Google Books API to fetch cookbook covers and descriptions, which makes the website much more visually appealing. Cover images are cached locally for performance, and if something’s not available, the system falls back to placeholders gracefully. Recipe content appears via toggleable “View Recipe” buttons, so members can see exactly what others cooked.

The Frontend

The website displays potlucks in a responsive grid layout, showing detailed event information including dish lists and recipes. It’s built with modern CSS and works smoothly on mobile devices, which matters since people often browse the site while shopping for ingredients or planning their dishes.

How It All Fits Together

At its core, the system has three layers. The data layer uses Google Sheets as the primary database, with local storage for cookbook PDFs, plain text files for processed content, a JSON file for combined data, and a local image cache for performance.

The processing layer is where the PHP scripts do their work—fetching data from Google Sheets, preprocessing PDFs to text, retrieving metadata from Google Books, extracting recipes using smart pattern matching, and handling validation, cleaning, and error logging.

The presentation layer ties it all together with simple PHP routing, template-based HTML generation, and responsive CSS design.

Lessons Learned

The automated system significantly simplifies cookbook club management while preserving all the culinary details that matter. By combining familiar tools like Google Sheets with automated processing, we can focus on what really matters—sharing excellent food and building community rather than managing spreadsheets.

The biggest lesson? Sometimes the simplest solution is the best. Moving from AI-based recipe extraction to smart pattern matching eliminated complexity while actually improving reliability and performance. Not every problem needs machine learning—sometimes you just need good pattern matching and a bit of common sense.