DEV Community

bestbee
bestbee

Posted on

Should Your EM Park a 21-Day Public Sprint on a Free AI Lane? Use This Remainder Sheet

Picture a Thursday drill I run with platform leads. Not a client story. Six engineers, twenty-one days left on a public PR sprint, and a Slack paste that says 10 million free tokens plus a free server.

Is that enough? Enough for what? A token pile does not review a public diff. A free server nobody has read about is not a plan. It is an empty cell with a cheerful name.

If that paste would not change your mind when the numbers move, you do not need a sheet. If it would, stay with me. The call flips on reviewer minutes, days left, and whether the page still matches the paste.

Three lanes, one calendar

You are not picking an AI strategy for the year. You are parking one short public sprint. Three lanes. That is the whole menu.

Lane A is hosted and advertised as free: free model access, plus a free server option. Lane B is self-host on a platform you already run. Lane C is a paid seat, priced from a quote dated this week, not from memory.

Will the editor feel the same on each lane? Probably not. I do not care yet. I care whether the lane survives the calendar, the data boundary, and a written exit. A quality bake-off is a different article. This one is a go or a no-go.

Disclosure: This article was prepared as part of MonkeyCode's product outreach.

MonkeyCode sits on the table as one Lane A option. The outreach describes an open-source project with free model access and a free server option, and a claimed free allotment of about 10 million tokens. Treat that as a claim to verify, not as a measurement I took. I will not invent model names, hardware, duration, rate limits, or a promise that the offer stays.

Open the current terms on signing day. Screenshot them. The number in the screenshot is F. If the page is vague, F is blank, and blank fails the gate. Confirm the license in the repo the same day. The words open source on a slide are not a license name. I am not going to guess one for you.

Write the variables in pencil

A scorecard is a conversation tool. It is not objective truth. It is how you stop a Slack paste from becoming a budget.

Cells you must fill

  • R, sprint days left. Drill value: 21.
  • N, engineers on this sprint. Drill value: 6.
  • D, AI-assisted public PRs per engineer across R. Drill value: 4.
  • T, tokens you assume per assisted PR. Drill value: 80,000. A planning guess, not a benchmark.
  • F, allotment copied from today's terms page. The paste said 10,000,000. The screenshot wins.
  • M, reviewer minutes per public AI-assisted PR. Drill value: 35.
  • H, loaded reviewer-hour cost from your finance partner. Drill value: 80 dollars. Not an industry average.
  • S, platform hours to stand up self-host. Drill value: 16. If you have never done it, do not write 2 to look brave.
  • U, hours to read what the free server option actually is. Starts unknown.
  • P, paid price per engineer for this window. Placeholder: 20 dollars. Replace it with the quote.
  • X, hours per engineer to leave the free lane mid-sprint. Drill value: 2.
  • Q, your probability that terms or access change before R ends. Drill value: 0.15. Say it out loud so people can argue.

Owner is the platform lead. Expiry is 14 days, or the next terms change, whichever comes first. After that, the card is stale on purpose. Stale data is how a free tier surprises a team that thought it had already decided.

Signing-day sequence

  1. Read the current terms. Screenshot. Set F, or stop.
  2. List the sprint repos. Security walks the data gate before anyone invites a contributor.
  3. Run the sheet with screenshot F, not with the Slack number.
  4. If headroom fails, shrink D or leave Lane A. Do not negotiate with the cap in the channel.
  5. Name the exit owner and the last safe move date.
  6. Only then invite the six.

Skip a step and you do not have a decision. You have optimism. Would you let a vendor invoice ship with a blank price? Then do not let this card ship with a blank F.

A filled Thursday, then the insults

Demand is N times D times T. Six times four times 80,000 is 1,920,000 tokens.

If F is still 10,000,000 on the page, demand is about 19 percent of the pile. Looks fine. Fine is how a second squad burns the rest without telling you. Cap this sprint at half of verified F, and write that cap where the EM can see it.

Reviewer tax is N times D times (M / 60) times H. Twenty-four PRs at 35 minutes is 14 hours. At 80 dollars an hour, that is 1,120 dollars. The tokens were the cheap line. Did anyone put those afternoons on the sprint board?

Expected exit labor is Q times N times X times H. At 0.15, that is 144 dollars. Small, until nobody has read the terms and you honestly set Q to 0.5. Then it is 480 dollars, plus a scramble. Still smaller than review. Still not zero.

Self-host standup is S times a platform rate. Sixteen hours at 90 dollars is 1,440 dollars of time, and that assumes the machines already exist. I am not going to invent a SKU, a region, or a monthly bill. If you need to buy hardware, Lane B is a procurement ticket. That ticket will not land inside a 21-day sprint. Why pretend it will?

Paid cash is N times P. Six times 20 is 120 dollars at the placeholder. You do not pay that for tokens. You pay it when the quote includes a term Lane A does not show you: an audit log, a data-processing clause counsel will accept, or a support path with a human name.

If the quote includes none of those, you are buying a sticker. If it includes one you actually need, 120 dollars can beat a lane whose cash price is zero. Strange, until you price the constraint instead of the sticker.

Lane Cash you can cite Labor you still pay Walk away when
A, free hosted Whatever today's terms say, often zero Review, exit risk, and U F blank, data gate fails, or headroom fails
B, self-host Only machines you already run S hours, plus ops you already own S plus U does not fit inside R
C, paid N times P from a quote under 14 days old Review, unless the quote changes the workflow Quote is stale, or it buys no term you need

Lane A can cost zero dollars and still lose. Lane C can be the adult choice at coffee money. Lane B can be correct and still too slow. Which of those sentences bothers your Slack thread?

Three flips

I do not trust a recommendation that cannot name its kill switch. Here are three. Move any one of them and I want the card torn up.

Flip F. Signing day shows 500,000 tokens, not 10,000,000. Demand at 1.92 million does not fit. Lane A is dead for this sprint. You shrink D, or you leave. You do not try it and see on a public repo.

Flip M. Public review slips from 35 minutes to 70. Reviewer tax goes from 1,120 dollars to 2,240. That can swallow a modest self-host standup. The free lane did not raise a token price. Your attention did. Would you still call it free in the retro?

Flip R against S plus U. Ten days left. Self-host still looks like 16 hours, and U is blank because nobody opened the free-server docs. You cannot install your way out. Either Lane A passes every hard gate today, or you cut the sprint. A short calendar is not a waiver for a fuzzy data boundary.

I would rather drop four public PRs than learn on day 12 that the free server option was a queue, a region lock, or a clock. Those are the details I am refusing to fabricate. U stays blank until a person writes one sentence from the current page.

Gates, owner, expiry, exit

Fail one gate and Lane A is out for that repo. Do not average. Averages hide the landmine, and a landmine in a public diff is not a rounding error.

  1. Terms. A named person attaches a screenshot from the last 7 days. It shows the allotment, the free server option, and at least three exclusions.
  2. Headroom. Projected demand is at most half of verified F. Blank F fails. A second squad sharing the same pool fails too, unless you split F in writing.
  3. Data. No production credentials, customer data, private keys, or realistic customer fixtures in the sprint repos. A public PR is a megaphone. Do you really want a fixture that looks like a customer in that megaphone?
  4. Narrator. Each AI-assisted PR names a human who can explain the diff with the tool closed. If reviewers are already late, a free lane will not save the sprint. It will add diffs.
  5. Exit. The card names the backup lane, the owner, and the last date a move is still cheaper than finishing in place.

Copy this exit line onto the card: if any gate fails, or if measured M exceeds the M you wrote, stop new AI-assisted public PRs the same day and finish in-flight work by hand.

The platform lead signs. Security vetoes a fuzzy data gate. An EM who wants the contribution graph does not outvote a blank F. Expiry is the date on the card, not a feeling that the sprint is going well.

Run the arithmetic locally

This is a proposal script. I have not run it against a vendor API, and it does not contain one. It adds and multiplies. Check it with a pencil if you do not trust the file.

date -u +%F
python3 remainder_sheet.py
git log --since="2026-09-01" --until="2026-09-30" --merges --oneline | wc -l
Enter fullscreen mode Exit fullscreen mode

The date stamp goes above the screenshot. The git count is a prior window, not a forecast. If that history is private-only, do not reuse it as D for a public sprint. Public review is a different sport. Raise M or cut D until a reviewer nods.

# remainder_sheet.py
# Unexecuted proposal. Not a benchmark.
# Pass f=None when the terms page has not been read.

def sheet(n, d, t, f, m_min, h, s_hours, platform_rate, paid, x_hours, q):
    demand = n * d * t
    review = n * d * (m_min / 60.0) * h
    exit_labor = q * n * x_hours * h
    headroom = None if f is None else f - demand
    allotment_ok = False if f is None else demand <= 0.5 * f
    return {
        "demand_tokens": demand,
        "headroom_tokens": headroom,
        "allotment_ok": allotment_ok,
        "reviewer_tax_usd": round(review, 2),
        "exit_labor_usd": round(exit_labor, 2),
        "self_host_standup_usd": round(s_hours * platform_rate, 2),
        "paid_cash_usd": round(n * paid, 2),
    }

if __name__ == "__main__":
    print(sheet(
        n=6,
        d=4,
        t=80_000,
        f=10_000_000,  # replace with the screenshot; use None if unread
        m_min=35,
        h=80,
        s_hours=16,
        platform_rate=90,
        paid=20,
        x_hours=2,
        q=0.15,
    ))
Enter fullscreen mode Exit fullscreen mode
remainder_sheet:
  owner: platform-lead
  signed_on: 2026-10-08
  expires_on: 2026-10-22
  f_tokens_verified: null
  backup_lane: self-host-or-paid
  last_safe_exit_date: 2026-10-15
  measured_m_minutes: null
Enter fullscreen mode Exit fullscreen mode

Leave f_tokens_verified null until the screenshot exists. A filled YAML with a null F is a no. It is not a draft you finish later, after the invites have already gone out.

Who should not use this

Skip the sheet if the repos hold customer data. Skip it if counsel needs a signed data agreement this month and Lane A cannot show one. Skip it if you need an uptime promise. I did not verify one, and I will not compose one.

Skip it as a procurement stamp. Skip it as a model-quality ranking. A free allotment is not a quality claim, and I did not run an eval. Do not borrow these drill dollars for a board slide. They are assumptions, and they expire with the card.

Skip it if no one will own the exit. Columns without an owner are a slogan. Self-host is the better default when the data gate fails and the platform is already yours. Paid is the better default when this week's quote buys a term you can hand an auditor.

A free hosted lane, MonkeyCode's or another, fits a short public sprint only when F is verified, headroom holds, review is staffed, and the exit date still sits inside R.

If a free lane is already on your shortlist, pin the terms screenshot to the card before you invite anyone. If that lane is MonkeyCode, read the current free-model and free-server terms, then decide with the sheet, not with this draft. Move one cell until the call flips.

Which cell is fragile on your sheet: F, M, or the days left before standup no longer fits?

Top comments (0)