Activity
Mon
Wed
Fri
Sun
Sep
Oct
Nov
Dec
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
What is this?
Less
More

Owned by Tuni

The Agent Lab

3 members • Free

The room where I build Beckett (a personal AI engineer) in public. Build logs, teardowns, and member builds. Specifics, not theory.

The RoboNuggets Network (free)

70k members • Free

High Ticket Ecom Academy™

18.1k members • Free

Seller's Edge - Etsy POD

151 members • $7/month

AI Art Sellers Collective FREE

10.8k members • Free

No Code AI Agent Builders

7 members • $9/month

Skoolers

161.9k members • Free

10 contributions to The Agent Lab
Build Log: I gave away the part that sounds best
Voice-in just went free. You can send Beckett a voice note on Telegram now and it just answers, no paid tier required. That wasn't the plan when I built the split. Transcription lived behind the same paywall as the talking-back part: the whole voice layer, gated together, because "voice" sounded like the premium feature. Then I looked at what the free version actually did with a voice note. It replied "voice transcription is not set up yet" and pointed you at setup instructions that did not exist in the free repo. You type, it answers fine. You talk, it hands you a dead end. The bot goes deaf in exactly half the conversation, and that's the half that feels like magic. That's not a demo, that's a reason to bounce before you ever want the upgrade. So voice-in moved. Groq's whisper-large-v3-turbo does the transcription free, or you can run local whisper.cpp if you don't want your voice notes touching an API at all. Either way: you talk, Beckett reads it like you typed it. What stayed paid: Beckett talking back. ElevenLabs for the actual voice, Vapi for the part where it calls your phone when something's urgent. That's the tier where a text bot turns into a phone assistant, and it's still the best argument I've got for upgrading. You don't need me to explain it either, there's a live line on allytic.ai you can call and hear it for yourself. That call sells better than any paywall ever did. Here's the part I didn't expect. While I was moving the transcribe module and swapping the placeholder voice stub for a real handler, I found the free repo's health-check script was testing for the wrong provider's API key. It checked for a Gemini key. The code runs on Groq. Voice had never actually been verifiable in the free version, the test just always passed for the wrong reason. There's a Phase 7 in setup now too: voice transcription, Groq or local, with its own test:voice script so that particular embarrassment doesn't happen again. My wife's been on me for months to make the whole setup readable by an actual normal person, not just developers, and a full walkthrough guide for that is coming.
0
0
Build Log: Upwork thought nobody was home
Upwork stopped sending me job alerts and didn't tell me why. I built a watcher for this. It's part of Beckett, the AI chief of staff running on my VPS (the same email watcher from a previous build log). Every 5 minutes it polls Gmail for Upwork job-alert emails and pings my phone on Telegram the second a matching job drops, so I can get a proposal in during the golden window before the pool floods. For 32 hours, silence. I noticed the trickle about a day late and asked Beckett to dig in. First check: is the watcher even alive. Logs looked clean. Passing every 5 minutes, "0 new messages" each time. Not broken, just correctly reporting nothing to report. Second check: spam, trash. Nothing there either. Third check: the 12 saved searches that generate these alerts. All intact. Fourth check: alert preferences in the Upwork settings. Also intact, untouched. So the watcher was fine and the searches were fine. The emails had just stopped existing. The in-app alert feed told the real story. It had gone quiet at the exact same job as the last email. That's not an email delivery problem. That's the alert engine itself pausing. Here's the twist. Every one of those alert emails carries a tracking pixel: Upwork watches whether you open them. My watcher reads the alert emails straight through the Gmail API. It never touches a browser, never loads a tracking pixel. Which means as far as Upwork could tell, I'd received hundreds of alert emails in a row and opened exactly zero of them. Ever. Around day 26 of that streak, the engine apparently decided nobody was home and shut the feature off for me. The fix: the watcher now fires each alert email's tracking pixel itself, right after it processes the email, pinned to the sender's own tracking host. That's not spoofing anything. The email genuinely is being read, more reliably than any human reads their inbox. The pixel just says so in the only language the sender understands. I also retro-fired the pixel on the last 3 alerts before the outage and re-saved my alert preferences to force a re-registration.
0
0
A 9-page build guide had two mistakes in it. My setup caught both before either cost real money.
Picked up a build guide this week: 9 pages, walks through wiring up a "/generate" media skill, images and video through cheap model routing. Handed it to my chief of staff and told it to build the valuable half into BubbleBeam, my actual SaaS with paying users, same day. It didn't follow the doc literally. First move was splitting the ask, writing its own design spec, then a 9-task implementation plan. Then it dispatched itself: Opus agents doing the implementation, a separate reviewer agent grading each task before the next one started, and a final adversarial review of the whole branch. All of it ran in an isolated git worktree while I did other things. Two catches made the whole process worth it. Catch one: the guide's request format for the image model was wrong. The live API wanted a different field shape than what was in the doc. An agent caught it by pulling the provider's actual OpenAPI spec before spending a dollar on it. First paid call worked first try. Catch two: the guide's video cost estimate was low. It quoted roughly $1.60-2.80 per 8-second clip. Real list price is about $3.20. Doesn't sound huge until you're running it at volume with no ceiling. So video generation shipped behind an admin-only flag with cost controls until the pricing settles, instead of going straight to every user. What actually shipped: admin-only text-to-video on Veo 3.1 (async jobs, stored clips, a live progress readout), and a user-facing "Text-heavy image" toggle that routes to GPT Image 2 when you need readable text in an image, a nickel a shot, with automatic fallback to Gemini if it fails. Total spend to prove both paths worked live: about $3.30. First video: 8 seconds, 720p, audio, generated in under a minute. First image: a neon diner sign with text you could actually read, which is the exact problem GPT Image 2 solves and Gemini usually botches. The generation itself isn't the hard part anymore. Every model provider ships that. What made this shippable same day was the stuff around it: cost gates, routing to the cheapest model that still does the job, a review agent grading every task before the next one starts, one flat storage path instead of three. Guides teach you the API call. They don't teach you the rails that keep the API call from becoming an expensive mistake.
0
0
The case study was still running when I wrote it
A few months back I built something small: a watcher that checks my business inbox every 5 minutes for Upwork job alerts, filters out Upwork's habit of re-sending the same job as "new" hours later, and pings my phone the second something real lands. Not glamorous. I built it because I was checking my inbox manually and losing jobs to the clock. A hot Upwork posting can go from under 5 proposals to 20+ in under an hour. A no-history account buried under 20 other names doesn't get read at all. Today it did its job. A $5M/year e-commerce company posted for a long-term AI advisor to their four-person leadership team. 14 years on the platform, $145K spent, 48 hires. The kind of listing that gets buried in minutes. The alert landed 1 minute after the job went live. 0:01 alert lands, watcher pings my phone 0:07 job page open, under 5 proposals, client viewed applicants 2 min ago 0:26 proposal submitted (mid-flow Connects top-up included) One of the screening questions: describe one AI implementation you're most proud of and the measurable business impact. The honest answer was the thing that had just alerted me to the question. Response time on hot jobs went from hours to about 15 minutes. It's converted 26 alerts into submitted proposals now, this one included. I wasn't writing a case study. I was inside one. Second question asked which $1M to $30M e-commerce companies I'd worked with. I haven't. So I said that first: I run small-scale e-commerce myself, not a $5M+ shop, and I said so plainly upfront. Then I gave what I actually run: an Etsy printables shop, a 10-machine vending route, a small SaaS with paying users. No padding. Operators can smell an inflated answer, and they respect the ones who skip it. Nobody's replied yet. I'm not calling this a win. But the loop closed on itself before I finished typing: I built a tool to catch opportunities faster, and it became the proof that the tool works, running live, inside the application it made possible. The thing wrote its own résumé.
0
0
The number on the job page was a lie. By 4x.
58 proposals since early July. Brand-new account, $0 earned. My rule was simple: never submit if the pool already shows 10 or more proposals. A no-history account buried under a bigger number never gets seen. Upwork doesn't show you the real count. It shows you a range: "10 to 15." "20 to 50." "50+." For a month I treated that range as a ceiling. Once I found a "15 to 20" job that turned out to have 3 real proposals, and that confirmed the theory: the range is generous, the real number is usually lower. Today I had an agent sweep every active proposal, about 20 of them, read-only, pulling the Insights panel on each one. Insights shows the actual count. Not the range. Displayed "10 to 15": real count 44. Displayed "50+": real counts 85, 117, 147, 208. Not lower. Three to four times higher. My whole doctrine was backwards. The range isn't a ceiling. It's a floor. Here's the part that mattered more. Of 11 proposals the agent could check for open status, 10 have never been opened. Not rejected. Never opened. The three biggest pools, 117, 147, 208, all sit at zero opens. Zero. Those clients aren't reading the pool at all. They're hiring off invites they send out themselves. Every one of those hundreds of freelancers paid Connects to apply to a stack nobody will ever touch. One proposal, out of 58, has ever been opened. I found out today. One. The agent ran this whole audit in 16 minutes. Read-only, no submissions, nothing changed. It just looked at the numbers I'd been avoiding for a month and told me what they actually said. I've been optimizing the thing I could see: the letter, the profile, the pitch. The platform was quietly feeding me a rosier number the whole time, and I built a rule on top of it that pointed the wrong direction. New rule as of this afternoon: displayed band is a floor, assume 3x. And the real question isn't how to write a better proposal. It's how to get opened at all, because right now that's the entire bottleneck, and no amount of better writing fixes a proposal nobody clicks.
0
0
1-10 of 10
Tuni Kern
1
5 points to level up
@tuni-kern-3860
The room where I build Beckett (a personal AI engineer) in public. Build logs, teardowns, and member builds. Specifics, not theory.

Active 5d ago
Joined Feb 20, 2026