{
  "id": 9335401,
  "title": "The SafariConnect Data Story",
  "url": "https://urgent.news/2026/09/23/the-safariconnect-data-story",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-23T12:43:56.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/david_mwandairo_777f888b4/the-safariconnect-data-story-3dbl"
  },
  "original_language": "en",
  "account": "In 2024, Safari Connect, a Nairobi-based bus and matatu booking platform, began generating substantial booking history data. The CEO tasked the Operations Director with cleaning the data, loading it into the database, analyzing it, and presenting findings on Friday. The source material details the process of transforming a 290-row CSV file with 23 categories of issues into six clear business answers, supported by Kenyan shilling figures.\n\nInitially, the raw CSV was loaded into a staging table named \"staging_bookings\" with all columns as TEXT to prevent type mismatches. The analyst then created a cleaned table, \"clean_bookings,\" with appropriate data types for each column, including a VARCHAR(10) PRIMARY KEY for booking_id. This allowed for the creation of views and the presentation of actual SQL output in a database GUI like DBeaver.\n\nThe analyst identified 23 categories of dirty data within the export. These issues included inconsistent passenger names, such as extra spaces and capitalization errors, which were resolved using SQL's INITCAP(TRIM(...)) function.",
  "summary": "How 290 rows of tangled booking data became six clear answers for a CEO who doesn't have time for excuses. The Message That Started It All Every data project has an origin story. This one starts with a WhatsApp-length message from an Operations Director who has run out of patience with a shared Excel file. Safari Connect is a Nairobi-based bus and matatu booking platform. Think of it as the Bolt…",
  "key_points": [
    "Safari Connect generated 290-row CSV data in 2024",
    "Analyst cleaned data, created cleanbookings table",
    "Identified 23 data issues, resolved with SQL functions"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}