Engineering case study · Microsoft · Software Engineering Internship · Summer 2026

Engineering AI‑Assisted Tagging at Scale

Designing reliable tagging workflows across review sets of up to 5 million documents.

Ethan CoskayRole: Software Engineer InternStack: C# · .NET · Cosmos DB · distributed caching

The 30-second version

Problem
One reviewer decision has to apply correctly to every duplicate and related document, across millions of items.
What I built
Duplicate-aware tag propagation, a safe fallback for missing data, and AI-assisted tag recommendations, shipped behind feature flags.
Result
An estimated 1,500+ hours of manual tagging saved for users.

Simplified conceptual visualization. No proprietary Microsoft code, customer data, internal architecture, or confidential implementation details are shown. All diagrams are my own.

The problem

One decision, many documents

Review sets hold large collections of documents. Many are exact duplicates, and many belong to families, like an email and its attachments. When a reviewer tags one document, that decision has to reach every related copy, or the review ends up inconsistent.

Simplified conceptual representation

Document relationship cluster A document the reviewer tags sits in the center. Lines connect it to four exact duplicates on the left and three family members on the right. After the tag is applied, all eight documents carry the same tag. Exact duplicates Document the reviewer tags Family members

Nothing tagged yet. Apply the tag to see how far one decision has to travel.

Tagging one document should give its duplicates and family members the same tag, without the reviewer finding and tagging each one by hand.

Scale

Applying a tag is easy. Keeping it correct at 5 million documents is the hard part.

With ten documents, a mistake is visible and cheap to fix. At production scale, a small inconsistency repeats across thousands of duplicate groups, and nobody can check them by eye. Correctness has to be designed into the system.

Drawn to scale · each dot = 5,000 documents

10

documents in a quick local test

5,000,000

documents in the largest review sets

At 10 documents the whole set fits on one row of squares. At 5 million, a single dot stands for 5,000 documents, and it still takes a thousand dots.

System map

What happens between a click and a consistent result

Each step answers a question the previous one leaves open. Select a step to see what it does and why it is there.

Simplified conceptual representation

    If duplicate data is missing or incomplete

    The workflow continues safely instead of failing.

    Step 1 of 7

    What it does
    Why it is there

    Engineering decisions

    Four decisions that shaped the system

    Expand relationships before tagging

    Problem
    A reviewer selects one item, but that item can stand for a whole document family.
    Decision
    Expand every selected ID into its members before any tag is written.
    Why it mattered
    Families are tagged as a unit, so related documents never drift apart.

    Treat IDs case-insensitively

    Problem
    The same document can arrive with identifiers that differ only in letter case.
    Decision
    Merge ID sets case-insensitively before propagation.
    Why it mattered
    No document is tagged twice or skipped because of formatting.

    Fail predictably, not loudly

    Problem
    Duplicate data can be missing or incomplete when a tag is applied.
    Decision
    Define a deterministic fallback path instead of letting the request error out.
    Why it mattered
    The reviewer's decision still completes, and downstream pipelines don't fail.

    Ship behind feature flags

    Problem
    A change to tagging behavior affects live reviews immediately.
    Decision
    Gate the feature with flighting so it can be turned on gradually.
    Why it mattered
    Controlled rollout, and rollback without downtime if something looks wrong.

    Reliability

    What if the data isn't there?

    Switch the input and compare the two paths.

    Simplified conceptual representation

    Is duplicate data available for the tagged document?

    ✓ Active path

    Normal resolution

    1. Look up duplicate groups
    2. Merge related IDs
    3. Propagate the tag to every copy

    Result: consistent tags across the group.

    Not used

    Deterministic fallback

    1. Detect incomplete duplicate data
    2. Take the defined fallback path
    3. Tagging continues

    Result: the workflow is preserved and nothing downstream fails.

    Duplicate data available. Normal resolution path is active.

    Both paths end in a usable result. The difference is whether propagation can run, not whether the reviewer's work survives.

    Reliable systems are designed for imperfect inputs.

    AI-assisted recommendations

    From one document to a suggested tag

    Propagation handles copies. Recommendations help with documents that are similar but not identical, by suggesting tags that related content already carries.

    Simplified conceptual representation

    1. inputDocument

      A document in the review set.

    2. representEmbedding

      Its content becomes a vector.

    3. searchSimilarity

      Find the documents whose vectors sit closest.

    4. contextRelated content

      See which tags those neighbors carry.

    5. outputTag recommendation

      Suggest those tags for this document.

    Each stage narrows the question, from “what is this document?” to “what would a reviewer likely tag it?”
    Engineering detail: keeping it fast at scale
    • I integrated an embedding service and similarity orchestration into the tagging workflow.
    • The pipeline is backed by Cosmos DB, with cache-based embedding reuse so a document's vector doesn't have to be recomputed each time it is needed.
    • Computing embeddings is the expensive step, so reuse is what keeps recommendations practical across review sets of millions of documents.

    Impact

    What it changed for reviewers

    5M

    documents in the largest review sets the feature supports

    Scale

    1,500+

    hours of manual tagging saved for users

    Estimate

    1 → all

    one reviewer decision applied across every duplicate copy

    Behavior

    Reflection

    What this project changed about how I engineer

    1. 01

      Think in systems

      A feature doesn't stop at its own code. It touches data, dependencies, failures, users, and the workflows that run after it.

    2. 02

      Design for imperfect inputs

      Production data is sometimes missing or inconsistent. A system has to stay predictable when its assumptions fail.

    3. 03

      Measure engineering through impact

      Engineering quality matters because of what it lets users do, like finishing a review without tagging the same email over and over.

    Closing

    Engineering is not just writing code. It is turning complexity into reliable outcomes.

    Contact: enc33@cornell.edu