Skip to content

feat: restructure Wazivo into production-ready resume analysis MVP#2

Merged
SamoTech merged 1 commit intomainfrom
feat/wazivo-mvp-restructure
Mar 7, 2026
Merged

feat: restructure Wazivo into production-ready resume analysis MVP#2
SamoTech merged 1 commit intomainfrom
feat/wazivo-mvp-restructure

Conversation

@SamoTech
Copy link
Owner

@SamoTech SamoTech commented Mar 7, 2026

Summary

  • normalize Wazivo into a clean MVP architecture based on src/app, src/components, and src/lib
  • add Groq-powered resume analysis, ATS rewrite, and cover-letter API routes
  • ship a new polished homepage UI with analysis report components
  • add prompt templates, heuristic fallback analysis, ATS scoring, skill extraction, caching, and anonymous rate limiting
  • update environment configuration and README for production-style setup

Notes

  • analysis results are cached by resume hash
  • Upstash Redis is supported via REST env vars, with in-memory fallback for local development
  • no user accounts are required for the MVP

@vercel
Copy link
Contributor

vercel bot commented Mar 7, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
wazivo Error Error Mar 7, 2026 9:58am

@SamoTech SamoTech merged commit 7742ac6 into main Mar 7, 2026
2 of 9 checks passed
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f1bdaa5074

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Cloud: [/\baws\b/i, /\bazure\b/i, /\bgcp\b/i, /\bgoogle cloud\b/i, /\bvercel\b/i],
DevOps: [/\bdocker\b/i, /\bkubernetes\b/i, /\bterraform\b/i, /\bci\/cd\b/i, /\bgithub actions\b/i],
APIs: [/\brest\b/i, /\bgraphql\b/i, /\bapi\b/i],
Data Analysis: [/\bpandas\b/i, /\bnumpy\b/i, /\bpower bi\b/i, /\btableau\b/i, /\bexcel\b/i],

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P0 Badge Quote object keys that contain spaces

SKILL_PATTERNS uses Data Analysis as an unquoted object key, which is invalid TypeScript syntax and stops compilation (TS1005). This makes the app fail to build before any runtime behavior can be exercised, so the key needs to be quoted (or renamed) to keep the project buildable.

Useful? React with 👍 / 👎.


export const runtime = 'nodejs';
export const maxDuration = 60;
import { analyzeResume, type ResumeAnalysis } from '../../../../lib/resumeAnalyzer';

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P0 Badge Correct API imports to resolve src/lib modules

These API routes import from ../../../../lib/*, which resolves to a top-level lib directory outside src from src/app/api/*/route.ts; that directory does not exist in this repo, so Next.js cannot resolve these modules and the build fails with module-not-found errors. The same incorrect depth appears in src/app/api/rewrite/route.ts and src/app/api/cover-letter/route.ts.

Useful? React with 👍 / 👎.

const key = `ratelimit:${scope}:${identifier}:${bucket}`;

try {
const count = Number((await redisCommand(['INCR', key])) ?? 0);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Use memory fallback when Redis is not configured

When Upstash env vars are absent, redisCommand returns null, so rateLimit computes count as 0 and returns early from the Redis branch; this bypasses the in-memory fallback and effectively disables rate limiting in exactly the "optional Redis" setup described by this MVP. In this configuration, abuse protection never engages because every request is treated as allowed.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant