<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://docs.deepfaic.com/blogs/</id>
    <title>DeepFAIC Blog</title>
    <updated>2026-10-04T04:30:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://docs.deepfaic.com/blogs/"/>
    <subtitle>DeepFAIC Documentation Blog</subtitle>
    <icon>https://docs.deepfaic.com/img/deepfaic_logo_favicon_dark.png</icon>
    <entry>
        <title type="html"><![CDATA[Keep sensitive media inside your own environment]]></title>
        <id>https://docs.deepfaic.com/blogs/edge-media-privacy/</id>
        <link href="https://docs.deepfaic.com/blogs/edge-media-privacy/"/>
        <updated>2026-10-04T04:30:00.000Z</updated>
        <summary type="html"><![CDATA[How DeepFAIC Edge brings media analysis to your infrastructure, and what to consider when designing the boundary around it.]]></summary>
        <content type="html"><![CDATA[<p class="blog-article-description">How DeepFAIC Edge brings media analysis to your infrastructure, and what to consider when designing the boundary around it.</p><img class="blog-article-cover" src="https://docs.deepfaic.com/img/blog/edge.svg" alt="" width="1200" height="630"><p>A detection workflow begins with a file, but the architecture decision begins with a question: where is that file allowed to go? For internal recordings, customer submissions, and sensitive conversations, the answer can shape the entire system.</p>
<p>DeepFAIC Edge is a single-machine runtime that runs the API, metadata, cache, and detection inference inside your environment as a managed Docker Compose stack. That gives teams a concrete place to draw their media processing boundary.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="put-the-boundary-around-the-workflow">Put the boundary around the workflow<a href="https://docs.deepfaic.com/blogs/edge-media-privacy/#put-the-boundary-around-the-workflow" class="hash-link" aria-label="Direct link to Put the boundary around the workflow" title="Direct link to Put the boundary around the workflow">​</a></h2>
<p>Keeping inference local is useful, but privacy depends on the surrounding workflow too. Map the path from upload to analysis to deletion. Include temporary files, application logs, backups, and the systems that retrieve results.</p>
<p>A practical design has three responsibilities:</p>
<ul>
<li><strong>Ingestion:</strong> place media into the runtime's uploads directory with access limited to the submitting service and the runtime.</li>
<li><strong>Analysis:</strong> create a job using the file's container-visible path, then retrieve progress and results through the authenticated Edge API.</li>
<li><strong>Retention:</strong> define how long input files and derived records should remain, and which process removes them.</li>
</ul>
<p>The Edge runtime provides the analysis layer. Your deployment still owns access controls, storage policy, and the services around it.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="treat-local-paths-as-an-interface">Treat local paths as an interface<a href="https://docs.deepfaic.com/blogs/edge-media-privacy/#treat-local-paths-as-an-interface" class="hash-link" aria-label="Direct link to Treat local paths as an interface" title="Direct link to Treat local paths as an interface">​</a></h2>
<p>Edge accepts an <code>input_path</code> when creating a job. A file visible to your application is not automatically visible at the same path inside the container. Establish one staging location and one mapping into the runtime.</p>
<p>For example, an application can copy a submission into the host's uploads directory and pass a path under <code>/var/lib/deepfaic/uploads/</code> to the API. Preserve a separate application record that connects the submission to the returned job ID. This avoids coupling your product's filenames to the runtime's internal job storage.</p>
<p>For the complete working example, follow <a href="https://docs.deepfaic.com/tutorials/detect-impersonation-deepfaic-edge/" target="_blank" rel="noopener noreferrer">Detect Impersonations with DeepFAIC Edge</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="separate-progress-from-evidence">Separate progress from evidence<a href="https://docs.deepfaic.com/blogs/edge-media-privacy/#separate-progress-from-evidence" class="hash-link" aria-label="Direct link to Separate progress from evidence" title="Direct link to Separate progress from evidence">​</a></h2>
<p>Polling is a user experience concern; the final record is an evidence concern. The partial job endpoint is a lighter way to watch a job move through its lifecycle. Once processing completes, retrieve the full record for the scores, thresholds, coverage, and available chunk or frame analysis.</p>
<p>Keep operational logs small. A job ID, lifecycle status, and elapsed time are often enough to investigate a stalled request. Copying raw media or full result payloads into every log stream creates additional places where sensitive information can accumulate.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="plan-for-offline-operation">Plan for offline operation<a href="https://docs.deepfaic.com/blogs/edge-media-privacy/#plan-for-offline-operation" class="hash-link" aria-label="Direct link to Plan for offline operation" title="Direct link to Plan for offline operation">​</a></h2>
<p>The Edge documentation describes an offline runtime. Scoring profile bundles are delivered as files, verified on import, and explicitly selected by jobs. The runtime does not need to contact DeepFAIC cloud to import and use those bundles.</p>
<p>Decide how your team will receive approved updates, move them into the environment, validate them, and roll them out. Offline deployments benefit from a documented maintenance process just as much as connected services do.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="make-retention-an-explicit-product-decision">Make retention an explicit product decision<a href="https://docs.deepfaic.com/blogs/edge-media-privacy/#make-retention-an-explicit-product-decision" class="hash-link" aria-label="Direct link to Make retention an explicit product decision" title="Direct link to Make retention an explicit product decision">​</a></h2>
<p>Deleting a job record and removing its files are different operations. Edge documents soft deletion and hard deletion separately. Choose the behavior that matches your retention policy, and verify it against your own storage and backup configuration.</p>
<p>Local deployment gives you control over the processing boundary. A complete privacy design also explains who can submit media, who can inspect results, and when the evidence leaves your storage.</p>]]></content>
        <author>
            <name>DeepFAIC Team</name>
            <uri>https://deepfaic.com</uri>
        </author>
        <category label="Edge" term="Edge"/>
        <category label="Product" term="Product"/>
        <category label="Deepfake detection" term="Deepfake detection"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[A deepfake score is a signal. Here’s how to read it.]]></title>
        <id>https://docs.deepfaic.com/blogs/reading-detection-scores/</id>
        <link href="https://docs.deepfaic.com/blogs/reading-detection-scores/"/>
        <updated>2026-10-04T04:20:00.000Z</updated>
        <summary type="html"><![CDATA[Read scores alongside thresholds, coverage, and model status to build a more useful media authenticity review.]]></summary>
        <content type="html"><![CDATA[<p class="blog-article-description">Read scores alongside thresholds, coverage, and model status to build a more useful media authenticity review.</p><img class="blog-article-cover" src="https://docs.deepfaic.com/img/blog/scores.svg" alt="" width="1200" height="630"><p>It is tempting to compress media analysis into a single number and a red or green badge. The number is convenient, but a useful decision needs context: what was analyzed, how much of it was covered, and whether the analysis completed successfully.</p>
<p>DeepFAIC's full Edge job record includes an aggregated prediction and applicable audio, video, or image lanes. Each lane can report a score, threshold, coverage, status, and errors. Those fields belong together in your application.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="start-with-status">Start with status<a href="https://docs.deepfaic.com/blogs/reading-detection-scores/#start-with-status" class="hash-link" aria-label="Direct link to Start with status" title="Direct link to Start with status">​</a></h2>
<p>A missing score is not a low score. A failed analysis is not a clean result. Before displaying a verdict, check the job lifecycle and the status of the applicable lanes.</p>
<p>The Edge response distinguishes <code>queued</code>, <code>processing</code>, <code>complete</code>, and <code>error</code>. Its final <code>prediction_label</code> can be <code>FAKE</code>, <code>REAL</code>, or <code>NONE</code>; <code>NONE</code> represents a case where a verdict could not be produced, such as when every model failed.</p>
<p>Build an explicit “unable to assess” state into your interface. Otherwise, a default value or an empty response can silently become a misleading green badge.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="read-the-threshold-beside-the-score">Read the threshold beside the score<a href="https://docs.deepfaic.com/blogs/reading-detection-scores/#read-the-threshold-beside-the-score" class="hash-link" aria-label="Direct link to Read the threshold beside the score" title="Direct link to Read the threshold beside the score">​</a></h2>
<p>A score has meaning within the scoring configuration that produced it. The threshold describes the decision boundary used for that lane. Store and display both when an analyst needs to understand the result.</p>
<p>Do not relabel a raw score as a percentage probability unless you have established that interpretation for the model and your evaluation data. A value of <code>0.8</code> should not automatically become “80% certain this is fake.”</p>
<p>Use a short, concrete presentation instead:</p>
<blockquote>
<p>Video analysis completed. Score: 0.62. Applied threshold: 0.40. Review recommended under the configured policy.</p>
</blockquote>
<p>This example is illustrative; it is not a measured result or a universal threshold recommendation.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="coverage-changes-the-question">Coverage changes the question<a href="https://docs.deepfaic.com/blogs/reading-detection-scores/#coverage-changes-the-question" class="hash-link" aria-label="Direct link to Coverage changes the question" title="Direct link to Coverage changes the question">​</a></h2>
<p>Coverage helps describe the extent of analysis. Read its meaning in the endpoint documentation and evaluate what it means for your media. A successful lane with limited coverage deserves different treatment from a fully analyzed sample.</p>
<p>Low coverage might lead your workflow to request a better input, inspect a different part of the recording, or route the item to review. Choose that policy deliberately. Do not silently treat unassessed material as verified.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="keep-audio-and-video-visible">Keep audio and video visible<a href="https://docs.deepfaic.com/blogs/reading-detection-scores/#keep-audio-and-video-visible" class="hash-link" aria-label="Direct link to Keep audio and video visible" title="Direct link to Keep audio and video visible">​</a></h2>
<p>A video submission can carry both visual and audio signals. The full record exposes those lanes separately. If they disagree, preserve that disagreement for the reviewer instead of displaying only a convenient average.</p>
<p>Chunk scores and available frame scores can help a reviewer locate parts of a recording to inspect. Treat them as analysis outputs to investigate, with the original media and its context available alongside them.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="record-how-the-decision-was-produced">Record how the decision was produced<a href="https://docs.deepfaic.com/blogs/reading-detection-scores/#record-how-the-decision-was-produced" class="hash-link" aria-label="Direct link to Record how the decision was produced" title="Direct link to Record how the decision was produced">​</a></h2>
<p>Edge includes <code>prediction_source</code>, identifying the default configuration or the selected scoring profile. Save it with the job ID, result, and review outcome. This gives your team a way to compare results after a scoring configuration changes.</p>
<p>A good review interface answers four questions: did analysis finish, what signal did it produce, what material did it cover, and what policy turned that signal into the next action?</p>
<p>For an example response and field definitions, see the <a href="https://docs.deepfaic.com/docs/Edge/edge-job-get/" target="_blank" rel="noopener noreferrer">Edge API documentation</a>.</p>]]></content>
        <author>
            <name>DeepFAIC Team</name>
            <uri>https://deepfaic.com</uri>
        </author>
        <category label="Engineering" term="Engineering"/>
        <category label="Scoring" term="Scoring"/>
        <category label="Deepfake detection" term="Deepfake detection"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Scoring profiles: reproducible decisions for every job]]></title>
        <id>https://docs.deepfaic.com/blogs/reproducible-scoring-profiles/</id>
        <link href="https://docs.deepfaic.com/blogs/reproducible-scoring-profiles/"/>
        <updated>2026-10-04T04:10:00.000Z</updated>
        <summary type="html"><![CDATA[Make scoring changes deliberate with signed bundles, explicit profile selection, and versions that stay attached to each Edge job.]]></summary>
        <content type="html"><![CDATA[<p class="blog-article-description">Make scoring changes deliberate with signed bundles, explicit profile selection, and versions that stay attached to each Edge job.</p><img class="blog-article-cover" src="https://docs.deepfaic.com/img/blog/profiles.svg" alt="" width="1200" height="630"><p>When a team's review policy changes, yesterday's analysis should remain understandable. Reproducibility means being able to say which configuration produced a decision, even after the deployment has moved on.</p>
<p>DeepFAIC Edge scoring profiles package a tuned scoring configuration into a signed bundle. The configuration can include model weights, decision thresholds, and custom scoring logic authored and tested by the DeepFAIC team for a use case.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="importing-is-separate-from-selecting">Importing is separate from selecting<a href="https://docs.deepfaic.com/blogs/reproducible-scoring-profiles/#importing-is-separate-from-selecting" class="hash-link" aria-label="Direct link to Importing is separate from selecting" title="Direct link to Importing is separate from selecting">​</a></h2>
<p>Importing a profile does not change the scoring of every job. Profiles are opt-in per request. Jobs without a <code>profile_name</code> continue to use the deployment's <code>CONFIG.yaml</code> defaults.</p>
<p>That separation is useful during rollout. Your team can install a bundle, confirm it appears in the profile list, and evaluate it through explicitly selected jobs before changing application behavior.</p>
<p>The runtime verifies the bundle's signature during import. A modified file or a bundle that was not produced by DeepFAIC is rejected. This is especially useful for deployments that receive updates through an offline file transfer process.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="pin-a-version-when-consistency-matters">Pin a version when consistency matters<a href="https://docs.deepfaic.com/blogs/reproducible-scoring-profiles/#pin-a-version-when-consistency-matters" class="hash-link" aria-label="Direct link to Pin a version when consistency matters" title="Direct link to Pin a version when consistency matters">​</a></h2>
<p>There are two ways to select a profile:</p>
<table><thead><tr><th>Selector</th><th>Behavior</th></tr></thead><tbody><tr><td><code>clip-jury</code></td><td>Select the latest installed version of the named profile</td></tr><tr><td><code>clip-jury@3</code></td><td>Select that specific version</td></tr></tbody></table>
<p>These are example names from the documentation, not profiles included automatically with every deployment.</p>
<p>For a controlled evaluation or a policy-sensitive workflow, pinning a version makes the application's intent explicit. Selecting the latest version is useful when your team deliberately wants new jobs to follow the newest installed configuration.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-job-keeps-its-scoring-identity">The job keeps its scoring identity<a href="https://docs.deepfaic.com/blogs/reproducible-scoring-profiles/#the-job-keeps-its-scoring-identity" class="hash-link" aria-label="Direct link to The job keeps its scoring identity" title="Direct link to The job keeps its scoring identity">​</a></h2>
<p>The selected profile is frozen onto the job at creation. Installing a newer profile version does not change an existing job's results. The response reports <code>prediction_source</code>, such as <code>clip-jury@3</code>, so downstream systems can record what produced the prediction.</p>
<p>Keep this identifier alongside your application submission ID and review outcome. If a reviewer asks why two submissions were treated differently, you can check whether their inputs, analysis status, and scoring configurations were comparable.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="roll-out-with-a-comparison-set">Roll out with a comparison set<a href="https://docs.deepfaic.com/blogs/reproducible-scoring-profiles/#roll-out-with-a-comparison-set" class="hash-link" aria-label="Direct link to Roll out with a comparison set" title="Direct link to Roll out with a comparison set">​</a></h2>
<p>Before directing a workflow to a new profile, choose a set of representative media and a clear evaluation policy. Run comparable jobs using the current and candidate configurations, then inspect the disagreements.</p>
<p>Avoid judging a candidate only by how many items it flags. Review false positives, missed cases, failed analysis, and the resulting review workload. The right configuration depends on the action your product takes after analysis.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="retire-without-rewriting-history">Retire without rewriting history<a href="https://docs.deepfaic.com/blogs/reproducible-scoring-profiles/#retire-without-rewriting-history" class="hash-link" aria-label="Direct link to Retire without rewriting history" title="Direct link to Retire without rewriting history">​</a></h2>
<p>Profile removal is soft. New jobs can no longer select the removed version, while jobs that already used it keep their results. Re-importing the same bundle can reactivate it.</p>
<p>Signed delivery, explicit selection, and a recorded version make configuration changes reviewable. They let a deployment evolve while preserving a clear explanation of past decisions.</p>
<p>Read the <a href="https://docs.deepfaic.com/docs/Edge/edge-profiles/" target="_blank" rel="noopener noreferrer">scoring profile reference</a> for import, list, selection, and removal details.</p>]]></content>
        <author>
            <name>DeepFAIC Team</name>
            <uri>https://deepfaic.com</uri>
        </author>
        <category label="Product" term="Product"/>
        <category label="Edge" term="Edge"/>
        <category label="Scoring" term="Scoring"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Designing a detection pipeline that survives the wait]]></title>
        <id>https://docs.deepfaic.com/blogs/asynchronous-detection-pipelines/</id>
        <link href="https://docs.deepfaic.com/blogs/asynchronous-detection-pipelines/"/>
        <updated>2026-10-04T04:00:00.000Z</updated>
        <summary type="html"><![CDATA[Separate submission, progress, and results so media analysis fits naturally into a reliable application workflow.]]></summary>
        <content type="html"><![CDATA[<p class="blog-article-description">Separate submission, progress, and results so media analysis fits naturally into a reliable application workflow.</p><img class="blog-article-cover" src="https://docs.deepfaic.com/img/blog/pipeline.svg" alt="" width="1200" height="630"><p>Media analysis takes time. A reliable integration treats that time as part of the workflow: the user can leave the page, a network request can fail, and the application can recover without losing track of the submission.</p>
<p>Both the documented cloud and Edge APIs use jobs, but their endpoint paths and response shapes differ. Choose the contract for your deployment and keep that distinction explicit in your client.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="give-the-application-its-own-submission-record">Give the application its own submission record<a href="https://docs.deepfaic.com/blogs/asynchronous-detection-pipelines/#give-the-application-its-own-submission-record" class="hash-link" aria-label="Direct link to Give the application its own submission record" title="Direct link to Give the application its own submission record">​</a></h2>
<p>Create an application record before handing work to the analysis service. Store the input reference, submission time, and intended processing configuration. Once job creation succeeds, attach the returned job ID.</p>
<p>Your application record is the anchor for the user experience. It can survive browser refreshes and let a background worker resume progress checks without depending on a single tab remaining open.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="model-the-lifecycle-deliberately">Model the lifecycle deliberately<a href="https://docs.deepfaic.com/blogs/asynchronous-detection-pipelines/#model-the-lifecycle-deliberately" class="hash-link" aria-label="Direct link to Model the lifecycle deliberately" title="Direct link to Model the lifecycle deliberately">​</a></h2>
<p>For Edge, the documented job lifecycle includes <code>queued</code>, <code>processing</code>, <code>complete</code>, and <code>error</code>. Your UI can translate those states into clear language, while preserving the original values for diagnostics.</p>
<p>Do not use “100% progress” as your only completion condition. Check the documented terminal status, handle errors explicitly, and retrieve the full record before presenting the final analysis.</p>
<p>Keep an application's request timeout separate from the processing lifecycle. A request that times out has an uncertain outcome; it does not prove that a submitted job was never created.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="poll-the-smaller-response">Poll the smaller response<a href="https://docs.deepfaic.com/blogs/asynchronous-detection-pipelines/#poll-the-smaller-response" class="hash-link" aria-label="Direct link to Poll the smaller response" title="Direct link to Poll the smaller response">​</a></h2>
<p>Progress checking should retrieve the information needed to show status. Edge provides a partial job endpoint for this purpose. Retrieve the full result when the job reaches completion, rather than repeatedly downloading detailed analysis throughout processing.</p>
<p>A production polling policy should include:</p>
<ul>
<li>A bounded interval and a maximum wait duration appropriate to your workload.</li>
<li>Backoff and jitter after transient transport failures.</li>
<li>A clear response to authentication errors and invalid requests.</li>
<li>A way to resume checking an existing job instead of resubmitting its media.</li>
</ul>
<p>The Edge tutorial uses a two-second polling interval to make the example easy to follow. Evaluate your own request volume and service limits before adopting that value across a fleet.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="be-careful-with-retries-at-creation">Be careful with retries at creation<a href="https://docs.deepfaic.com/blogs/asynchronous-detection-pipelines/#be-careful-with-retries-at-creation" class="hash-link" aria-label="Direct link to Be careful with retries at creation" title="Direct link to Be careful with retries at creation">​</a></h2>
<p>If the client loses the response after sending a create request, retrying may submit a second job. Do not assume an endpoint supports idempotency unless its contract documents it.</p>
<p>Record the attempted submission and reconcile the outcome where your integration allows it. Design your retry strategy separately for read requests and create requests; they do not have the same consequences.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="make-completion-useful">Make completion useful<a href="https://docs.deepfaic.com/blogs/asynchronous-detection-pipelines/#make-completion-useful" class="hash-link" aria-label="Direct link to Make completion useful" title="Direct link to Make completion useful">​</a></h2>
<p>When a job finishes, connect the result to the action in your product. That may be an analyst review, a request for a better input, or a policy decision. Preserve analysis errors and inconclusive results as distinct outcomes.</p>
<p>The best asynchronous workflow lets people see what is happening, lets the application recover, and keeps the final evidence tied to the original submission.</p>
<p>Start with the <a href="https://docs.deepfaic.com/tutorials/detect-impersonation-deepfaic-edge/" target="_blank" rel="noopener noreferrer">working Edge integration tutorial</a>, then adapt persistence, retry, and polling policy to your application.</p>]]></content>
        <author>
            <name>DeepFAIC Team</name>
            <uri>https://deepfaic.com</uri>
        </author>
        <category label="Engineering" term="Engineering"/>
        <category label="API" term="API"/>
        <category label="Edge" term="Edge"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[What to measure before you ship deepfake detection]]></title>
        <id>https://docs.deepfaic.com/blogs/evaluating-detection/</id>
        <link href="https://docs.deepfaic.com/blogs/evaluating-detection/"/>
        <updated>2026-10-04T03:50:00.000Z</updated>
        <summary type="html"><![CDATA[Evaluate the media, failures, and review workload your product will actually encounter, rather than choosing a threshold from a headline metric.]]></summary>
        <content type="html"><![CDATA[<p class="blog-article-description">Evaluate the media, failures, and review workload your product will actually encounter, rather than choosing a threshold from a headline metric.</p><img class="blog-article-cover" src="https://docs.deepfaic.com/img/blog/evaluation.svg" alt="" width="1200" height="630"><p>A detection system is useful when it helps your team make better decisions on the media it actually receives. Evaluation should therefore begin with your workload and the action a result will trigger.</p>
<p>An internal review tool, a public upload flow, and a workflow that blocks a transaction have different costs for mistakes. Write those costs down before comparing configurations.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="build-a-representative-sample">Build a representative sample<a href="https://docs.deepfaic.com/blogs/evaluating-detection/#build-a-representative-sample" class="hash-link" aria-label="Direct link to Build a representative sample" title="Direct link to Build a representative sample">​</a></h2>
<p>Collect media through a process that is appropriate for your organization and permissions. Include the formats, recording conditions, compression, duration, and quality your users encounter.</p>
<p>Separate known examples used to tune a policy from the examples used to evaluate it. Otherwise, it becomes easy to select a threshold that looks good on familiar inputs and performs poorly on new ones.</p>
<p>Record how each reference label was established. If a label is uncertain, preserve that uncertainty instead of forcing it into a binary answer.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="measure-mistakes-in-both-directions">Measure mistakes in both directions<a href="https://docs.deepfaic.com/blogs/evaluating-detection/#measure-mistakes-in-both-directions" class="hash-link" aria-label="Direct link to Measure mistakes in both directions" title="Direct link to Measure mistakes in both directions">​</a></h2>
<p>Track false positives and false negatives, with clear definitions for your use case. A false positive can send legitimate media to unnecessary review. A false negative can allow manipulated media to pass through the workflow.</p>
<p>Precision helps describe how often flagged items match your reference labels. Recall helps describe how much of the labeled manipulation your system finds. Neither metric alone describes the cost of acting on a result.</p>
<p>When reference labels are reliable, keep the underlying counts alongside the summary metrics. A percentage from a small sample should not carry the same weight as a result from a larger, more representative evaluation.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="count-failures-as-outcomes">Count failures as outcomes<a href="https://docs.deepfaic.com/blogs/evaluating-detection/#count-failures-as-outcomes" class="hash-link" aria-label="Direct link to Count failures as outcomes" title="Direct link to Count failures as outcomes">​</a></h2>
<p>Do not remove failed jobs or inconclusive analysis from the report and then present the remaining successes as the whole system. Measure the share of submissions that produce a usable result.</p>
<p>Break failures down by media type and condition. Check lane status and coverage, and identify cases where the application should request a different input or route to manual review.</p>
<p>This is also a product question: what does the user see when the system cannot assess their submission?</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="measure-the-whole-wait">Measure the whole wait<a href="https://docs.deepfaic.com/blogs/evaluating-detection/#measure-the-whole-wait" class="hash-link" aria-label="Direct link to Measure the whole wait" title="Direct link to Measure the whole wait">​</a></h2>
<p>For asynchronous analysis, measure end-to-end time from submission to a usable result. Track the distribution, especially longer waits, rather than only an average.</p>
<p>Distinguish time spent queuing, processing, transferring media, and waiting for the next progress check when your instrumentation permits it. This helps identify whether to change capacity, client polling, or the upload flow.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="reevaluate-when-the-workflow-changes">Reevaluate when the workflow changes<a href="https://docs.deepfaic.com/blogs/evaluating-detection/#reevaluate-when-the-workflow-changes" class="hash-link" aria-label="Direct link to Reevaluate when the workflow changes" title="Direct link to Reevaluate when the workflow changes">​</a></h2>
<p>Store the scoring configuration or profile identity with each evaluation. Recheck a representative set when you change the profile, input processing, or downstream decision policy.</p>
<p>The result of evaluation should be a policy your team can explain: what gets reviewed, what remains inconclusive, how much work reviewers receive, and which errors need further attention.</p>
<p>For the result fields available in an Edge evaluation, see the <a href="https://docs.deepfaic.com/docs/Edge/edge-job-get/" target="_blank" rel="noopener noreferrer">full job record reference</a>.</p>]]></content>
        <author>
            <name>DeepFAIC Team</name>
            <uri>https://deepfaic.com</uri>
        </author>
        <category label="Engineering" term="Engineering"/>
        <category label="Evaluation" term="Evaluation"/>
        <category label="Deepfake detection" term="Deepfake detection"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[From detection to decisions: a media review workflow]]></title>
        <id>https://docs.deepfaic.com/blogs/media-review-workflows/</id>
        <link href="https://docs.deepfaic.com/blogs/media-review-workflows/"/>
        <updated>2026-10-04T03:40:00.000Z</updated>
        <summary type="html"><![CDATA[Connect analysis to clear review steps, preserve uncertainty, and give people the context needed to act on a media authenticity signal.]]></summary>
        <content type="html"><![CDATA[<p class="blog-article-description">Connect analysis to clear review steps, preserve uncertainty, and give people the context needed to act on a media authenticity signal.</p><img class="blog-article-cover" src="https://docs.deepfaic.com/img/blog/review.svg" alt="" width="1200" height="630"><p>A detector produces analysis. A product has to decide what happens next. The space between those two responsibilities is where a review workflow earns its value.</p>
<p>Start by identifying the decision: whether to publish a clip, request another recording, escalate a suspicious submission, or simply inform an analyst. Each action needs a different level of evidence and a different path for uncertainty.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="use-more-than-two-product-states">Use more than two product states<a href="https://docs.deepfaic.com/blogs/media-review-workflows/#use-more-than-two-product-states" class="hash-link" aria-label="Direct link to Use more than two product states" title="Direct link to Use more than two product states">​</a></h2>
<p>An application may want a binary action, but its analysis can have several meaningful outcomes. Distinguish at least:</p>
<ul>
<li>Analysis still in progress.</li>
<li>A completed result that can be evaluated under your policy.</li>
<li>A result that requires further review.</li>
<li>An input that could not be assessed.</li>
</ul>
<p>These are suggested workflow states, not DeepFAIC API enum values. Map them deliberately from the documented lifecycle, lane status, coverage, and prediction fields.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="give-reviewers-the-original-context">Give reviewers the original context<a href="https://docs.deepfaic.com/blogs/media-review-workflows/#give-reviewers-the-original-context" class="hash-link" aria-label="Direct link to Give reviewers the original context" title="Direct link to Give reviewers the original context">​</a></h2>
<p>Present the submitted media alongside analysis. Include the submission's source context when it is available and appropriate for the reviewer to access. For video, make it easy to inspect the sections associated with available chunk or frame scores.</p>
<p>Keep audio and visual analysis visible when both apply. A reviewer should be able to see a disagreement between lanes or a failed lane instead of discovering it only in a raw API response.</p>
<p>Use language that reflects the evidence. “Flagged for review under our configured policy” is more informative than an unexplained badge claiming certainty.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="preserve-the-reason-for-an-action">Preserve the reason for an action<a href="https://docs.deepfaic.com/blogs/media-review-workflows/#preserve-the-reason-for-an-action" class="hash-link" aria-label="Direct link to Preserve the reason for an action" title="Direct link to Preserve the reason for an action">​</a></h2>
<p>Record the job ID, relevant results, scoring source, and the reviewer's decision. Keep machine analysis separate from the review outcome so the two can be compared later.</p>
<p>A reviewer may clear a flagged item after checking its context, or escalate a submission that received a low signal for reasons outside the detector's scope. Recording both preserves an honest account of the decision.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="design-the-uncertain-path-first">Design the uncertain path first<a href="https://docs.deepfaic.com/blogs/media-review-workflows/#design-the-uncertain-path-first" class="hash-link" aria-label="Direct link to Design the uncertain path first" title="Direct link to Design the uncertain path first">​</a></h2>
<p>Decide what happens when processing fails, coverage is insufficient, or a reviewer cannot establish the context. Depending on your product, that might mean asking for a new input, requesting an additional verification step, or escalating to a specialist.</p>
<p>Give users a clear next step where your workflow allows it. An inconclusive result should not strand a submission in an unexplained state.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="feed-outcomes-back-into-evaluation">Feed outcomes back into evaluation<a href="https://docs.deepfaic.com/blogs/media-review-workflows/#feed-outcomes-back-into-evaluation" class="hash-link" aria-label="Direct link to Feed outcomes back into evaluation" title="Direct link to Feed outcomes back into evaluation">​</a></h2>
<p>Aggregate review outcomes to identify patterns: input conditions that generate unnecessary review, cases your policy misses, and the workload created by a scoring change.</p>
<p>Use these observations to build a representative evaluation set and assess candidate configurations. Review outcomes are useful evidence, but they should also carry the limitations of the review process that produced them.</p>
<p>A dependable authenticity workflow combines a detection signal, a clear policy, and an accountable decision. The interface should make each of those parts understandable.</p>
<p>Read <a href="https://docs.deepfaic.com/docs/Getting-Started/" target="_blank" rel="noopener noreferrer">the DeepFAIC documentation</a> to connect this workflow to the deployment and API that suit your application.</p>]]></content>
        <author>
            <name>DeepFAIC Team</name>
            <uri>https://deepfaic.com</uri>
        </author>
        <category label="Trust & Safety" term="Trust & Safety"/>
        <category label="Deepfake detection" term="Deepfake detection"/>
        <category label="Scoring" term="Scoring"/>
    </entry>
</feed>