CaPR · Kết nối định cư Canada an toàn cùng Hòa Vân
🍁 Miễn phí · 1 phút · tải ảnh job offer được luôn

Job offer định cư Canada bạn nhận có dấu hiệu lừa đảo không?

Rất nhiều người Việt mất tiền vì "job offer định cư" giả. Đây là công cụ tra cứu thông tin giúp bạn tự đối chiếu job offer theo chương trình AIP — Atlantic Immigration Program với dữ liệu công khai: nhà tuyển dụng có trong danh sách chỉ định không, địa chỉ có khớp không, có dấu hiệu lừa đảo không. Bước sàng lọc đầu tiên trước khi làm việc với chuyên gia di trú có giấy phép.

3.800+nhà tuyển dụng chỉ định trong dữ liệu
4tỉnh vùng Đại Tây Dương của Canada
100%nguồn từ trang chính thức các tỉnh
Công cụ thông tin để bạn tự tra cứu — KHÔNG phải tư vấn di trú. Theo luật Canada, chỉ luật sư hoặc RCIC (có giấy phép CICC) mới được tư vấn di trú có thu phí. Tôi — Hòa Vân — là người kết nối bạn với các chuyên gia có giấy phép đó. Ảnh/PDF bạn tải lên được xử lý ngay trên máy bạn, không gửi đi đâu.

Câu hỏi thường gặp về job offer định cư Canada (AIP)

Làm sao biết job offer định cư Canada thật hay giả? +
Đối chiếu tên nhà tuyển dụng với danh sách nhà tuyển dụng được chỉ định (designated employer) công khai của tỉnh, kiểm tra địa chỉ công ty trên bản đồ, mã NOC và mức lương. Công cụ này giúp bạn tự đối chiếu các thông tin đó miễn phí, ngay trên job offer bạn nhận.
Nhà tuyển dụng được chỉ định (designated employer) là gì? +
Là nhà tuyển dụng đã được tỉnh phê duyệt để bảo lãnh lao động nước ngoài qua chương trình AIP. Chỉ job offer từ nhà tuyển dụng được chỉ định mới hợp lệ cho AIP — đây là điều cần kiểm tra đầu tiên.
AIP — Atlantic Immigration Program là gì? +
Là chương trình định cư Canada qua việc làm tại 4 tỉnh vùng Đại Tây Dương: New Brunswick, Nova Scotia, Prince Edward Island và Newfoundland and Labrador.
Công cụ này có phải tư vấn di trú không? +
Không. Đây là công cụ thông tin để bạn tự tra cứu. Theo luật Canada, chỉ luật sư hoặc RCIC có giấy phép mới được tư vấn di trú có thu phí. Hòa Vân là người kết nối bạn với chuyên gia di trú có giấy phép.
Bước 1 · Miễn phí
Job offer của bạn thuộc tỉnh nào?
AIP chỉ áp dụng cho 4 tỉnh vùng Đại Tây Dương. Chọn tỉnh ghi trên thư mời làm việc.
Bước 2 · Miễn phí
Nhập thông tin nhà tuyển dụng
⌨️ Nhập tay
📄 Tải ảnh / PDF
Gõ đúng tên công ty (hoặc tên thương hiệu) như ghi trên thư mời. App sẽ đối chiếu lại với danh sách chỉ định. Có thể gõ tiếng Anh không dấu.
Để đối chiếu với địa chỉ thật của công ty trên bản đồ. Nếu tải file, app sẽ tự điền nếu đọc được.
Thêm / sửa chi tiết: NOC · lương · hợp đồng (kiểm tra lại nếu tải từ file) +
`; } function sendResultEmail(){ if(state._emailed || !state.order) return; state._emailed=true; try{ fetch('/api/send-result',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({order:state.order, html:buildEmailHtml()})}).catch(()=>{}); }catch(e){} } function renderNextSteps(){ const r=state.report; let head; if(r.score>=75) head='Job offer có nền tảng tốt. Việc nên làm tiếp:'; else if(r.score>=45) head='Có vài điểm cần làm rõ trước khi đi tiếp:'; else head='Hãy dừng lại trước khi đặt cọc hay nộp tiền. Việc cần làm ngay:'; return `

🧭 Bước tiếp theo

${head}

1. Hoàn tất checklist 8 bước ở trên — đặc biệt mục đối chiếu địa chỉ & giấy tờ.
2. Thu thập đủ: thư mời AIP, endorsement, hợp đồng, mô tả công việc.
3. Để người có chuyên môn rà soát trước khi chuyển bất kỳ khoản tiền nào.
`; } function renderGroupCTA(){ const r=state.report; const head = r.score>=75 ? 'Job offer của bạn có nền tảng tốt! Vào nhóm để đi tiếp nhanh & chắc:' : 'Vào nhóm để nghe cộng đồng & chuyên gia gỡ các điểm còn lo:'; return `

🍁 Vào nhóm Zalo cộng đồng định cư Canada

${head}

Xem các hồ sơ tương tự đã thành công với tỉ lệ thế nào
Tham khảo thời gian xử lý thực tế của job offer giống bạn
Hồ sơ kinh nghiệm giống bạn nên nộp chương trình nào nhanh hơn
💬 Tham gia nhóm Zalo miễn phí
`; } function renderOutro(){ return `
HV
Nguyễn Thị Hòa Vân
Kết nối định cư Canada an toàn · CaPR
Tôi là Hòa Vân. Suốt 5 năm qua tôi đồng hành cùng hàng trăm gia đình Việt trên hành trình định cư Canada, làm việc bên cạnh đội ngũ hơn 10 luật sư & chuyên gia di trú có giấy phép. Job offer là khâu rất nhiều người bị lừa.

Tôi không thay luật sư/RCIC để tư vấn di trú — vai trò của tôi là kết nối bạn đúng người có giấy phép rà soát kỹ trước khi bạn xuống tiền. Thấy hữu ích, hãy chia sẻ cho người thân đang tìm đường sang Canada nhé.
Tôi là Vân — kết nối định cư Canada an toàn.
`; } // ---------- PAYWALL ---------- function renderPaywallCTA(){ return `

Mở khoá bản đối chiếu chi tiết 🔓

199.000đ99.000đ

Một lần mở khoá cho job offer này

Điểm sàng lọc & mức rủi ro tổng thể của job offer
Chi tiết ${state.report.items.length} hạng mục + chỉ rõ từng dấu hiệu lừa đảo
Checklist kiểm chứng an toàn 8 bước
Những gì nên kiểm chứng tiếp + kết nối chuyên gia di trú có giấy phép
`; } function renderPaywall(){ document.getElementById('s-paywall').innerHTML=`
Mở khoá bản đối chiếu
Để lại thông tin nhận kết quả
Điền đủ 3 thông tin → mã QR thanh toán hiện ra ngay bên dưới. Sau khi chuyển khoản, bản đối chiếu mở khoá tự động.
Khó thanh toán online? Nhắn Zalo để được mở khoá thủ công.
`; window.scrollTo(0,0); } function val(id){ const e=document.getElementById(id); return e?(e.value||'').trim():''; } function validEmail(e){ return /^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(e); } function formOk(){ return val('pName').length>=2 && validEmail(val('pEmail')) && val('pPhone').replace(/\D/g,'').length>=8; } function onFormFill(){ const btn=document.getElementById('payBtn'); if(!btn) return; const ok=formOk(); btn.disabled = !ok || !!state.order; if(ok && !state.order && !state._creating) createOrder(); // QR hoạt động luôn sau khi điền đủ form } function genOrder(){ const c='ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; let s=''; for(let i=0;i<6;i++) s+=c[Math.floor(Math.random()*c.length)]; return 'AIPCK'+s; } function buildQr(order,amount){ if(!BANK.bin||!BANK.acc) return ''; return `https://img.vietqr.io/image/${BANK.bin}-${BANK.acc}-compact2.png?amount=${amount}&addInfo=${encodeURIComponent(order)}&accountName=${encodeURIComponent(BANK.name||'')}`; } async function createOrder(){ if(!formOk() || state.order || state._creating) return; state._creating=true; const btn=document.getElementById('payBtn'); if(btn){ btn.disabled=true; btn.textContent='Đang tạo mã QR…'; } const payload={ name:val('pName'), email:val('pEmail'), phone:val('pPhone'), employer:(state.employer&&state.employer.name)||'', province:state.prov.name }; let order=null, serverQr='', bank=null, amount=PRICE; try{ const r=await fetch('/api/register',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(payload)}); const j=await r.json(); if(j&&j.order){ order=j.order; serverQr=j.qr||''; bank=(j.bank&&j.bank.acc)?j.bank:null; amount=j.amount||PRICE; } }catch(e){} if(!order) order=genOrder(); // backend chưa cấu hình → vẫn có mã + QR client-side state.order=order; state._creating=false; showPayment({ order, qr: serverQr||buildQr(order,amount), bank: bank||(BANK.acc?BANK:null), amount }); pollPaid(); } function showPayment(j){ const btn=document.getElementById('payBtn'); if(btn) btn.style.display='none'; if(!j.qr){ document.getElementById('payArea').innerHTML=`

Mã đơn của bạn: ${esc(j.order)}

Cổng thanh toán đang được hoàn tất. Vui lòng nhắn Zalo kèm mã đơn này để được mở khoá ngay.
`; return; } const bank=j.bank&&j.bank.acc?`
Ngân hàng${esc(j.bank.label||'')}
Số TK${esc(j.bank.acc)}
Chủ TK${esc(j.bank.name||'')}
Số tiền${(j.amount||0).toLocaleString('vi-VN')}đ
Nội dung CK${esc(j.order)}
`:''; document.getElementById('payArea').innerHTML=`

Quét QR để thanh toán

Chuyển khoản đúng số tiền & nội dung CK. Bản đối chiếu mở khoá tự động sau khi nhận tiền.

QR chuyển khoản${bank}
Đang chờ xác nhận thanh toán…
`; } let pollTimer=null,pollCount=0; function pollPaid(){ clearInterval(pollTimer); pollCount=0; pollTimer=setInterval(async()=>{ pollCount++; if(pollCount>120){ clearInterval(pollTimer); const n=document.getElementById('pollNote'); if(n)n.innerHTML='Chưa nhận được xác nhận. Nếu đã chuyển khoản, nhắn Zalo kèm mã đơn để được mở khoá ngay.'; return; } try{ const r=await fetch('/api/check?order='+encodeURIComponent(state.order)); const j=await r.json(); if(j.status==='paid'){ clearInterval(pollTimer); unlock(); } }catch(e){} },4000); } function unlock(){ state.paid=true; renderResult(); go('result'); sendResultEmail(); } // ---------- misc ---------- function restart(){ clearInterval(pollTimer); state.job=null; state.report=null; state.order=null; state.paid=false; state._creating=false; state._emailed=false; document.getElementById('jNoc').value=''; document.getElementById('jWage').value=''; document.getElementById('jPrev').value=''; document.getElementById('jContract').value=''; resetInput(); go('province'); } renderProvinces();