https://us-visa-agent.onrender.com/ AI-powered analyzer for U.S. visa applications (J1, DS-160). Upload documents, assess risks, get recommendations. Built with Flask + OpenRouter (Qwen-23B).
VisaAssist is a Flask-based web app designed to analyze US visa applications (especially J1, DS-160) and provide:
- Rejection probability estimates
- Honest assessment of strengths and weaknesses
- Actionable advice to improve the application
It uses:
- OpenRouter AI (Qwen 3 235B model) for deep natural language analysis
- Custom rules engine for base risk scoring (incl. logic for countries like Uzbekistan)
- PDF parsing for extracting content from uploaded visa documents
- Upload and process visa-related PDFs (financial docs, DS-160, etc.)
- Smart extraction and formatting of applicant data
- Chat-style prompt to a large language model for analysis
- HTML-formatted AI feedback (clear, structured, and exportable)
- Dynamic rejection probability calculator based on real-world logic
git clone https://github.com/fromgodd/US-Visa-Agent.git
cd US-Visa-AgentCreate a .env file with:
OPENROUTER_API_KEY=your_openrouter_api_key_here
Get your free API key at https://openrouter.ai/
pip install -r requirements.txtpython app.pyVisit http://localhost:5000 to access the web interface.
The app uses a country-based baseline risk (e.g., Uzbekistan ~ 64.41%) and applies weighted risk factors like:
- Weak ties to home country
- Poor financials
- Lack of interview prep
- Incomplete documents
- Previous visa issues
Each factor increases the final probability (capped at 95%).
We use the free qwen/qwen3-235b-a22b:free model from OpenRouter API for feedback generation.
- Python + Flask
- HTML (Jinja2 templating)
- OpenRouter AI (Qwen 3 model)
- PyPDF2 for PDF parsing
- RESTful JSON API communication
MIT License. Do whatever you want, just don’t blame us if you get rejected at the embassy 💀
Made with love and skepticism by a math-loving Rust-enjoyer named Valera 🇺🇿🛠️
+ Pull requests are welcome
+ TODO - Fine tune for better results!
- Dumb visa denials are not