Skip to content
Bot jobsJob breakdowns

Stop paying Grok to do the same job twice

You ask Grok for a competitor comparison you can send a client. It comes back with an essay. You ask for a table. Then you notice the prices assume annual billing. You wanted monthly. One company

0xRovekImported from X5 min read
knapabuse2x article
See this runHouse 365 · 00492

Article

Job breakdowns

You ask Grok for a competitor comparison you can send a client.

It comes back with an essay. You ask for a table. Then you notice the prices assume annual billing. You wanted monthly. One company serves a completely different market. Now you're on your fourth message, fixing a job that sounded simple.

On the API, those extra rounds add to the bill. In the app, they eat into the time you were trying to save.

Before buying a bigger plan, I'd fix that loop. Here's a setup for getting a useful piece of client work out of Grok, keeping the instructions that worked, and cutting avoidable API spend.

Show it what you'd actually send the client

“Research these competitors” leaves a lot for Grok to guess. The audience, the format, which prices matter, how much research is enough.

Give it one previous comparison you liked. Remove anything confidential, then point out what made it useful: short entries, links beside claims, a clear billing period. A finished example gives “make it professional” something concrete to mean.

Then give it a job with an ending. For example:

Prepare a competitor comparison for a proposal to [client type]. Our offer: [what we sell and its price]. Compare only these three companies: [names and official URLs].

Return one table: company, target customer, entry paid plan, currency and billing period, key limit, source URL. Use the supplied example for the level of detail.

Use official pricing and product pages. Keep monthly billing separate from monthly-equivalent prices billed annually. If a detail isn't available on the pages you checked, mark it “not found” and keep going.

Finish with three implications for our offer, under 120 words total. Stop when those deliverables are complete. Ask before starting only if missing information would change the comparison.

For a new kind of deliverable, ask for one completed row first. Catching a wrong assumption there is easier than fixing it across a finished report. Once the format works, reuse it and let the agent complete the next job in one pass.

Give corrections the same level of detail. “Improve this” sends it back into guessing. Try: “Fix the billing period in row two, then update any conclusion affected by that correction. Keep the other rows.”

You're telling it where the work is.

Keep the instructions you finally got right

When a result is good enough to use, save the method while it's still fresh.

In Grok Bot, you can ask it to turn a completed process into a reusable skill, then reference that skill from the desktop composer's / menu. That's documented in Grok Bot's skills guide.

In Grok Bot, you can ask it to turn a completed process into a reusable skill, then reference that skill from the desktop composer's / menu. That's documented in Grok Bot's skills guide.

For this job, I'd ask:

Save this as “Client competitor brief.” Keep the approved table format, pricing rules and source requirements. Make the client type and competitor list inputs for each run. Include the final example. Show me the saved instructions.

Read those instructions once. Keep rules that belong to the workflow; move this client's particular requirements into the task inputs. Otherwise “this client wants US companies” can quietly become “every client wants US companies.”

If you're using regular Grok chat, keep the same short brief and approved example in a note you can reuse. Start the next client's task with those and the new inputs. Leave the previous client's discarded drafts behind.

This is how I'd make an agent easier to work with over time. Each useful correction becomes an instruction for the next job. You shouldn't have to explain the same damn table every Monday.

If you pay by token, check these settings too

The API gives you a few more ways to control spending.

Keep repeated instructions at the start of the request. xAI's prompt cache reuses an exactly matching beginning of the conversation. Put stable instructions and examples first, then append the new assignment. Check cached-token usage to see whether you're getting hits. How caching works.

Keep repeated instructions at the start of the request. xAI's prompt cache reuses an exactly matching beginning of the conversation. Put stable instructions and examples first, then append the new assignment. Check cached-token usage to see whether you're getting hits. How caching works.

At the current global API rates, Grok 4.6 input costs $2 per million tokens, or $0.50 when cached, for requests below the 200,000-token prompt threshold. Model pricing, pricing tiers.

At the current global API rates, Grok 4.6 input costs $2 per million tokens, or $0.50 when cached, for requests below the 200,000-token prompt threshold. Model pricing, pricing tiers.

At the current global API rates, Grok 4.6 input costs $2 per million tokens, or $0.50 when cached, for requests below the 200,000-token prompt threshold. Model pricing, pricing tiers.

For example, an automated workflow might reuse 20,000 tokens of product information and instructions across 1,000 requests. That repeated input costs $40 if every request misses the cache. With one initial miss and 999 full hits, it's $10.03. New input, output and tool charges are additional. Keeping the cache working can matter more than shaving a few words off your next message.

Match the reasoning effort to the job. Grok 4.6 defaults to high reasoning and supports lower settings. Try low on straightforward extraction or formatting, and keep it only if it still meets your requirements. Use more reasoning for work that needs it. Supported settings.

Match the reasoning effort to the job. Grok 4.6 defaults to high reasoning and supports lower settings. Try low on straightforward extraction or formatting, and keep it only if it still meets your requirements. Use more reasoning for work that needs it. Supported settings.

Give research a boundary. For this comparison, official pages should cover the job. There's no reason to add an X sentiment scan unless the client needs one.

That matters even more with the announced API pricing change: from September 21, 2026, at noon Pacific, X Search moves from $5 per 1,000 calls to $5 per 1,000 posts fetched and $10 per 1,000 profiles fetched. Posts returned inside threads count too. Pricing notice.

That matters even more with the announced API pricing change: from September 21, 2026, at noon Pacific, X Search moves from $5 per 1,000 calls to $5 per 1,000 posts fetched and $10 per 1,000 profiles fetched. Posts returned inside threads count too. Pricing notice.

If you build your own agent loop, use the SDK's max_turns to bound a research request. It limits turns; several tools can run in one turn. For a money budget, track spending across the whole job and stop launching requests when the budget is exhausted. Tool limits.

If you build your own agent loop, use the SDK's max_turns to bound a research request. It limits turns; several tools can run in one turn. For a money budget, track spending across the whole job and stop launching requests when the budget is exhausted. Tool limits.

The API returns billed cost in usage.cost_in_usd_ticks; divide by 10 billion to get dollars. Add up every request, including retries. Cost tracking.

The API returns billed cost in usage.cost_in_usd_ticks; divide by 10 billion to get dollars. Add up every request, including retries. Cost tracking.

For the next few client briefs, keep three numbers: total API cost, minutes spent fixing the result, and whether you'd actually send it. Change one thing at a time.

A cheap first answer stops being cheap if you spend half an hour rescuing it. Getting a comparison ready for the client, then moving on to the next job, is the saving I'd care about.

Published on grokbot.sh. Cite the public log, not a prompt pack.

Command Menu