Ahmed ElkomyTPM · the seam
↑ Index · Writing
AI & Engineering

Shipping With AI Agents Daily: My Actual Workflow

Not a hype post. A ground-truth account of how Claude Code, Gemini, and n8n fit into my daily product-building routine — what they're good at, what they're terrible at, and where the human still has to hold the wheel.

I use AI agents every day. Not in the "AI will replace developers" sense. In the "these are tools that changed how I allocate my hours" sense. After a year of building Menyo Pro with Claude Code as a daily companion, n8n wiring up automations, and Gemini powering menu extraction, I can be precise about where they help and where they hurt. This is not a hype post. It's a field report.
Here's what I actually open every morning, in order of how much I use it. Claude Code — my primary coding collaborator. I use it for implementation, refactoring, debugging, and as a thinking partner for architecture decisions. It's the tool that has most fundamentally changed my workflow. Gemini API — the extraction engine behind Menyo Pro's menu scanner. It runs in production, processing real restaurant menus. I interact with it as an API, not a chatbot. n8n — workflow automation. I use it to connect systems that don't have native integrations: webhook triggers, data sync between tools, automated reporting, customer onboarding sequences. Gemini (chat) — research and brainstorming. When I need to think through a problem and want a sparring partner that has read more documentation than I have.
Let me be specific, because "it helps me code" is too vague to be useful. Navigating unfamiliar code. When I jump into a part of Menyo Pro I haven't touched in months, Claude Code can scan the files and tell me how the pieces connect. "How does the order flow from guest checkout to kitchen display?" — it traces the path through the codebase faster than I can grep for it. This saves me 20–30 minutes of context-reloading every time I switch areas. Generating the boring 70%. CRUD endpoints, type definitions, test scaffolding, form validation. These are tasks where the structure is well-defined and the variation is minimal. Claude Code generates a solid first draft in seconds. I review, adjust, and move on. The time savings are real but not transformative — maybe 30–40% faster on these task types. Catching edge cases in logic. I'll write a function that handles the happy path, then ask Claude Code to review it. It consistently spots edge cases I missed — null states, race conditions, input validation gaps. It's like having a second pair of eyes that's read every edge case pattern in every codebase. Not always right, but right often enough to be worth asking.
// I wrote the happy path:
async function processOrder(order: Order): Promise<Receipt> {
  const validated = validateItems(order.items);
  const total = calculateTotal(validated);
  const payment = await chargeCard(order.payment, total);
  return generateReceipt(payment, validated);
}

// Claude Code's review caught four issues:
// 1. What if validateItems throws? No try/catch.
// 2. What if chargeCard succeeds but generateReceipt fails? Payment is taken, no receipt.
// 3. What about concurrent orders with the same cart? No idempotency key.
// 4. What if order.items is empty? calculateTotal would return 0 — do we allow $0 orders?
This is the highest-value use case. Not writing code for me, but making my code more robust.
Architectural decisions. "Should I use a separate analytics database?" Claude Code can list pros and cons, but it can't weigh them against my specific context — my tenant distribution, my query patterns, my operational capacity. Architecture is about trade-offs, and the trade-offs depend on information the tool doesn't have. Novel problem-solving. When I faced a specific real-time sync issue between POS and kitchen display, Claude Code suggested standard WebSocket patterns. None of them addressed the actual constraint: kitchen tablets on flaky WiFi that drop connections constantly. The solution — a local-first queue with conflict resolution — came from understanding the operational reality, not from a codebase pattern. Knowing when not to build. Claude Code is biased toward building. Ask it "should I build a custom analytics dashboard?" and it'll help you build one. The right answer might be "use PostHog's dashboard and spend your time on something else." The tool doesn't have a "don't build" mode.
n8n sits in a different category — it's for wiring systems together, not building products. But it's become essential to my workflow in a specific way: it handles the operational glue that would otherwise be throwaway scripts. My current n8n workflows:
  1. New customer onboarding. Stripe webhook → create tenant in database → seed default configuration → send welcome email with setup guide → notify me on Slack. Five steps, no code, runs reliably.
  2. Daily operations summary. Every morning at 7 AM, n8n pulls yesterday's metrics from the database, formats a summary, and sends it to my phone. Orders processed, revenue, any errors, support tickets opened. I see the business state before I open my laptop.
  3. Support routing. When a customer sends a WhatsApp message, n8n categorizes it (bug, question, feature request), routes bugs to my phone immediately, and logs everything in a tracking sheet. This replaced a manual triage process that was eating 30 minutes a day.
The value of n8n isn't that it does things I couldn't do with code. It's that it does them visibly and modifiably. When a workflow breaks, I can see the exact step that failed. When I want to add a step, I drag a node. This matters when the workflow is operational infrastructure that I need to trust and maintain alongside the product.
After a year of experimentation, my daily routine has stabilized into something I can describe precisely. Morning (product thinking): I review the n8n daily summary. I check activation and retention numbers. I triage support issues. This is the strategic layer — what needs attention today? AI is minimally involved here. The tools provide data; the thinking is mine. Midday (building): This is where Claude Code earns its keep. I work on features, bug fixes, and improvements. Claude Code handles implementation scaffolding and code review. I handle architecture, product decisions, and quality. The ratio is roughly 60% my judgment, 40% AI-assisted execution. Afternoon (operations): I handle customer issues, update n8n workflows, monitor the production system. Gemini runs the extraction pipeline in the background. This is the least AI-assisted part of the day because it requires human judgment about real business situations. Evening (exploration): I use Gemini chat to research new ideas, explore technical approaches, and brainstorm. This is the most open-ended AI use — a thinking partner for possibilities.
AI agents have made me roughly 30–40% more productive as a solo builder. That's significant. It's the difference between Menyo Pro being viable and not viable as a solo operation. But the 30–40% is not evenly distributed. It's concentrated in implementation speed. The strategic work — deciding what to build, understanding users, architecting for scale — hasn't gotten faster. It might even require more deliberate effort, because the temptation to skip thinking and start building is stronger when building is so fast. The biggest risk isn't that AI replaces me. It's that the speed of building tricks me into building the wrong things. When you can ship a feature in hours instead of days, the cost of shipping the wrong feature feels lower. But it's not lower — the cost is the same (user confusion, product bloat, maintenance burden). It's just paid later instead of upfront. The discipline hasn't changed. Understand the problem. Build the smallest thing that solves it. Measure whether it worked. Iterate. AI compresses the building step. It doesn't replace the understanding, measuring, or deciding steps. That's the workflow. Not magical, not disappointing. Just a new set of tools that are genuinely useful when you're clear about what they're for.