This is a submission for the Built with Google Gemini: Writing Challenge
What I Built with Google Gemini
I built AutoTable, a high-efficiency spreadsheet sanitization engine designed for knowledge workers who spend too much time "massaging" data. Whether it's survey results, payroll exports, or administrative logs, AutoTable allows users to drop a messy CSV or Excel file and get a validated, standardized version back in seconds.
The Problem
Data cleaning is the most tedious part of any data workflow. Inconsistent headers (e.g., "First_Name" vs "fname"), mixed data types, hidden Unicode artifacts, and duplicate rows often require complex Excel macros or custom scripts. Most office workers don't have time for that—they just want their data to work.
The Solution: An Intelligent Pipeline
AutoTable implements a multi-stage, idempotent transformation pipeline:
-
Header Normalization: Standardizes columns into uniform
snake_case. - Deterministic Type Detection: Coerces strings into canonical Numbers, Booleans, or Dates.
- Privacy Core: A "Privacy-First" architecture where files are ephemeral and automatically purged via TTL (Time-To-Live).
Gemini's Role: The Lead Engineer
Google Gemini (via the Antigravity agent) acted as my Lead Engineer. It didn't just write boilerplate; it architected the entire file processing flow. It implemented the core cleaner.ts logic—specifically the tricky fuzzy deduplication and smart column merging heuristics—and ensured the project followed a robust Next.js App Router structure.
Demo
Live Demo: auto-table.com
Landing Page
The Cleaning Dashboard
Pro Features Breakdown
What I Learned
Technical Depth
- Agentic Workflows: I learned how to treat an AI agent like a true pair programmer. Instead of asking for snippets, I gave Gemini high-level architectural goals (e.g., "Implement a secure TTL policy using Supabase RLS") and focused on verifying the logic and edge cases.
- State-Heavy Next.js: Managing binary file uploads, real-time cleaning previews, and multi-step forms required a deep understanding of React Hook Form and Zod for schema validation.
- Privacy at Scale: Implementing a "Privacy-First" SaaS taught me about ephemeral storage strategies and how to leverage Postgres RLS to ensure a user never sees another user's processed data.
Soft Skills & Process
- Reflection over Execution: The project taught me that the bottleneck isn't typing code—it's clear communication of requirements. Gemini is incredibly fast, but it requires precise "specs" to avoid hallucinations in complex logic like CSV delimiter detection.
Google Gemini Feedback
The Good: Unmatched Reasoning
Gemini’s ability to "think" through the entire file structure was a massive surprise. When I asked it to implement a changelog generator that tracks every modified cell, it hit on a diff-mapping algorithm that was both efficient and accurate on its first try. It felt like having a senior developer who never gets tired.
The Bad: UI "Soullessness"
While the structural CSS was solid, Gemini initially produced very "generic" looking layouts. I had to push it significantly to achieve the "Premium/Vibrant" aesthetic I wanted. It excels at logic, but still needs a human eye to guide it toward a "wow" factor in visual design.
The Ugly: Webhook Purgatory
The integration with the PayPal API for Pro-tier subscriptions was where we hit the most friction. Mapping the complex, asynchronous states of webhooks to my local database required several iterations because Gemini would occasionally default to older API patterns that didn't match the latest PayPal SDK. It took a few "candid" debugging sessions to get the subscription lifecycle perfect.
Summary
Building with Gemini is like driving a supercar: it’s incredibly powerful, but you have to keep your hands on the wheel during the tight corners (like third-party integrations). It transformed a 2-week project into a 3-day sprint.
Tags: #gemini #googleai #nextjs #saas #productivity #spreadsheet #mlh



Top comments (4)
This is such a practical use of Gemini! The problem you've solved is real — anyone who's worked with CSV exports from different tools knows the pain of inconsistent headers and mixed data types. I'm curious: how does AutoTable handle edge cases where the same column has wildly different formats in different rows? Does Gemini infer the intended format or does it ask the user to decide?
That’s a great question! AutoTable tackles inconsistent row formats using a "multi-stage, deterministic transformation pipeline" that Gemini helped architect. Instead of forcing an entire column into a single data type, the engine evaluates cells individually to perform per-cell type coercion, for example, standardizing various 10-digit formats into a canonical phone number while preserving ambiguous strings. To prioritize speed and user privacy, it relies on these smart heuristics to clean what it can and defaults to preserving the original data if a format is too "wild," ensuring no data is lost in the process!
Your application is great and I always use it for cleaning large datasets. Hope for more improvements in the future!
Thank you so much for the support! I’m thrilled to hear AutoTable is helping you manage large datasets more efficiently. I’m currently working with Google Gemini to refine our "Lead Engineer" architecture even further, with plans to add smarter fuzzy matching and more advanced schema detection soon, so keep an eye out for updates!