The Biergarten Data Pipeline (Streaming Architecture)The Biergarten Data Pipeline (Streaming Architecture)ParseArguments(argc, argv)spdlog::error usage infonoAre arguments valid?yesInit CurlGlobalState & LlamaBackendStatedi::make_injector(...)injector.create<std::unique_ptr<BiergartenDataGenerator>>()BiergartenDataGenerator::Run()Return 0Initialize SQLite exportQueryCitiesWithCountries()Store EnrichedCity{Location, region_context}Remaining citiesFor each sampled Location?DoneGenerateBreweries(enriched_cities)Generation successful?yesnoData loss is prevented per-record.The pipeline continues running.spdlog::warn "Failed to stream record to SQLite export"spdlog::warn "Generation failed, skipping..."GetUtcTimestamp() from SystemDateTimeProviderBuilds a fresh biergarten_seed_<UTC datetime>.sqlite filenameAppends a numeric suffix if the timestamp already existsOpens DB ConnectionExecutes Schema DDLBegins TransactionInitialize()ProcessRecord(GeneratedBrewery)Location in cache?yesnoReuse location_idInsert Location & Cache IDInsert Brewery (FK: location_id)yesException caught during insert?noCommits TransactionCloses Database ConnectionFinalize()JsonLoader::LoadLocations("locations.json")std::ranges::sample(all_locations, 50)GetLocationContext(loc)FetchExtracts(City, Country, Beer)Generator ModeMockGeneratorLlamaGeneratorDeterministicHash & FormatPrepareRegionContextLoadBrewerySystemPrompt("prompts/system.md")Infer(system_prompt, user_prompt, max_tokens, kBreweryJsonGrammar)ValidateBreweryJson(raw, brewery)Is JSON Valid?yesnoAttempt++Attempt < 3?yesRemaining citiesFor each EnrichedCity?Donemain.ccBiergartenDataGeneratorSqliteExportServiceJsonLoaderWikipediaServiceDataGenerator