Inspiration

A social video can look completely ready to publish and still contain a costly mistake.

A creator might say the wrong discount, forget a sponsorship disclosure, use an outdated promo code, place important text underneath TikTok's interface, or export the video in the wrong format. These mistakes are often discovered only after someone manually reviews the final video—or worse, after it has already been published.

Software developers have linters that catch problems before code ships. I wanted to build something similar for social content.

That became PostLint: pre-publication QA for social video.

What it does

PostLint analyzes a finished short-form video before it is published to platforms such as TikTok, Instagram Reels, or YouTube Shorts.

A creator uploads the actual video, selects the target platform, adds the intended caption, and provides the campaign brief.

PostLint then builds an evidence-based preflight report across the media itself, spoken content, campaign requirements, visual evidence, and platform placement.

It can detect issues such as:

  • Incorrect aspect ratio, resolution, duration, or missing audio
  • Missing sponsorship disclosures
  • Missing or incorrect promo codes
  • Spoken discount mismatches
  • Prohibited phrases or claims
  • Missing calls to action
  • Visual requirements that cannot be confidently verified
  • Content positioned inside estimated platform UI danger zones

Instead of simply saying that something is wrong, PostLint connects findings back to the video.

Timestamped findings are clickable, allowing the creator to jump directly to the relevant moment.

AI interprets. Code verifies.

One of the most important design decisions in PostLint was deciding what AI should not be trusted to do.

Gemini is used for tasks that require interpretation, including timestamped transcription, understanding natural-language campaign briefs, and observing sampled visual evidence.

But objective compliance decisions are handled by deterministic TypeScript rules whenever possible.

For example, AI can identify that the creator said "15% off." PostLint's deterministic campaign engine then compares that evidence against the required 20% discount and produces the failure.

For platform safe zones, AI can observe the location of creator-authored content, while deterministic geometry calculates whether its bounding box intersects an estimated platform interface zone.

This separation makes the system more inspectable and reduces the risk of turning uncertain AI output into confident compliance claims.

Revision Assistant

Finding problems is useful. Helping creators fix them is better.

PostLint converts actionable findings into a Revision Assistant.

Corrections are separated into:

  • Safe caption fixes
  • Manual edits
  • Items requiring review

PostLint will only automatically apply a change when the correction is objective and safe.

For example, it can add a missing #ad disclosure or required promo code to a revised caption.

But if the creator says "15% off" when the campaign requires 20%, PostLint will not pretend that changing the caption repairs contradictory spoken audio. It marks the issue as a manual edit and points the creator to the relevant timestamp.

The original report and caption remain unchanged, so automated assistance never rewrites the evidence used to produce the original verdict.

Platform-aware preflight

PostLint also includes estimated safe-zone overlays for TikTok, Instagram Reels, and YouTube Shorts.

These overlays help creators inspect whether important content may collide with interface elements such as navigation, captions, or interaction controls.

When high-confidence visual evidence is available, PostLint combines AI-observed bounding boxes with deterministic geometry to produce platform-placement warnings.

The zones are intentionally presented as PostLint estimates rather than official platform specifications.

How we built it

PostLint is built with Next.js, React, TypeScript, FFmpeg, FFprobe, Zod, and the Gemini API.

The pipeline works roughly like this:

  1. The uploaded MP4/MOV is temporarily processed on the server.
  2. FFprobe extracts deterministic media metadata.
  3. FFmpeg extracts audio and representative video frames.
  4. Gemini produces structured transcription, interprets the campaign brief, and evaluates supported visual requirements.
  5. Zod validates structured AI responses before they enter the pipeline.
  6. Deterministic TypeScript engines evaluate campaign requirements and platform geometry.
  7. PostLint combines the evidence into one structured report.
  8. The Revision Assistant turns actionable findings into safe fixes, manual edits, and review tasks.

Uploaded media is processed temporarily rather than stored as a permanent user library.

Challenges

The hardest part was not simply getting an AI model to analyze a video. It was deciding when its output was reliable enough to affect a result.

Visual analysis is inherently uncertain. A model might partially recognize a logo, infer something from an ambiguous frame, or return evidence that does not correspond to a sampled timestamp.

So PostLint uses conservative gates.

Visual requirements only pass automatically when evidence is verified with high confidence, includes explicit evidence, and references a real sampled frame. Ambiguous observations become review items instead of fabricated passes or failures.

Platform detection follows the same philosophy: AI observes; deterministic geometry decides whether a validated bounding box actually intersects a configured danger zone.

Another challenge was processing real media in a deployable web application. FFmpeg/FFprobe binary resolution, temporary-file cleanup, serverless upload limits, malformed videos, partial provider failures, and browser video behavior all had to be handled without breaking the rest of the report.

What we learned

The biggest lesson was that adding more AI does not automatically make an AI product better.

PostLint became much stronger once AI was treated as an evidence-producing component rather than the final authority.

Natural-language interpretation and visual understanding are areas where Gemini is extremely useful. Exact comparisons, geometry, validation, and correction safety are areas where deterministic code is much easier to reason about.

Combining the two created a system that is both capable and inspectable.

We also learned that useful creator tooling needs to go beyond detection. Clickable timestamps, safe-zone visualization, revised captions, and structured revision packages make the output something a creator can actually act on.

What's next

PostLint currently focuses on pre-publication analysis and revision guidance.

Future versions could add direct editor integrations, richer OCR and on-screen text analysis, configurable brand rule sets, team review workflows, additional publishing platforms, and re-analysis of revised content.

The long-term goal is simple:

Give social content the same kind of automated quality gate that software already has before it ships.

Built With

Share this project:

Updates

Submission history