This is a submission for the Hacktoberfest Open-Source AI Challenge: Week 2, Side Hustle.
What I Built
A client asks for online payments after agreeing to a small brochure website. Before replying, the freelancer needs to find what the original brief actually said. An answer without that source can create another argument.
BriefTrace is a small local evidence finder for that moment. Paste a labelled brief and a list of new requests. It retrieves up to three relevant clauses per request, quotes the original wording, and highlights explicit exclusions or limits for human review. The user can export the evidence as Markdown.
It does not decide what a contract legally includes, calculate a change fee, or send a client a reply. Finding a similar sentence is not the same as proving that a request is covered.
The proposed customer is a freelance designer or small agency that regularly reviews client changes and would prefer to keep briefs on its own computer. A paid local utility is a plausible business hypothesis, not a sale I have made. Existing scope-change products such as ScopePaid and Fenscope indicate an existing category. They do not establish demand for BriefTrace. There are no paying users, customer interviews or revenue to report.
Demo
Video: https://github.com/jakechenzhenbin/brieftrace-hf26/blob/main/docs/brieftrace-demo.mp4
The 41-second demo is a slideshow of actual browser snapshots with explanatory captions, rather than an uninterrupted screen recording. It uses a fictional bakery brief and real local model output:
- Online payments retrieve the original exclusion clause, B04.
- A French version retrieves the additional-language exclusion, B05.
- A contact form retrieves B02, but the interface keeps it for human review.
- A 3D animation request has no close match and remains unresolved.
The demo contains no real client documents or personal information. The repository includes the fictional inputs and a Markdown export so these results can be inspected.
Code
Repository: https://github.com/jakechenzhenbin/brieftrace-hf26
The application code is MIT licensed. The model is separately licensed under Apache-2.0. The code, interface, examples and this write-up were produced with OpenAI Codex assistance; this entry does not claim professional development experience for the human participant. Third-party model and runtime credits are listed in THIRD_PARTY_NOTICES.md.
How I Built It
The core is sentence-transformers/all-MiniLM-L6-v2, pinned to revision 1110a243fdf4706b3f48f1d95db1a4f5529b4d41. Hugging Face Tokenizers prepares the text; ONNX Runtime runs the open-weight model on the CPU. Attention-mask-aware mean pooling and normalization produce sentence embeddings. Cosine similarity retrieves the brief clauses nearest to each request.
The brief uses explicit [IN], [OUT] and [LIMIT] markers. Those labels come from the user, not an invented model judgment. The interface shows both the labels and exact source quotes. A small model can retrieve a related clause without understanding changed quantities or negation, so the prototype keeps conservative review labels and calls its scores similarity, not confidence.
The Python server binds to 127.0.0.1. Analysis uses local files, does not call a model service, and does not save the pasted text. Host and Origin checks restrict cross-site requests; a static-file allowlist keeps the model directory and virtual environment from being served. This is a prototype with basic safeguards, not a security certification. Installation still needs the internet to download Python packages and about 91 MB of pinned model files. Later analysis needs no inference API key or service subscription.
Ten checks passed against the real model, including paraphrase retrieval, exclusion retrieval, exact-quote integrity, an unfamiliar request, a negated request, oversized input rejection and inference with Python network sockets blocked. Browser checks covered analysis, evidence expansion, Markdown download, clearing the form and rendering HTML-like input as text. These are a small synthetic regression set, not a measured production accuracy score. Five warm runs of the sample had a median analysis time of 59.4 ms on the development machine; that is a local observation, not a hardware-independent speed claim.
One deliberate limit: this is an English prototype. Each line must fit the model's 256-token limit; overlong lines are rejected rather than silently truncated. It can still miss contractual context, negation, altered quantities and revision limits. A useful next validation would be an opt-in review of non-sensitive examples from a freelancer before adding features or setting a price. That validation has not happened yet.
Why Does Open Innovation Matter?
Local inference makes the privacy choice practical: after setup, a brief can be compared without sending it to a model provider. The pinned weights and visible retrieval pipeline also make the output reproducible and inspectable. Someone can replace the model or review the matching code rather than depend on an opaque service's answer.
The tradeoff is visible too. A small sentence encoder is inexpensive to run locally but cannot settle a scope dispute. The source quote and the unresolved state matter more than a fluent explanation. Keeping the open model as an evidence finder made it possible to build a narrow tool without pretending it could replace the freelancer's judgment.
Prize category: Overall prize consideration only. No partner technology category is claimed.