Salvar links não te torna mais inteligente. Aprender com eles sim.
Problema
Eueraessapessoacomcentenasdelinkssalvosquenuncaiaabrirdenovo.Eusalvavaartigos,vídeos,referências.Masquandoprecisavadealgumacoisa,ficavaprocurandopelotítuloquemallembrava,naspastasquemalorganizava.Aferramentaqueeuusavaorganizavaoqueeutinhasalvo.Oproblemaéqueelanãomeajudavaaaprendercomissonemaacessaroqueeuprecisavaquandoprecisava.
EntãoeuconstruíoCoisas.spaceemtornodeumapergunta:eseoconteúdoquevocêsalvoupudesseaparecerquandoagenteprecisa,semprecisarlembrarqueexistia?
A stack de IA
Acategorizaçãorodacomgpt-4o-miniviaOpenRouteratemperature0.2.Euchegueinessatemperaturabaixatestando:temperaturamaiorintroduziacategorydrift,omesmolinkcategorizadodeformasdiferentesemsavesrepetidos.0.2dáaconsistênciaqueumafeaturedecategorizaçãoprecisaterpraousuárioconfiar.
Acamadaderecuperaçãoconversacionalusaacategoriacomosinaldecontextoescopado,umaabordagemRAG-likerápidaosuficienteparaUXconsumereprecisaosuficienteparaserútil.Eutesteicomembeddingcompletodedocumentoeficoumaislentodoqueospadrõesreaisdequeryjustificavam.
Quandoocontextoéraso,arecuperaçãofazfallbackportrêsníveis:conteúdovisíveldacategoriaativa(últimos3dias),depoistodooconteúdodessacategoria,depoistodooconteúdoindependentedecategoria.Aestratégiamantémasrespostasfundamentadasmesmopraquemacaboudecomeçar.
OalgoritmodematchingdoFocoTimeusaIAsemântica,então"AprenderReact"trazlinkssobrehooks,componentseJSX,inclusivelinksquenuncamencionamReactnotítulo.ResultadossãocacheadosemKVcominvalidaçãoporhash:quandoumnovolinkésalvo,ohashmuda,ocacheinvalidaeapróximarequisiçãodematchingregenera.
As decisões de design
Streamingfoiinegociávelpramim.Qualquercategorizaçãoqueexigisseesperaquebrariaohábitodesalvar.Oprodutosófuncionasesalvarparecerinstantâneo.Olinkapareceimediatamentenogridcomumestadopending,acategorizaçãocompletaembackground,ostatusprogridedependingparaprocessedpararead.
Euescopeiainterfaceconversacionalporcategoriadepropósito.Chatabertosobretodooconteúdosalvoproduziarespostasirrelevantesnostestes,entãoestreitarocontextofoiadecisãoquefezafeaturefuncionar.Quandoousuáriotrocadecategoriacomumchataberto,umavisoinlineaparececomduasopções:manterocontextoatualoure-ancoraraconversananovacategoria.
Ocomando/resumirusaprogressivedisclosurebaseadoemFibonacci:aprimeirachamadaretorna5links.Ousuáriopodepedirmais,easequênciaexpandepara8,13,21,34.Ousuáriovaidescobrindooquetem,noritmoqueprecisar.
O modo de falha
Quandoomodelonãoconseguecategorizarumlinkcomconfiança(páginascompaywall,conteúdoambíguo,URLsquebradas),olinkvaiparaumestadoSemcategoriacomopçãodeoverridemanual.Olinkestásemprelá,sempreacessível.AIAéumacamadaaditivasobreosdados,entãoquandoelafalha,olinkcontinuadisponível.
Acamadadeprovedortemumfallback:seoOpenRouterretornar402(créditosesgotados),osistemaroteiaautomaticamenteparaoOpenAIcomumajaneladeretryde1hora.OstatusdoserviçoérastreadoemKV:provedor,últimoerro,tentativasfalhas,últimotempodesucesso.Ousuárionuncavêumatrocadeprovedor.
Aextraçãodeconteúdousasilentfailure:seaextraçãoexpiraem10segundos,olinkcontinuafuncionandocomseusmetadados.Eupriorizeivelocidadederespostaaqui,porqueumlinknogridjáserveousuário,mesmosemotextocompletoextraído.
Row-levelsecurityéaplicadononíveldobancodedadosenacamadadeaplicação.CadatabeladedadosdousuáriotempolíticasRLSvinculadasaoauth.uid().Nenhumbugdeaplicaçãopodevazarosdadosdeumusuárioparaoutro.
O que vem a seguir
EuqueroadicionarleituraprofundaviaFirecrawl,extraindooconteúdorealdoslinkssalvosalémdosmetadados.EGmailOAuthparapuxarnewslettersethreadsdiretoparaabiblioteca,transformandoacaixadeentradaemumfeeddeaprendizado.Oqueeumaisqueroéacamadadeleitura,porqueéoquevaifazerasrespostasdeIAficaremancoradasnoquevocêdefatoleu,eaíelasficamrealmenteúteis.
leitura anterior
Resense →Resense é um produto que usa IA pra transformar qualquer dado que o time já tem (CSV, PDF, texto, imagem) em Synthetic Users, com RAG e embeddings. Ele também gera insights com pesos de conexão entre causa e efeito. Eu usei IA em todo o processo, da pesquisa aos testes.
