Fact Checker

Browser Extension

Tools

JS OpenAI SDK GCP Cloud Run Java / Spring boot

Timeline

2025 - Present

Description

A browser extension (Chromium/Firefox) which uses LLM web searching capabilities to quickly fact check user-highlighted snippets.

Context

I felt that the existing workflow for fact checking via LLM was insufficient. Basically copy some text -> paste into ChatGPT -> add a system prompt -> review results. I thought it would be handy for myself and others to have a simple one-click solution for all of this.

A screenshot of the fact checking extension in action
A screenshot of the fact checking extension in action
A screenshot of the fact checking extension in action
A screenshot of the fact checking extension in action

Challenge


The main challenge here was figuring out how to securely handle the API keys required. It isn't secure to store it within the JS itself. The first (and current) working solution I had is to have a UI where the user can paste their API key, and store it in browser storage. It's not great for a permanent solution, but it works for now and lets the user be responsible for keeping their own API key safe.


For a more permanent solution, I'm using GCP Cloud Run. Essentially, the browser extension (JS client) will allow users to sign in with Google. This will give me an ephemeral identity token that I can pass in the headers of the call to an ingress service on Cloud Run. Then we can use Firebase Auth SDK to validate the user and tie them to a UID. This UID can be used to tie the request to a specific user (for rate limiting, billing, etc). This UID and the request from the client will then get handed through several microservices including ones for auth/validation/LLM communication. Ultimately the client will receive the formatted and verified response, the content of which came from a few LLM calls.

Process


  1. Get the client UI working

  2. Set up GCP Cloud Run IAC

  3. Set up microservices

  4. Set up user authentication & rate limiting

  5. Unsure. Will probably have many more steps here as I get further along in the process.