Freelance AI Engineer / Business Process Automation & Generative AI in Production
I don't stop at proving an AI feature works.
I take it into production and keep it running.
Email: tamakou435@gmail.com Site: https://kota-hp.vercel.app/en/
Most companies already get as far as trying generative AI. Where they stall is everything after that.
Work halts when the AI gets it wrong. A fix in one place breaks another. The people using it stop trusting the output.
When a PoC never reaches production, the cause is usually one of those three rather than raw model accuracy. My job is to absorb them in the design and get the system to a state where it keeps working.
I work end to end — requirements, implementation, production operation, incident response, and explaining the specification to the client in recurring review meetings — primarily on GCP (Cloud Run / Cloud Functions / Cloud Scheduler), Python, Google Apps Script and the Gemini API.
Replaced a 100% manual review process with AI first-pass screening plus human final approval
For a corporate e-learning provider. Every training video submitted by an instructor was reviewed by hand against internal standards, one at a time. A form submission now triggers the pipeline: the Gemini API analyses the video stored in Drive and writes back a per-criterion verdict, timestamped findings, and an overall judgement to a spreadsheet.
Each of the 26 criteria was assigned to machine measurement, AI judgement or human check, and that assignment lives in a spreadsheet column, not in code. The client changes the column and the scope of automation changes with it.
| Decision | Rationale |
|---|---|
| Deliberately not automated | "Use of images without permission" — whether permission exists cannot be determined from the footage in principle, so it stays a human check |
| Never allowed to fail outright | Factual errors about product specs or pricing — an outdated model will flag a correct explanation as wrong, so the AI surfaces it but can only mark it "needs review" |
| Never dropped silently | Unregistered criteria or label collisions must not quietly remove an item. A check that has silently disappeared is the hardest class of defect to notice |
Each false positive that occurred in production was diagnosed structurally rather than patched at the symptom.
| Symptom | Root cause | Fix |
|---|---|---|
| Concept-only sessions were scored against "demonstration" criteria and unfairly penalised | Two independent sources decided whether a video contained a demonstration (title keywords vs. the model watching the footage) and they disagreed | When the two conflict, the affected criteria no longer feed the overall verdict. The items stay visible so a human can still pick them up if warranted |
| A video passed every criterion yet was flagged "needs review" over 46 counts of "background noise" | The exclusion filter matched on keywords, so transcription mishearings surfacing under a "noise" label slipped straight through | Match on sentence shape ("sounds like X, please correct to Y") instead of keywords, making it resilient to label drift |
| Identical input at an identical revision produced different results | Non-determinism inherent to generative models | Moved to an operating model where accuracy is read as a ratio across repeated runs, on the premise that a single run proves nothing. Shared with the client in advance, with an explanation prepared before the question was asked |
All three shift how strict a judgement is, so none were applied on my own authority. Cause, proposed fix and implementation cost went into a one-page summary, presented at the review meeting, and shipped only after approval.
In July 2026 I found that the review criteria had been hard-coded, so an updated criteria definition from the client had never reached production — roughly four weeks and 407 videos had been evaluated against the outdated set. Structurally, the source of truth was the spreadsheet while the code kept its own private copy; procedurally, I had trusted my own working notes instead of reopening the original. The following stopped it recurring:
Curriculum-aligned teaching material built automatically with the Gemini API and Google Slides
Built a pipeline for Japanese-language schools and cram schools that generates slide-based teaching material aligned to their curriculum — scenario writing, image generation and slide assembly all handled automatically.
| Problem solved | Approach |
|---|---|
| Working around the GAS 6-minute execution limit | Execution state is persisted to script properties and a time-based trigger resumes the batch autonomously |
| Stabilising output | Preserving fill-in-the-blank markers, keeping multilingual translations on the same line, and adding phonetic readings only to difficult characters — all controlled at the prompt layer |
| Character consistency | A characterProfile is generated and carried through the run, so the same character persists even when content is rendered as a four-panel comic |
| Split batch generation | Introduction / practice / application are generated as three separate phases, spreading API load and preventing JSON parse failures |
QR clock-in, shift planning and payroll calculation, all inside a single spreadsheet
Rebuilt a system already in daily use at a restaurant and guesthouse into a form that can be deployed to other companies. Staff clock in and out by scanning a QR code on their phone; the shift roster, worked hours and payroll calculation update in step.
| Problem solved | Approach |
|---|---|
| Payroll pinned down by tests | Expected figures for statutory holidays, hours beyond the 40-hour week, night-shift premiums, shifts crossing midnight and weeks crossing a month boundary were all calculated by hand and fixed as unit tests, so a spec change that moves someone's pay is detected |
| Dates held as strings | Date cells are treated as text throughout, preventing the off-by-one-day errors that timezone handling introduces |
| Never touch a running system | The venue running without incident was left untouched; the generic version was built as a separate configuration, prioritising stability over reuse |
AI & Automation Pipelines
Business Systems & API Integration
| Category | Tools & technologies |
|---|---|
| Cloud | GCP: Cloud Run (Service / Job), Cloud Functions, Cloud Scheduler, Cloud Workflows, Artifact Registry, Secret Manager |
| AI / LLM | Gemini API, OpenAI API, Imagen 3, Dify, RAG systems, prompt design, custom MCP servers |
| Languages | Python (Flask), JavaScript (Google Apps Script) |
| API integration | Google Sheets / Drive / Slides / Calendar / Chat / Forms, Tavily, assorted webhooks |
| Automation platforms | Google Apps Script (clasp), Make, n8n |
| Quality & operations | Regression testing against real production data, staged rollout (shadow mode), dry-run verification, incident reporting and prevention |
| Development environment | Claude Code |
Conversely, I don't take on engagements built on the premise that adding AI is efficiency in itself. I'd rather start by working out together which step, which decision, and under whose accountability is being replaced.