Skip to content

postcardhq/postcard

Repository files navigation

Postcard

License: MIT TypeScript Next.js AI SDK Gemini Turso Drizzle Playwright OpenAPI Mintlify Scalar DeepWiki

Trace the Truth.

Postcard Illustration

Postcard is a digital forensics tool dedicated to tracing viral content back to its definitive source. By auditing how much a post has drifted from the ground truth, it calculates a Postcard Score to restore credibility in the post-truth era.

Hackathon submission

Pipeline architecture

sequenceDiagram
    participant U as Verification Platform (/postcards)
    participant API as API Route (/api/postcards)
    participant P as Forensic Pipeline
    participant I as UnifiedPostStrategy (oEmbed/Jina)
    participant C as Corroborator Agent (Gemini)
    participant V as Verifier Agent (Gemini)
    participant DB as Database (Turso)

    U->>API: POST /api/postcards { url: "https://x.com/..." }
    API-->>U: HTTP 202 { postcardId, status: "processing" }

    API->>P: processPostcardFromUrl(url, postcardId)
    P->>DB: Update progress (stage, message, progress)

    alt Cache Hit
        DB-->>P: Return cached report
    else Cache Miss
        P->>I: unifiedPostClient.fetch(url)
        I-->>P: High-fidelity Markdown
        P->>DB: Update progress (stage: "scraping", progress: 0.1)

        P->>C: corroboratePostcard(content)
        C-->>P: Independent Evidence & Verdict
        P->>DB: Update progress (stage: "corroborating", progress: 0.4)

        P->>V: auditPostcard(url, postcard)
        V-->>P: Origin & Temporal Scores
        P->>DB: Update progress (stage: "auditing", progress: 0.7)

        P->>P: Calculate Postcard Score
        P->>DB: Persist analysis (status: "completed", progress: 1)
    end

    P-->>API: PostcardResponse + ForensicReport
    API-->>U: (via polling)

    Note over U: Polls GET /api/postcards?url=...<br/>every 3 seconds for status
    Note over U: When status="completed", displays report
Loading

User flow

Users enter a post URL, which triggers the forensic pipeline. Postcard then displays a Postcard Score and a detailed subscore breakdown.

Postcard prioritizes the direct URL entrypoint to ensure absolute forensic precision, while maintaining support for screenshot-to-URL resolution as an additional quality-of-life feature.

Product overview

Postcard is a digital forensics pipeline that takes a social media post URL, traces it back to its original source, and produces a Postcard Score (0–100%) measuring how much the content has drifted from the truth.

Trace the Truth.

The problem

Screenshots strip all context. By the time something goes viral, it's been cropped, captioned, and misattributed. Postcard utilizes the "Wisdom of the Crowd" to triangulate the primary source and audit it for forensic consistency—providing a scalable solution for restoring context and credibility.

Our solution

We built a 4-stage forensic pipeline focused on deep audit log generation and corroboration for social media posts:

  • Multimodal ingest: Postcard utilizes Jina Reader to ingest live content and metadata, establishing the "ground truth" for the forensic audit.
  • Forensic audit: Postcard uses Playwright to perform direct site checks, verifying origin and ensuring temporal alignment with the reported narrative.
  • Corroboration engine: Postcard performs deep search across trusted domains to verify claims and find mentions of the content elsewhere to determine its "drift."
  • Verification platform: Built with Next.js and Tailwind CSS, providing a clean, terminal-inspired interface for quick, simple forensic verification.

Documentation


Built with 🐈‍⬛ at PantherHacks 2026

About

Trace every post back to its source. Digital forensics for social media content verification.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors