Skip to main content

Lab Notebook · Utility Tools

TweetDelete: a small, finished Django tool for bulk-deleting tweets

In March 2022 we shipped a complete, working Django web app that bulk-deletes tweets via the Twitter API — real OAuth, real database, real deployment. Small and finished beats big and vapourware: this is tiered 'shipped' honestly, not because it was ambitious, but because it actually worked, end to end, for its scope.

JR
Jon RossFounder, vocabotics — 15 years building safety-critical systemsLab report · dated 10 March 2022
Verified by a human. Drafted with AI, verified by a human. Jon Ross, 10 Mar 2022
Living document. Reviewed 10 Mar 2022
Entry date
10 March 2022
Category
Tooling
Access
🔓 Public
Shipped & measuredProven

A small tool that did exactly one thing — delete tweets in bulk — and did it completely, end to end, with real OAuth and a real database behind it.

Django 3+
web framework
Tweepy
Twitter API OAuth integration
PostgreSQL
backing database

Honest evaluation

Proven

A complete, deployed, end-to-end tool for a modest scope — the claim made was completeness, not importance, and completeness is what shipped.

What would prove or disprove it further

What would prove or disprove it further: the claim is already closed — a shipped, working tool for its stated scope. The only way to meaningfully re-test it now would be to run it again against the current Twitter/X API and confirm the OAuth flow still holds, since third-party API contracts are exactly the kind of thing that quietly breaks with time; that's a real, cheap falsification test if the tool were ever needed live again.

The evidence — full reasoning behind the verdict

Verdict: proven. The claim was to ship a complete, working bulk-tweet-deletion tool with real OAuth against the live Twitter API, and it shipped — deployed, end to end, not a demo of one piece of the flow.

The evidence is the deployment itself: Django 3+, a genuine Tweepy OAuth integration handling token refresh and rate limits, PostgreSQL-backed state, Gunicorn serving it. Nothing here rests on a claim of importance — only on a claim of completeness for a modest scope, and completeness is what a real, running deployment demonstrates.

Not every project needs to be a research bet. TweetDelete is here because it was finished, useful, and real — a different kind of honest entry than the prototypes and pivots that sit around it in the archive.

What it was

A Django web application for bulk-deleting tweets through the Twitter API — point it at an account, authenticate, and it works through the account's tweet history deleting them in bulk rather than one at a time by hand.

What we built

Shipped & measured

A working end-to-end tool: Django 3+ on the backend, Tweepy for a real OAuth integration against the Twitter API, PostgreSQL for state, and Gunicorn serving it. Authentication flow, API rate-limit handling, and a database-backed job of working through a user's tweet history — the whole loop, not a demo of one piece of it.

What we learned — including the honest negative(s)

This was a quick, complete project, and the lesson is correspondingly small and specific: a real third-party OAuth integration, done properly, means handling token refresh, API rate limits, and failure modes that a toy example skips past. Django's auth flows and a real external API, wired together end to end, is a rep worth having on the record even when the product itself is unglamorous.

The honest edge here isn't a limitation of the tool — it did what it set out to do. The edge is one of framing: this is a utility, not a research result. It earns its "shipped" tier honestly, on the strength of being complete and deployed for its actual, modest scope — not on the strength of being important.

Where it went / status

Shipped and complete as a standalone tool in March 2022. It was not developed further because there was nothing more it needed to do. It stands in the record as a small, finished counterweight to the bigger, unfinished bets elsewhere in this archive — proof that "small and complete" and "big and still becoming" are both legitimate shapes for a project to take.

What is still open — kept visible

The honest edges, next to the wins. This is what turns 🔬 into 🟢 — honestly.

  • A utility, not R&D — no research claim is made for this entry.
  • Included for the honest volume of the record: small and finished sits next to big and unfinished elsewhere in this archive, and both are true.

Sources

  1. vocabotics project audit — TweetDelete (Django + Tweepy bulk-delete tool), Mar 2022vocabotics internal project history · as of March 2022

    We use cookies.