faceGO

Reloj checador con reconocimiento facial. Nadie ficha por nadie, y los rostros nunca salen del teléfono. Sin nube, sin lector caro, sin mensualidad.

faceGO

Qué incluye

Un checador facial que corre en el teléfono que ya tienes. Con su código.

La reforma de 40 horas obliga a llevar registro electrónico de jornada. El
mercado responde con relojes biométricos de pared y con nubes que cobran por
empleado y por mes.

face_go hace lo mismo en un teléfono Android usado: reconoce la cara, guarda
la checada firmada y sincroniza después. Sin comprar hardware y sin renta.

Es un producto en su versión 1.5.0, y el zip trae el fuente completo. No es
una demo. Tampoco es easyRest: es más joven, y en esta página se dice cuánto.


PARA QUIÉN ES

Si programas y vendes software

Tu cliente tiene 40 empleados y una obligación nueva que cumplir. Puedes
cotizarle dos meses de desarrollo… o abrir esto el viernes.

Te llevas 12.130 líneas de Dart que no tienes que escribir, y con ellas las
partes que de verdad duelen: la alineación por ojos antes del embedding, el
clustering de caras desconocidas, la cadena de hashes que sobrevive a las
correcciones, y el pipeline de cámara en Android — que es donde se pierde una
semana entera si no lo has hecho antes.

Todo el código y toda la documentación están en español.

Si tienes una empresa con personal

Un teléfono viejo montado en la pared de la entrada. Nada más. Tu gente se para
enfrente y checa; el que no sea reconocido teclea su número y su PIN, y nadie
se queda sin poder checar
.

Pago único. Los datos biométricos no salen del teléfono.


PARA QUIÉN NO ES

Dicho aquí arriba para que no pierdas el tiempo:

  • Si necesitas que el modelo facial venga incluido y listo. No viene: hay que
    conseguirlo aparte. Es lo primero de la sección "lo que no hace".
  • Si necesitas servidor central y multi-sucursal funcionando hoy.
  • Si trabajas solo con iPhone.
  • Si buscas nómina, incidencias, vacaciones o expediente STPS.
  • Si esperas un producto con años de rodaje. Este tiene semanas.

LAS TRES REGLAS

face_go no se diseñó por lista de funciones. Se diseñó sobre tres reglas, y esas
reglas explican cada decisión del código:

1 · La app nunca bloquea un registro.
Si no reconoce a alguien, lo registra igual y lo marca como pendiente. La
persona ya checó; ponerle nombre es trabajo del administrador, después y sin
prisa. Un checador que impide checar es un checador que se desinstala.

2 · La cadena de hashes no se reescribe nunca.
Cada registro guarda un retrato inmutable de cómo ocurrió el evento, y la cadena
se calcula sobre eso. Cuando después se corrige —y se corrige a diario, porque
así funciona el enrolamiento diferido—, la corrección se anota aparte, con
motivo y hora. El inspector ve qué pasó y qué se corrigió: eso es mejor
evidencia que un registro que finge no haber sido nunca ambiguo.

3 · Ninguna compuerta rechaza en silencio.
Cuando un frame se descarta, la pantalla dice por qué —"acércate un poco",
"mira de frente", "abre los ojos"— y el panel de estado lleva la cuenta de qué
compuerta descarta más. Calibrar deja de ser adivinar.

El peor fallo de un sistema biométrico no es el que no reconoce a nadie. Es el
que reconoce a la persona equivocada y nadie lo cuestiona hasta que hay una
demanda laboral de por medio.


QUÉ HACE

En la entrada

  • Kiosco a pantalla completa, sin botones en el flujo normal: te paras enfrente
    y checa.
  • Acumula 5 frames del mismo rostro antes de decidir, y promedia. Cuesta un
    segundo y es la diferencia entre un sistema errático y uno confiable.
  • Prueba de vida con retos aleatorios (parpadea, gira la cabeza), desactivable.
  • Entrada o salida se infiere: no se le pregunta a nadie.
  • Anti doble-checada configurable, para el error más común de todos los
    checadores.
  • Checar con PIN siempre a la vista, para quien no tiene rostro enrolado, no
    dio consentimiento biométrico o simplemente no está siendo reconocido hoy.

Los dos caminos para poblar el sistema

  • Alta asistida: datos, PIN, consentimiento firmado en pantalla y 5 tomas
    guiadas. Menos de un minuto por persona.
  • Enrolamiento diferido: instalas con cero personas dadas de alta y dejas
    que todos chequen. Cada cara desconocida forma un grupo por sí sola. Días
    después le pones nombre a los grupos con dos toques, y todo el histórico se
    reasigna hacia atrás
    .

El enrolamiento diferido es el argumento de venta, no una función más.
Convierte un ritual coordinado de 40 minutos con toda la plantilla parada en
media hora de trabajo asíncrono del administrador.

Para el administrador

  • Pendientes de identificar: galería de caras sin nombre, resueltas con dos
    toques.
  • Reportes por día y por rango, con la evidencia fotográfica de cada checada.
  • Verificación de la cadena de integridad con un botón: dice si algún
    registro fue alterado y cuál es el primero que no cuadra.
  • Alta y baja de empleados, con reactivación si la baja fue un error.
  • Ajustes de umbrales y de cada compuerta de captura, con deslizantes y sin
    recompilar.
  • Prueba de reconocimiento: enseña el recorte exacto que recibe el modelo y
    el parecido contra cada empleado en vivo, sin registrar nada.

Debajo, donde no se ve

  • Aprendizaje progresivo: cuando alguien se identifica con PIN tras no ser
    reconocido, el sistema aprende de ese error concreto.
  • Margen entre el mejor y el segundo mejor empleado —no el segundo mejor
    template—, que es lo que protege del caso "dos hermanos en la misma empresa".
  • Corrección de reloj contra el servidor, con la confiabilidad de la hora
    marcada en cada registro.
  • Ubicación y detección de GPS falso: se anota, nunca bloquea.

QUÉ TE LLEVAS EN EL ZIP

| | |
|---|---|
| La aplicación | 48 archivos Dart · 11.147 líneas |
| Las pruebas | 7 archivos · 983 líneas · 42 pruebas automatizadas |
| Las pantallas | 10 pantallas completas |
| Los servicios | 12 servicios de dominio · 2.035 líneas |
| La base de datos | esquema SQLite de 7 tablas |
| La documentación | README técnico en español |

12.130 líneas de Dart en total. Ponle tú el número de semanas que te tomaría
escribirlas — y súmale las que se van en hacer funcionar la cámara de Android
con ML Kit, que no se ven en el conteo.


TRES COSAS QUE NO ESPERAS ENCONTRAR

1 · Un banco de pruebas del reconocimiento dentro de la propia app.
Panel → Prueba de reconocimiento. Enseña el recorte de 112×112 que recibe el
modelo
y el porcentaje de parecido contra cada persona enrolada, en vivo. Si
la cara sale torcida o descentrada, el problema no es el umbral y lo ves en dos
segundos. Ninguna app de este tipo te deja mirar ahí dentro.

2 · El kiosco te dice por qué está tardando.
El panel de estado lleva la cuenta de qué compuerta descarta más frames y
cuántos milisegundos cuesta cada uno. "Tarda mucho en reconocerme" deja de ser
una queja y pasa a ser un número con nombre.

3 · Las compuertas se calibran con deslizantes, no recompilando.
Giro, inclinación, ladeo, ojos, tamaño mínimo y nitidez. Cada deslizante dice
con qué mensaje rechaza, para cruzarlo con el diagnóstico. Se guardan en la base
y sobreviven al reinicio.


LO QUE NO HACE

Ésta es la sección que las otras fichas no tienen. Léela entera: si algo de aquí
es imprescindible para ti, no compres.

  • El modelo facial no viene incluido. Hay que conseguir un MobileFaceNet
    .tflite (entrada 112×112, salida de 128, 192 o 512 dimensiones) y colocarlo
    en assets/models/ o copiarlo al teléfono. No se incluye porque no puedo
    redistribuir un modelo cuya licencia no controlo
    , y prefiero decírtelo aquí
    que dejar que lo descubras después de pagar. Sin él la app arranca igual, en
    modo PIN, que ya cumple el requisito de registro electrónico.
  • Solo se ha probado en Android. El código de iOS está escrito y las
    dependencias lo soportan, pero no se ha ejecutado en un iPhone. Si lo
    necesitas en iOS, cuenta con trabajo de integración.
  • No hay servidor. El cliente de sincronización está hecho, con su cola y su
    reintento, y el contrato JSON está definido en el código. El endpoint que
    recibe no existe
    : lo escribes tú. Hasta entonces, cada teléfono es una isla.
  • Los umbrales no están calibrados con muestra real. Los valores que trae son
    un punto de partida. La calibración de verdad es 30 personas y 300 checadas en
    el lugar real; el procedimiento está documentado, pero hacerlo te toca a ti.
  • Si se pierde el teléfono, se pierden los templates. No hay respaldo de
    biometría al servidor todavía. Es el punto donde un cliente decide si te odia
    o te ama, y hoy está sin resolver.
  • No es multi-sucursal. Un teléfono, un centro de trabajo.
  • No hace nómina, ni incidencias, ni vacaciones, ni expediente STPS.
  • No exporta a PDF ni a Excel. Los reportes se ven en pantalla.
  • No hay historial de versiones etiquetadas que enseñarte. El proyecto no
    está bajo control de versiones público. Lo que hay es el código de hoy.
  • El reconocimiento tarda entre uno y tres segundos en un teléfono de gama
    media-baja. No es instantáneo como el desbloqueo facial de tu móvil, que corre
    sobre silicio dedicado.

REQUISITOS

  • Android 7.0 (API 24) o superior. Probado en un Redmi 9 — MediaTek Helio
    G80, gama baja de 2020.
  • Cámara frontal. Cualquiera sirve; el pipeline trabaja a 720×480.
  • Un modelo mobilefacenet.tflite que consigas por tu cuenta.
  • Para tocar el código: Flutter 3.35 o superior y cualquier editor.

Sobre la velocidad, porque es donde se ajustan las expectativas. En ese
Redmi 9, procesar un frame cuesta entre 340 y 380 milisegundos, y una
checada necesita cinco frames buenos. En un teléfono decente baja bastante. La
app trae el cronómetro incorporado para que lo midas en el tuyo antes de
prometerle nada a un cliente.

Sobre la precisión. En pruebas del autor con un rostro enrolado, el parecido
contra sus propias capturas queda entre 90 % y 96 %, con el umbral de
aceptación en 62 %. Es una muestra de una persona en condiciones controladas:
sirve para saber que la cadena funciona, no como estadística de campo.

Los datos viven en una base SQLite dentro del teléfono. Los vectores
faciales se guardan como números, no como fotos: del enrolamiento no se
almacena ninguna imagen
.


POR QUÉ CUESTA LO QUE CUESTA

Un checador biométrico de pared cuesta entre 3.000 y 8.000 pesos por punto, más
el software. Las nubes de asistencia cobran por empleado y por mes, para
siempre.

Esto es pago único, con el código, y corre en un teléfono que en muchas
oficinas está en un cajón.

[PRECIO — completar antes de publicar.] La ficha de easyRest justifica sus
37 dólares contra el coste mensual de un TPV en la nube. Aquí el argumento
equivalente es el coste por punto de checada. El número lo pones tú; lo que
esta página no va a hacer es inventarlo.


NO HAY TESTIMONIOS, Y NO VOY A INVENTARLOS

face_go se publica ahora. No tengo clientes que enseñarte y no pienso fabricar
reseñas.

Y voy más lejos, porque este producto es más joven que easyRest y sería fácil
disimularlo: lo único que puedo enseñarte es el código, las 42 pruebas
automatizadas y esta lista de limitaciones
. No hay diez versiones etiquetadas
detrás ni cuarenta mil palabras de documentación. Hay un sistema que funciona,
recién terminado, con sus costuras a la vista.

Un testimonio se escribe en un minuto. Doce mil líneas y un pipeline de visión
que de verdad reconoce caras, no.


CÓMO SE ENTREGA, Y QUÉ LICENCIA LLEVA

Un zip con el código fuente completo de la aplicación Flutter, el proyecto
Android, las pruebas y la documentación. Versión 1.5.0. Acceso de por vida a las
actualizaciones que se publiquen.

Lo que la licencia te deja hacer

  • Instalarlo en todos los centros de trabajo de clientes que quieras. Sin
    límite de instalaciones, sin pagar más y sin porcentaje.
  • Ponerle tu marca: nombre, logotipo, colores e icono, y venderlo como
    producto tuyo.
  • Modificar el código todo lo que necesites.

Lo que no

  • Redistribuir el código fuente: ni publicarlo, ni revenderlo, ni incluirlo
    en otro producto que se venda como código. A tus clientes les entregas la app
    funcionando, no el fuente.
  • Ceder o revender la licencia.

El texto completo va dentro del zip como LICENCIA.md, en español llano.

Las licencias de terceros están revisadas una por una y listadas. Casi todo
es MIT, BSD o Apache 2.0, pero ML Kit no: el detector de rostros de Google
se rige por los términos de servicio de Google, no por una licencia de código
abierto, y eso impone condiciones sobre lo que entregas. Va explicado en la
licencia.

Y el modelo facial es tu responsabilidad legal, no la mía. No se incluye
ninguno. El .tflite que elijas trae su propia licencia, y comprobar que puedes
usarlo comercialmente te toca a ti. Es justo el detalle que después da
problemas y que nadie te dice antes de cobrarte.

Una advertencia, porque este programa trata datos biométricos. Un rostro es
un dato personal sensible. En México lo regula la LFPDPPP: hace falta aviso de
privacidad y consentimiento expreso, y por eso la app trae la firma de
consentimiento incorporada. Pero cumplir la ley es del patrón que usa el
sistema y de quien se lo instala
, nunca del autor. Se entrega tal como está,
sin garantía, y la responsabilidad máxima es el importe que pagaste.

VALORACIONES

4.0
1 valoración
5
0
4
1
3
0
2
0
1
0
David Zaens COMPRA VERIFICADA hace 2 semanas