fault detected · trading loop

Your bot keeps dying at 3am.
We find out why — and stop it happening again.

Debugging and stabilization for individual traders' Python crypto bots. Non-custodial — we work against your code and your exchange API keys, never your funds. Bug fixes, real error handling, and a written diagnostic report you can actually read, delivered with tests that prove it.

what we fix

If any of this sounds familiar, it's fixable

These are the failure patterns we see most often in retail trading bots — usually a handful of small, specific bugs, not a rewrite.

critical

Stops trading with no error

A dropped connection or a single unhandled exception kills the whole process. No crash log, no alert — you just notice hours later that it's been sitting idle.

critical

Duplicate or missing positions after a restart

Position state lives only in memory. Restart the bot and it forgets what it was holding — and can re-enter a trade it already made.

high

Orders rejected for "invalid precision"

Plain float math for order size drifts past what the exchange allows, and the order bounces — sometimes, not always, which makes it maddening to track down.

high

Rate-limited into silence

Tight polling loops with no backoff get throttled by the exchange, and a bare except: pass somewhere swallows the error so you never see it happen.

medium

No real logs to debug from

print() statements that vanish when the terminal closes. When something breaks overnight, there's nothing to look at in the morning.

medium

Slow, wasteful, or API-key-in-source

Redundant polling, blocking calls where async would do, and credentials committed straight into the script instead of environment config.

how it works

Four steps, one delivery

01

You send the code

Your bot's source (or a repo link), plus what you've noticed going wrong — crashes, missed trades, rejected orders, whatever prompted you to look for help. No exchange login or funds ever change hands.

02

Full diagnostic

Every bug found gets a severity, a root cause, and the symptom it explains — written up so you can read it even if you didn't write the original code. See a real example in the sample report.

03

Fixed in place, with tests

Error handling, retry/backoff, state persistence, and precision-safe order sizing — applied directly to your bot's logic, not rewritten from scratch. Tests cover the failure paths that used to crash it, so the fix is provable, not just claimed.

04

Delivered

Patched codebase, the diagnostic report, and a short walkthrough of what changed and why. You own all of it outright.

pricing

Three ways in, depending on how deep it needs to go

Diagnostic Sprint
$149
  • Full read-through of your bot's code
  • Written report: every bug found, severity, root cause, fix
  • No code changes made
  • Good if you want to fix it yourself, or decide first
Request this
Stabilize + Harden
$650
  • Everything in Debug & Stabilize
  • Performance pass — remove blocking calls, cut redundant polling
  • Crash-alert hook (Telegram/webhook) so you know within seconds
  • 30-day warranty on regressions tied to the delivered fix
Request this
proof, not promises

This is the kind of fix you get

The bare except: pass that hides everything

The single most common bug we find. A real error — rate limited, insufficient funds, a genuine bug — happens, and this line makes it disappear. No log, no alert, no retry. The trader has no way to know the signal did nothing.

Read the full diagnostic report → — 10 bugs found in a sample bot, each with severity, root cause, and the exact fix, verified by a 15-test suite that fails against the original code and passes against the patched one.

before/bot.py
except: pass
after/bot.py
except InsufficientFunds as exc: logger.error("Insufficient funds: %s", exc) except InvalidOrder as exc: logger.error("Order rejected: %s", exc) except ExchangeError: logger.exception("Unrecoverable exchange error")
get started

Tell us what your bot is doing wrong

Payment

Most jobs come through Upwork, Freelancer, or Fiverr, paid via that platform's standard escrow. If you reach out directly, pay by card/bank via the hosted checkout below, or crypto if you'd rather pay from the exchange account you're already in — both go to the same place:

Pay by card or bank transfer →

Card details are entered on Melio's own secure page — never here. You'll get an invoice number (e.g. INV-0001) when a job is scoped — enter it in the memo/note field at checkout so the payment matches automatically. Card fees are set by Melio, not us.

0x7C1e9c55EDe1fcB679EECa96BD61736744383eF5

USDC/USDT or ETH on Ethereum, Base, Arbitrum, or Polygon. No card details are ever collected on this site.