Inspiration

While volunteering at my local food bank, I enjoyed talking with the people I was serving. I heard about difficulties with CalFresh paperwork: people could not always understand what a form required, and calls for help sometimes left them confused about what to do next. I wanted to make that next step easier to understand and act on. I learned about that experience in local evidence. Santa Clara County reported 129,794 CalFresh participants as of July 1, 2025. Its SAR 7 handbook identifies failure to submit a complete required report by the extended filing date as a reason for discontinuance. That makes clear why understandable instructions and complete preparation matter so much in my community. Without CalFresh, many families struggle with getting the proper nutrition they need. I focused Anchor on the process between receiving a notice and preparing a response: understanding the request, gathering proof for the correct period, completing the right form, and following through. My targeted community for now is Santa Clara County, with additional resources for neighboring San Mateo County.

What it does

I built a connected workspace for benefits paperwork that goes through multiple stages:

  1. Understand the request. Anchor reads supported PDFs and scanned notices locally, identifies potential dates and requested materials, and links findings to original wording for review.
  2. Catch preparation problems. Document classification and evidence checks flag issues such as missing proof or an August paystub supplied for a September income request.
  3. Prepare the actual form. Guided answers appear directly on official CF 37 and SAR 7B PDFs. Users can review and download the complete, editable, unsigned draft without leaving Anchor.
  4. Get contextual help. Ask Anchor connects form questions to reviewed public guidance and official sources. Optional AI gives answers without receiving uploaded notices or private form answers, ensuring privacy while offering support.
  5. Follow through. Task dependencies, optional Calendar reminders, selected appointment packets, and submission records help users keep their work organized and ensure they never miss anything.
  6. I included guest use, Spanish guidance, mobile layouts, keyboard-accessible controls, and reduced-motion support. Cached core tools reduce connectivity barriers, while optional Google sign-in enables synchronization. Official PDFs retain their original language.

How we built it

I used TypeScript for workflow logic, form mappings, document inference, and retrieval, with JavaScript, HTML, and CSS for the browser interface. I used Python to train and evaluate a small TF-IDF/logistic-regression document classifier, then implemented its inference in the browser. Predictions remain separate from confirmed facts, and unfamiliar documents can remain unknown. PDF.js and Tesseract.js handle document reading and OCR; pdf-lib places answers into verified PDF fields. I modeled preparation tasks as a dependency graph and implemented BM25 search over reviewed bilingual passages. Gemini explanations run through Supabase Edge Functions using bounded public-topic identifiers. PostgreSQL and SQL support ownership policies, revision-aware saving, and assistant quotas. Supabase provides authentication and private storage, while GitHub Pages hosts the frontend. I added automated browser tests, reproducible model evaluation, and GitHub Actions release checks. I used AI-assisted coding during my development process that helped me ensure my website could help people accurately and efficiently.

Challenges we ran into

I found that reading a document and understanding the action it requires are different problems. A notice can contain several dates, while a supporting document can be readable but cover the wrong month. I preserved original evidence, distinguished date purposes, and required confirmation before treating inferred details as reviewed facts. I also had to map guided answers to real PDF fields while preserving every page and leaving signatures blank. Making that process understandable required careful navigation, contextual help, and a clear next action. It was difficult to make that happen, but extremely important so people could fill out forms without leaving the website. Another challenge was keeping cloud assistance useful without sending private case material to the AI provider. I separated local document processing from the public-guidance explanation path.

Accomplishments that we're proud of

I’m proud that I connected a confusing notice to a reviewable plan, supporting-document checks, and an actual prepared official form. The wrong-month warning is especially meaningful because it helps someone inspect a specific preparation problem before submitting paperwork. I’m also proud of the live PDF workflow, bilingual guidance, and controls for choosing exactly what goes into an appointment packet. It also has a guided overview of the website so that everything is easy to use and navigate through.

What we learned

I learned that civic technology needs a clear relationship between a suggestion and its evidence. A useful system must communicate uncertainty and give people a way to check its work. Building Anchor also taught me how to connect machine learning, search, document processing, authentication, and database permissions around one practical workflow. My food-bank conversations kept the goal concrete: help someone understand and complete their next step.

What's next for Anchor

I want to test Anchor with local adults. I plan to measure task completion, reporting-period errors, preparation time, and the amount of help needed, including feedback from Spanish-speaking and mobile users. I then want to improve the confusing steps, strengthen source maintenance, and expand verified form coverage. I have not yet conducted a resident usability study or measured benefit retention. My next milestone is evidence that people can complete the workflow more clearly and confidently. Additionally, I want to expand beyond Santa Clara County. Federal forms being confusing are not just a local issue, so expanding to more locations would help reach more people.

Built With

Share this project:

Updates

Submission history